private boolean hasMultipleIncommingSequenceFlow(IDiagramElementView view){ IConnectableElement connectable = (IConnectableElement) view; int i = 0; for(IConnector c:connectable.getIncommingConnectors()){ if (c instanceof SequenceFlow){ i++; }else{ return false; } } if (i>1){ return true; } return false; }
private boolean hasMultipleOutgoingSequenceFlow(IDiagramElementView view){ IConnectableElement connectable = (IConnectableElement) view; int i = 0; for(IConnector c:connectable.getOutgoingConnectors()){ if (c instanceof SequenceFlow){ i++; }else{ return false; } } if (i>1){ return true; } return false; }
@Override public IUIPanel getUIPanel() { return connectable.getUIPanel(); }
Point sourceCenterPoint = new Point(source.getAbsoluteLeft()+(source.getWidth()/2),source.getAbsoluteTop()+(source.getHeight()/2)); Point targetCenterPoint = new Point(target.getAbsoluteLeft()+(target.getWidth()/2),target.getAbsoluteTop()+(target.getHeight()/2)); Point sourceIntersectionPoint = Util.getInstance().getClosestIntersectionPointForRectangle(sourceCenterPoint, targetCenterPoint, source.getAbsoluteLeft(), source.getAbsoluteTop(), (int)source.getWidth(), (int)source.getHeight()); Point targetIntersectionPoint = Util.getInstance().getClosestIntersectionPointForRectangle(targetCenterPoint, sourceCenterPoint, target.getAbsoluteLeft(), target.getAbsoluteTop(), (int)target.getWidth(), (int)target.getHeight()); for(IMagnet m :source.getMagnets()){ for(IMagnet m : target.getMagnets()){
for(IMagnet m:connectable.getMagnets()){ IConnectableElement connectable = (IConnectableElement) uiElement; for(IConnector incomingC:connectable.getIncommingConnectors()){ for(IConnector outgoingC:connectable.getOutgoingConnectors()){ if (connector.getSource()!=null) connector.getSource().getOutgoingConnectors().remove(connector); if (connector.getTarget()!=null) connector.getTarget().getIncommingConnectors().remove(connector);
throw new IllegalStateException("Couldn't find a closest magnet for source:"+source.getId()); throw new IllegalStateException("Couldn't find a closest magnet for target:"+target.getId()); source.addOutgoingConnector(this); this.setSource(source); target.addIncommingConnector(this); this.setTarget(target); source.refreshMagnets(); target.refreshMagnets();
if (connectable.getIncommingConnectors().contains(cp.getConnector())){ connectable.getIncommingConnectors().remove(cp.getConnector()); }else if (connectable.getOutgoingConnectors().contains(cp.getConnector())){ connectable.getOutgoingConnectors().remove(cp.getConnector());
@Override public void attachDefaultHandlers() { if (connectableElement.getAcceptedTypes()!=null){ connectableElement.getAcceptedTypes().add(IConnectorEnd.class); connectableElement.getAcceptedTypes().add(IConnectorStart.class); }else{ throw new IllegalStateException("Accepted types is null, please initialize list in "+connectableElement); this.connectableElement.addDropHandler(new DropHandler() {
public void onConnection(IConnectionEvent event) { String sourceId = "null"; String targetId = "null"; if (event.getConnectionSource()!=null) sourceId = event.getConnectionSource().getId(); if (event.getConnectionTarget()!=null) targetId = event.getConnectionTarget().getId(); // System.out.println("Connector:"+this.getId()+" have been connected source id:"+sourceId+" target id:"+targetId); // // if (event.getConnectionSource()!=null){ // System.out.println("Source has:"+event.getConnectionSource().getIncommingConnectors().size()+" incomming connectors & "+event.getConnectionSource().getOutgoingConnectors().size()+" outgoing connectors"); // } // // if (event.getConnectionTarget()!=null){ // System.out.println("Target has:"+event.getConnectionTarget().getIncommingConnectors().size()+" incomming connectors & "+event.getConnectionTarget().getOutgoingConnectors().size()+" outgoing connectors"); // } }
@Override public void onDropAccepted(IDropAcceptedEvent event) { if (event.getDraggableElement() instanceof IConnectorPoint){ IConnectorPoint cp = (IConnectorPoint)event.getDraggableElement(); this.addConnectorPoint(cp); cp.setConnectedToMagnet(this); //add connector to incoming or outgoing //outgoing if (cp instanceof IConnectorStart){ getConnectableElement().addOutgoingConnector(cp.getConnector()); cp.getConnector().setSource(connectable); }else if (cp instanceof IConnectorEnd){ getConnectableElement().addIncommingConnector(cp.getConnector()); cp.getConnector().setTarget(connectable); } } }
int connectebleMiddleX = (int) (point.getConnectedToMagnet().getConnectableElement().getWidth()/2)+point.getConnectedToMagnet().getConnectableElement().getAbsoluteLeft(); int connectableMiddleY = (int) (point.getConnectedToMagnet().getConnectableElement().getHeight()/2)+point.getConnectedToMagnet().getConnectableElement().getAbsoluteTop(); p1, p2, point.getConnectedToMagnet().getConnectableElement().getAbsoluteLeft(), point.getConnectedToMagnet().getConnectableElement().getAbsoluteTop(), (int)point.getConnectedToMagnet().getConnectableElement().getWidth(), (int)point.getConnectedToMagnet().getConnectableElement().getHeight());
for(IMagnet m:connectableElement.getMagnets()){ connectableElement.getOutgoingConnectors().add(cp.getConnector()); cp.getConnector().setSource(connectableElement); connectableElement.getIncommingConnectors().add(cp.getConnector()); cp.getConnector().setTarget(connectableElement);
@Override public void onStart(IDragStartEvent event) { this.getConnector().refresh(); //if current point is already attached => detach it if (this.getConnectedToMagnet()!=null){ this.getConnectedToMagnet().removeConnectorPoint(this); //remove incoming or outgoing connector this.getConnectedToMagnet().getConnectableElement().getIncommingConnectors().remove(this.getConnector()); this.getConnectedToMagnet().getConnectableElement().getOutgoingConnectors().remove(this.getConnector()); this.setConnectedToMagnet(null); if (this instanceof IConnectorStart){ this.getConnector().setSource(null); }else if (this instanceof IConnectorEnd){ this.getConnector().setTarget(null); } } }
private boolean hasOneOutgoingSequenceFlow(IDiagramElementView view){ IConnectableElement connectable = (IConnectableElement) view; int i = 0; for(IConnector c:connectable.getOutgoingConnectors()){ if (c instanceof SequenceFlow){ i++; }else{ return false; } } if (i==1){ return true; } return false; }
public ContextualMenuHandler(IConnectableElement connectableElement) { this.bpmnelement = connectableElement; this.uipanel = bpmnelement.getUIPanel(); }
private boolean hasOneIncomingSequenceFlow(IDiagramElementView view){ IConnectableElement connectable = (IConnectableElement) view; int i = 0; for(IConnector c:connectable.getIncommingConnectors()){ if (c instanceof SequenceFlow){ i++; }else{ return false; } } if (i==1){ return true; } return false; }
private HashSet<IConnector> getOutgoingSequenceFlows(IConnectableElement connectable){ HashSet<IConnector> result = new HashSet<IConnector>(); for(IConnector connector:connectable.getOutgoingConnectors()){ if (connector instanceof SequenceFlow){ result.add(connector); } } return result; }
@Override public IDDManager getDDManager() { return connectable.getUIPanel().getDDManager(); }
@Override public void onDisplay(DisplayEvent event) { IHasLookupProxy lookupProxy = (IHasLookupProxy) activityEditorModel; IConnectableElement activity = (IConnectableElement) lookupProxy.lookup(CoreBPMNElement.class); ArrayList<ISequenceFlowBean> seqFlows = new ArrayList<ISequenceFlowBean>(); for(IConnector connector:activity.getOutgoingConnectors()){ if (connector instanceof SequenceFlow){ SequenceFlow sf = (SequenceFlow) connector; seqFlows.add((ISequenceFlowBean)sf.getDiagramElement().getModelElement()); } } list.setOptions(seqFlows); }
public Magnet(IConnectableElement connectable) { this.handlerManager = new HandlerManager(this); this.connectable = connectable; this.connectorPoints = new HashSet<IConnectorPoint>(); this.droppableDefaultHandlers = new DroppableDefaultHandlers(this); this.addDropHandler(this); //container is always uipanel this.setContainer(connectable.getUIPanel()); }