Glue Points and Connectors
From Apache OpenOffice Wiki
< Documentation | DevGuide
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
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). |