/** * Removes the routing info. * * @param connection the connection * @param info the info * @return the string */ public static String removeRoutingInfo(Connection connection, String info) { String newInfo = null; if (info != null && !info.isEmpty()) { newInfo = getRoutingInfo(connection); if (newInfo != null && !newInfo.isEmpty()) { String a[] = newInfo.split(","); // $NON-NLS-1$ String b[] = info.split(","); // $NON-NLS-1$ for (int i = 0; i < a.length; ++i) { for (String sb : b) { if (a[i].startsWith(sb)) { a[i] = null; break; } } } newInfo = ""; // $NON-NLS-1$ for (int i = 0; i < a.length; ++i) { if (a[i] != null && !a[i].isEmpty()) { if (!newInfo.isEmpty()) newInfo += ","; // $NON-NLS-1$ newInfo += a[i]; } } } } if (newInfo == null || newInfo.isEmpty()) peService.removeProperty(connection, ROUTING_INFO); else peService.setPropertyValue(connection, ROUTING_INFO, newInfo); return newInfo; }
/** * Adds the routing info. * * @param connection the connection * @param info the info * @return the string */ public static String addRoutingInfo(Connection connection, String info) { Assert.isTrue(info != null && !info.isEmpty()); String newInfo = getRoutingInfo(connection); if (!newInfo.isEmpty()) newInfo += ","; // $NON-NLS-1$ newInfo += info; peService.setPropertyValue(connection, ROUTING_INFO, newInfo); return newInfo; }
@Override public PictogramElement add(IAddContext context) { IPeService peService = Graphiti.getPeService(); IGaService gaService = Graphiti.getGaService(); BaseElement element = (BaseElement) context.getNewObject(); IAddConnectionContext addConContext = (IAddConnectionContext) context; Connection connection = peService.createFreeFormConnection(getDiagram()); Object importProp = context.getProperty(DIImport.IMPORT_PROPERTY); if (importProp != null && (Boolean) importProp) { connection.setStart(addConContext.getSourceAnchor()); connection.setEnd(addConContext.getTargetAnchor()); } else { ContainerShape sourceContainer = (ContainerShape) addConContext.getSourceAnchor().eContainer(); ContainerShape targetContainer = (ContainerShape) addConContext.getTargetAnchor().eContainer(); Tuple<FixPointAnchor, FixPointAnchor> anchors = AnchorUtil.getSourceAndTargetBoundaryAnchors( sourceContainer, targetContainer, connection); connection.setStart(anchors.getFirst()); connection.setEnd(anchors.getSecond()); } if (ModelUtil.hasName(element)) { ConnectionDecorator labelDecorator = Graphiti.getPeService().createConnectionDecorator(connection, true, 0.5, true); Text text = gaService.createText(labelDecorator, ModelUtil.getName(element)); peService.setPropertyValue( labelDecorator, UpdateBaseElementNameFeature.TEXT_ELEMENT, Boolean.toString(true)); text.setStyle(StyleUtil.getStyleForText(getDiagram())); } Polyline connectionLine = gaService.createPolyline(connection); connectionLine.setForeground(manageColor(StyleUtil.CLASS_FOREGROUND)); decorateConnectionLine(connectionLine); createDIEdge(connection, element); createConnectionDecorators(connection); hook(addConContext, connection, element); return connection; }