Difference between revisions of "Documentation/DevGuide/Drawings/Glue Points and Connectors"

From Apache OpenOffice Wiki
Jump to: navigation, search
(Initial author Sun Microsystems, Inc.)
 
m (1 revision(s))
(No difference)

Revision as of 12:37, 15 February 2008



By default, there are four glue points available that are used within the properties StartGluePointIndex and EndGluePointIndex. If a connector connects to the top, bottom, left or right of a shape, a new glue point is not created. The four directions are declared in the following example.

The first example demonstrates how to create a com.sun.star.drawing.ConnectorShape and connect it to two other shapes using the glue point index property.

 XDrawPagesSupplier xDrawPagesSupplier = (XDrawPagesSupplier)UnoRuntime.queryInterface(
     XDrawPagesSupplier.class, xComponent);
 XDrawPages xDrawPages = xDrawPagesSupplier.getDrawPages();
 XPage xPage = (XdrawPage)UnoRuntime.queryInterface(XDrawPage.class, xDrawPages.getByIndex(0));
 XShapes xShapes = (XShapes) UnoRuntime.queryInterface(XShapes.class, xPage);
 // create two rectangles
 XShape xShape1 = ShapeHelper.createShape(xDrawDoc, new Point(15000, 1000), new Size(5000, 5000),
     "com.sun.star.drawing.RectangleShape");
 XShape xShape2 = ShapeHelper.createShape(xDrawDoc, new Point(2000, 15000), new Size(5000, 5000),
     "com.sun.star.drawing.EllipseShape");
 // and a connector
 XShape xConnector = ShapeHelper.createShape(xDrawDoc,
     new Point(0, 0), new Size(0, 0), "com.sun.star.drawing.ConnectorShape");
 xShapes.add(xShape1);
 xShapes.add(xShape2);
 xShapes.add(xConnector);
 XPropertySet xConnectorPropSet = (XPropertySet)UnoRuntime.queryInterface(
     XPropertySet.class, xConnector);
 // Index value of 0 : the shape is connected at the top
 // Index value of 1 : the shape is connected at the left
 // Index value of 2 : the shape is connected at the bottom
 // Index value of 3 : the shape is connected at the right
 int nStartIndex = 3;
 int nEndIndex = 1;
 // the "StartPosition" or "EndPosition" property needs not to be set
 // if there is a shape to connect
 xConnectorPropSet.setPropertyValue("StartShape", xShape1);
 xConnectorPropSet.setPropertyValue("StartGluePointIndex", new Integer(nStartIndex));
 xConnectorPropSet.setPropertyValue("EndShape", xShape2);
 xConnectorPropSet.setPropertyValue("EndGluePointIndex", new Integer(nEndIndex));

The next example demonstrates the usage of user defined glue points.

 XGluePointsSupplier xGluePointsSupplier;
 XIndexContainer xIndexContainer;
 XIdentifierContainer xIdentifierContainer;
 /* take care to use the structure GluePoint2 and not
    GluePoint, because otherwise the XIdentifierContainer
    won't accept it
  */
 GluePoint2 aGluePoint = new GluePoint2();
 aGluePoint.IsRelative = false;
 aGluePoint.PositionAlignment = Alignment.CENTER;
 aGluePoint.Escape = EscapeDirection.SMART;
 aGluePoint.IsUserDefined = true;
 aGluePoint.Position.X = 0;
 aGluePoint.Position.Y = 0;
 // create and insert a glue point at shape1
 xGluePointsSupplier = (XGluePointsSupplier)UnoRuntime.queryInterface(
     XGluePointsSupplier.class, xShape1);
 xIndexContainer = xGluePointsSupplier.getGluePoints();
 xIdentifierContainer = (XIdentifierContainer)UnoRuntime.queryInterface(
     XIdentifierContainer.class, xIndexContainer);
 int nIndexOfGluePoint1 = xIdentifierContainer.insert(aGluePoint);
 // create and insert a glue point at shape2
 xGluePointsSupplier = (XGluePointsSupplier)
     UnoRuntime.queryInterface(XGluePointsSupplier.class, xShape2);
 xIndexContainer = xGluePointsSupplier.getGluePoints();
 xIdentifierContainer = (XIdentifierContainer)UnoRuntime.queryInterface(
     XIdentifierContainer.class, xIndexContainer);
 int nIndexOfGluePoint2 = xIdentifierContainer.insert(aGluePoint);
 // create and add a connector
 XShape xConnector2 = ShapeHelper.createShape(xDrawDoc,
     new Point(0, 0), new Size(0, 0), "com.sun.star.drawing.ConnectorShape");
 xShapes.add( xConnector2 );
 XPropertySet xConnector2PropSet = (XPropertySet)UnoRuntime.queryInterface(
     XPropertySet.class, xConnector2);
 xConnector2PropSet.setPropertyValue("StartShape", xShape1);
 xConnector2PropSet.setPropertyValue("StartGluePointIndex", new Integer(nIndexOfGluePoint1));
 xConnector2PropSet.setPropertyValue( "EndShape", xShape2 );
 xConnector2PropSet.setPropertyValue( "EndGluePointIndex", new Integer(nIndexOfGluePoint2));
Content on this page is licensed under the Public Documentation License (PDL).
Personal tools