diff options
author | Rüdiger Timm <rt@openoffice.org> | 2003-04-17 08:47:06 +0000 |
---|---|---|
committer | Rüdiger Timm <rt@openoffice.org> | 2003-04-17 08:47:06 +0000 |
commit | e9fba3ea689a6e3d97053a3f29a7b11c88155beb (patch) | |
tree | a6cb477ae34e9f86679800d24bf8e9c8efc454b1 /odk/examples/java/Drawing/SDraw.java | |
parent | a381e8994c4b65b051a212119dfe3a56b8d454ba (diff) |
INTEGRATION: CWS sdk01 (1.1.2); FILE ADDED
2003/03/12 14:27:29 jsc 1.1.2.1: #108153# moved from draw directory
Diffstat (limited to 'odk/examples/java/Drawing/SDraw.java')
-rw-r--r-- | odk/examples/java/Drawing/SDraw.java | 333 |
1 files changed, 333 insertions, 0 deletions
diff --git a/odk/examples/java/Drawing/SDraw.java b/odk/examples/java/Drawing/SDraw.java new file mode 100644 index 000000000000..be1098ebd927 --- /dev/null +++ b/odk/examples/java/Drawing/SDraw.java @@ -0,0 +1,333 @@ +//ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo +// Name : SDraw +//*************************************************************************** +// +// comment: Step 1: connect to the office an get the MSF +// Step 2: open an empty text document +// Step 3: get the drawpage an insert some shapes +// +//*************************************************************************** +// date : Tue August 22 2000 +// +//*************************************************************************** + + +import java.lang.Math; + +// base interface +import com.sun.star.uno.XInterface; + +// access the implementations via names +import com.sun.star.comp.servicemanager.ServiceManager; + + +import com.sun.star.lang.XMultiServiceFactory; +import com.sun.star.lang.XMultiComponentFactory; +import com.sun.star.connection.XConnector; +import com.sun.star.connection.XConnection; + +import com.sun.star.bridge.XUnoUrlResolver; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XInterface; +import com.sun.star.uno.XNamingService; +import com.sun.star.uno.XComponentContext; + + +// staroffice interfaces to provide desktop and componentloader +// and components i.e. spreadsheets, writerdocs etc. +import com.sun.star.frame.XDesktop; +import com.sun.star.frame.XComponentLoader; + +// additional classes required +import com.sun.star.sheet.*; +import com.sun.star.container.*; +import com.sun.star.table.*; +import com.sun.star.beans.*; +import com.sun.star.style.*; +import com.sun.star.lang.*; +import com.sun.star.drawing.*; +import com.sun.star.text.XText; +import com.sun.star.awt.*; + +public class SDraw { + + + public static void main(String args[]) { + + //oooooooooooooooooooooooooooStep 1oooooooooooooooooooooooooooooooooooooooooo + // connect to the office an get the MultiServiceFactory + // this is necessary to create instances of Services + //*************************************************************************** + String sConnectionString = "uno:socket,host=localhost,port=8100;urp;StarOffice.NamingService"; + + // It is possible to use a different connection string, passed as argument + if ( args.length == 1 ) { + sConnectionString = args[0]; + } + + XMultiServiceFactory xMSF = null; + XComponent xDrawDoc = null; + XDrawPage oObj = null; + XShape oShape = null; + XShape oShape1 = null; + XShapes oShapes = null; + + + // create connection(s) and get multiservicefactory + + // create connection(s) and get multiservicefactory + System.out.println( "getting MultiServiceFactory" ); + + try { + xMSF = connect( sConnectionString ); + } catch( Exception Ex ) { + System.out.println( "Couldn't get MSF"+ Ex ); + } + + //*************************************************************************** + + //oooooooooooooooooooooooooooStep 2oooooooooooooooooooooooooooooooooooooooooo + // open an empty document. In this case it's a draw document. + // For this purpose an instance of com.sun.star.frame.Desktop + // is created. It's interface XDesktop provides the XComponentLoader, + // which is used to open the document via loadComponentFromURL + //*************************************************************************** + + //Open document + + //Draw + + System.out.println("Opening an empty Draw document"); + xDrawDoc = openDraw(xMSF); + + + //*************************************************************************** + + //oooooooooooooooooooooooooooStep 3oooooooooooooooooooooooooooooooooooooooooo + // get the drawpage an insert some shapes. + // the documents DrawPageSupplier supplies the DrawPage vi IndexAccess + // To add a shape get the MultiServiceFaktory of the document, create an + // instance of the ShapeType and add it to the Shapes-container + // provided by the drawpage + //*************************************************************************** + + + // get the drawpage of drawing here + try { + System.out.println( "getting Drawpage" ); + XDrawPagesSupplier oDPS = (XDrawPagesSupplier) UnoRuntime.queryInterface( + XDrawPagesSupplier.class,xDrawDoc); + XDrawPages oDPn = oDPS.getDrawPages(); + XIndexAccess oDPi = (XIndexAccess) UnoRuntime.queryInterface(XIndexAccess.class,oDPn); + oObj = (XDrawPage) UnoRuntime.queryInterface(XDrawPage.class, oDPi.getByIndex(0)); + } catch ( Exception e ) { + System.out.println( "Couldn't create document"+ e ); + } + + createSequence(xDrawDoc, oObj); + + //put something on the drawpage + System.out.println( "inserting some Shapes" ); + oShapes = (XShapes) UnoRuntime.queryInterface(XShapes.class,oObj); + oShapes.add(createShape(xDrawDoc,2000,1500,1000,1000,"Line",0)); + oShapes.add(createShape(xDrawDoc,3000,4500,15000,1000,"Ellipse",16711680)); + oShapes.add(createShape(xDrawDoc,5000,3500,7500,5000,"Rectangle",6710932)); + + //*************************************************************************** + + + + System.out.println("done"); + + System.exit(0); + + + } // finish method main + + public static XMultiServiceFactory connect( String connectStr ) + throws com.sun.star.uno.Exception, + com.sun.star.uno.RuntimeException, Exception { + /* Bootstraps a component context with the jurt base components + registered. Component context to be granted to a component for running. + Arbitrary values can be retrieved from the context. */ + XComponentContext xcomponentcontext = + com.sun.star.comp.helper.Bootstrap.createInitialComponentContext( null ); + + /* Gets the service manager instance to be used (or null). This method has + been added for convenience, because the service manager is a often used + object. */ + XMultiComponentFactory xmulticomponentfactory = + xcomponentcontext.getServiceManager(); + + /* Creates an instance of the component UnoUrlResolver which + supports the services specified by the factory. */ + Object objectUrlResolver = + xmulticomponentfactory.createInstanceWithContext( + "com.sun.star.bridge.UnoUrlResolver", xcomponentcontext ); + + // Create a new url resolver + XUnoUrlResolver xurlresolver = ( XUnoUrlResolver ) + UnoRuntime.queryInterface( XUnoUrlResolver.class, + objectUrlResolver ); + + Object rInitialObject = xurlresolver.resolve( connectStr ); + + XNamingService rName = (XNamingService)UnoRuntime.queryInterface( + XNamingService.class, rInitialObject ); + + XMultiServiceFactory xMSF = null; + if( rName != null ) { + System.err.println( "got the remote naming service !" ); + Object rXsmgr = rName.getRegisteredObject("StarOffice.ServiceManager" ); + + xMSF = (XMultiServiceFactory) + UnoRuntime.queryInterface( XMultiServiceFactory.class, rXsmgr ); + } + + return ( xMSF ); + } + + + + public static XComponent openDraw(XMultiServiceFactory oMSF) { + + + //define variables + XInterface oInterface; + XDesktop oDesktop; + XComponentLoader oCLoader; + XComponent aDoc = null; + + try { + + oInterface = (XInterface) oMSF.createInstance( "com.sun.star.frame.Desktop" ); + oDesktop = ( XDesktop ) UnoRuntime.queryInterface( XDesktop.class, oInterface ); + oCLoader = ( XComponentLoader ) UnoRuntime.queryInterface( XComponentLoader.class, oDesktop ); + PropertyValue [] szEmptyArgs = new PropertyValue [0]; + String doc = "private:factory/sdraw"; + aDoc = oCLoader.loadComponentFromURL(doc, "_blank", 0, szEmptyArgs ); + + } // end of try + + catch(Exception e){ + + System.out.println(" Exception " + e); + + } // end of catch + + + return aDoc; + }//end of openDraw + + public static XShape createShape(XComponent oDoc, int height, int width, int x, int y, String kind, int col) { + //possible values for kind are 'Ellipse', 'Line' and 'Rectangle' + Size size = new Size(); + Point position = new Point(); + XShape oShape = null; + + //get MSF + XMultiServiceFactory oDocMSF = (XMultiServiceFactory) UnoRuntime.queryInterface( XMultiServiceFactory.class, oDoc ); + + try{ + Object oInt = oDocMSF.createInstance("com.sun.star.drawing."+kind+"Shape"); + oShape = (XShape)UnoRuntime.queryInterface( XShape.class, oInt ); + size.Height = height; + size.Width = width; + position.X = x; + position.Y = y; + oShape.setSize(size); + oShape.setPosition(position); + + } catch ( Exception e ) { + // Some exception occures.FAILED + System.out.println( "Couldn't create instance "+ e ); + } + + XPropertySet oSPS = (XPropertySet)UnoRuntime.queryInterface( XPropertySet.class, oShape); + + try { + + oSPS.setPropertyValue("FillColor",new Integer(col)); + + + } catch (Exception e) { + + System.out.println("Can't change colors " + e); + + } + + + return oShape; + + } + + public static XShape createSequence(XComponent oDoc, XDrawPage oDP) { + Size size = new Size(); + Point position = new Point(); + XShape oShape = null; + XShapes oShapes = (XShapes) UnoRuntime.queryInterface(XShapes.class,oDP); + int height = 3000; + int width = 3500; + int x = 1900; + int y = 20000; + Object oInt = null; + int r = 40; + int g = 0; + int b = 80; + + //get MSF + XMultiServiceFactory oDocMSF = (XMultiServiceFactory) UnoRuntime.queryInterface( + XMultiServiceFactory.class, oDoc ); + + for (int i=0; i<370; i=i+25) { + try{ + oInt = oDocMSF.createInstance("com.sun.star.drawing.EllipseShape"); + oShape = (XShape)UnoRuntime.queryInterface( XShape.class, oInt ); + size.Height = height; + size.Width = width; + position.X = (x+(i*40)); + position.Y = (new Float(y+(Math.sin((i*Math.PI)/180))*5000)).intValue(); + oShape.setSize(size); + oShape.setPosition(position); + + } catch ( Exception e ) { + // Some exception occures.FAILED + System.out.println( "Couldn't get Shape "+ e ); + } + + b=b+8; + + XPropertySet oSPS = (XPropertySet)UnoRuntime.queryInterface( XPropertySet.class, oShape); + + try { + + oSPS.setPropertyValue("FillColor",new Integer(getCol(r,g,b))); + oSPS.setPropertyValue("Shadow",new Boolean(true)); + + } catch (Exception e) { + + System.out.println("Can't change colors " + e); + + } + oShapes.add(oShape); + } + + XShapeGrouper gr = (XShapeGrouper)UnoRuntime.queryInterface( XShapeGrouper.class, oDP ); + + oShape = gr.group(oShapes); + + + return oShape; + } + + public static int getCol(int r, int g, int b) { + + return r*65536+g*256+b; + + } + + +} // finish class SDraw + + + |