public static void removeMessageFlow( TransactionalEditingDomain editingDomain, Message event, AbstractCatchMessageEvent target, DiagramEditPart dep) { EditPart ep = findEditPart(dep, target); CompositeCommand command = new CompositeCommand("Remove MessageFlows"); for (Object connection : ((AbstractGraphicalEditPart) ep).getTargetConnections()) { if (connection instanceof MessageFlowEditPart) { MessageFlowEditPart connectionPart = (MessageFlowEditPart) connection; MessageFlow flow = (MessageFlow) connectionPart.resolveSemanticElement(); SetCommand c = new SetCommand( editingDomain, flow.getTarget(), ProcessPackage.Literals.ABSTRACT_CATCH_MESSAGE_EVENT__EVENT, null); editingDomain.getCommandStack().execute(c); command.add(new DeleteCommand(editingDomain, connectionPart.getPrimaryView())); DestroyElementRequest req = new DestroyElementRequest( editingDomain, connectionPart.resolveSemanticElement(), false); DestroyElementCommand rmComd = new DestroyElementCommand(req); command.add(rmComd); } } dep.getDiagramEditDomain() .getDiagramCommandStack() .execute(new ICommandProxy(command.reduce())); dep.getDiagramEditDomain().getDiagramCommandStack().flush(); dep.refresh(); }
public static void removeMessageFlow( TransactionalEditingDomain editingDomain, Message event, ThrowMessageEvent source, DiagramEditPart dep) { EditPart ep = findEditPart(dep, source); CompositeCommand command = new CompositeCommand("Remove MessageFlows"); for (Object connection : ((AbstractGraphicalEditPart) ep).getSourceConnections()) { if (connection instanceof MessageFlowEditPart) { MessageFlowEditPart connectionPart = (MessageFlowEditPart) connection; MessageFlow flow = (MessageFlow) connectionPart.resolveSemanticElement(); if (flow.getTarget().getEvent() == null || flow.getTarget().getEvent().equals(event.getName())) { List<Message> events = new ArrayList<Message>(); ModelHelper.findAllEvents(source, events); for (Message ev : events) { if (ev.eContainer().equals(source) && !ev.equals(event)) { if (ev.getTargetProcessExpression() != null && event.getTargetProcessExpression() != null && ev.getTargetProcessExpression() .getContent() .equals(event.getTargetProcessExpression().getContent()) && ev.getTargetElementExpression() != null && ev.getTargetElementExpression().getContent() != null && event.getTargetElementExpression() != null && ev.getTargetElementExpression() .getContent() .equals(event.getTargetElementExpression().getContent())) { SetCommand setCommand = new SetCommand( editingDomain, ev, ProcessPackage.Literals.MESSAGE__TARGET_PROCESS_EXPRESSION, null); editingDomain.getCommandStack().execute(setCommand); setCommand = new SetCommand( editingDomain, ev, ProcessPackage.Literals.MESSAGE__TARGET_ELEMENT_EXPRESSION, null); editingDomain.getCommandStack().execute(setCommand); } } } SetCommand c = new SetCommand( editingDomain, flow.getTarget(), ProcessPackage.Literals.ABSTRACT_CATCH_MESSAGE_EVENT__EVENT, null); editingDomain.getCommandStack().execute(c); command.add(new DeleteCommand(editingDomain, connectionPart.getPrimaryView())); DestroyElementRequest req = new DestroyElementRequest( editingDomain, connectionPart.resolveSemanticElement(), false); DestroyElementCommand rmComd = new DestroyElementCommand(req); command.add(rmComd); } } } dep.getDiagramEditDomain() .getDiagramCommandStack() .execute(new ICommandProxy(command.reduce())); dep.getDiagramEditDomain().getDiagramCommandStack().flush(); dep.refresh(); }