/** @generated */
 protected Command getConnectionCompleteCommand(CreateConnectionRequest request) {
   if (request instanceof CreateConnectionRequestEx) {
     if (request.getStartCommand() == null || !request.getStartCommand().canExecute()) {
       return UnexecutableCommand.INSTANCE;
     }
     CreateConnectionRequestEx requestEx = (CreateConnectionRequestEx) request;
     if (!DiagramEditPart.MODEL_ID.equals(requestEx.getModelID())) {
       return null;
     }
     int[] visualIds = requestEx.getVisualIds();
     CompoundCommand result = new CompoundCommand();
     for (int i = 0; i < visualIds.length; i++) {
       int nextVisualId = visualIds[i];
       switch (nextVisualId) {
         case TransitionEditPart.VISUAL_ID:
           result.appendIfCanExecute(new CreateTransition4001Command(requestEx));
           break;
       }
     }
     if (result.getCommandList().size() != 1 || !result.canExecute()) {
       // Cannot create several connections at once.
       return UnexecutableCommand.INSTANCE;
     }
     return request
         .getStartCommand()
         .chain(
             new WrappingCommand(
                 TransactionUtil.getEditingDomain(
                     ((Node) getHost().getModel()).getDiagram().getElement()),
                 result));
   }
   return null;
 }
 @Override
 protected Command getConnectionCreateCommand(CreateConnectionRequest request) {
   DiagramNodeModel source = (DiagramNodeModel) getHost().getModel();
   Object def = request.getNewObjectType();
   CreateConnectionCommand cmd = new CreateConnectionCommand(source, (IDiagramConnectionDef) def);
   request.setStartCommand(cmd);
   return cmd;
 }
예제 #3
0
 @Override
 protected Command getConnectionCreateCommand(CreateConnectionRequest request) {
   int style = ((Integer) request.getNewObjectType()).intValue();
   Activity source = getActivity();
   NextConnectionCreateCommand cmd =
       new NextConnectionCreateCommand(source.getDiagram().getTextEditor(), style);
   cmd.setSource(source);
   request.setStartCommand(cmd);
   return cmd;
 }
예제 #4
0
	protected Command getConnectionCreateCommand(CreateConnectionRequest request) {
		if (getHost().getModel() instanceof LFWBasicElementObj) {
			LFWBasicElementObj sour = (LFWBasicElementObj) getHost().getModel();
			Class conCls = (Class) request.getNewObject();
			Command command = new MenuRelationConnectionCommand(sour, conCls);
			request.setStartCommand(command);
			return command;
		}
		return null;
	}
 private void identifySourceFigure(Request req) {
   if (req instanceof CreateConnectionRequest) {
     CreateConnectionRequest r = (CreateConnectionRequest) req;
     if (r.getSourceEditPart() instanceof AbstractGraphicalEditPart) {
       AbstractGraphicalEditPart ep = (AbstractGraphicalEditPart) r.getSourceEditPart();
       rec = ep.getFigure().getBounds();
     }
   } else {
     rec = null;
   }
 }
 @SuppressWarnings("unchecked") // $NON-NLS-1$
 protected Command getConnectionCreateCommand(CreateConnectionRequest request) {
   Node source = (Node) getHost().getModel();
   if (source.isReadOnly()) {
     return null;
   }
   String style = (String) request.getNewObjectType();
   ConnectionCreateCommand cmd =
       new ConnectionCreateCommand(source, style, (List<Object>) request.getNewObject());
   request.setStartCommand(cmd);
   return cmd;
 }
 /** @generated */
 protected Command getConnectionCreateCommand(CreateConnectionRequest request) {
   if (request instanceof CreateConnectionRequestEx) {
     CreateConnectionRequestEx requestEx = (CreateConnectionRequestEx) request;
     if (!DiagramEditPart.MODEL_ID.equals(requestEx.getModelID())) {
       return null;
     }
     int[] visualIds = requestEx.getVisualIds();
     CompoundCommand result = new CompoundCommand();
     for (int i = 0; i < visualIds.length; i++) {
       int nextVisualId = visualIds[i];
       switch (nextVisualId) {
         case TransitionEditPart.VISUAL_ID:
           result.appendIfCanExecute(new CreateTransition4001StartCommand(requestEx));
           break;
       }
     }
     if (!result.canExecute()) {
       return null;
     }
     Command wrappedResult =
         new WrappingCommand(
             TransactionUtil.getEditingDomain(
                 ((Node) getHost().getModel()).getDiagram().getElement()),
             result);
     request.setStartCommand(wrappedResult);
     return wrappedResult;
   }
   return null;
 }
예제 #8
0
 @Override
 protected Command getConnectionCreateCommand(CreateConnectionRequest request) {
   WorkflowNode source = (WorkflowNode) getHost().getModel();
   ConnectionDrawCommand cmd =
       new ConnectionDrawCommand((WorkflowDescription) getParent().getModel(), source);
   request.setStartCommand(cmd);
   return cmd;
 }
  /**
   * @see
   *     org.eclipse.gef.editpolicies.GraphicalNodeEditPolicy#getConnectionCreateCommand(org.eclipse.gef.requests.CreateConnectionRequest)
   */
  protected Command getConnectionCreateCommand(CreateConnectionRequest request) {

    // check meta node policy
    Object m = getHost().getModel();
    if (m instanceof MetaNode) {
      String edgeType = ((MetaNode) m).getEdgeType();
      if (edgeType != null && !edgeType.equals(request.getNewObjectType())) {
        return null;
      }
    }

    ConnectionCommand command = new ConnectionCommand();
    command.setSourceNode((INode) getHost().getModel());
    command.setType((String) request.getNewObjectType());
    request.setStartCommand(command);
    return command;
  }
예제 #10
0
	protected Command getConnectionCompleteCommand(
			CreateConnectionRequest request) {
		MenuRelationConnectionCommand comd = (MenuRelationConnectionCommand) request.getStartCommand();

		LFWBasicElementObj target = (LFWBasicElementObj) getHost().getModel();
		comd.setTarget(target);
		return comd;
	}
  /**
   * @see
   *     org.eclipse.gef.editpolicies.GraphicalNodeEditPolicy#getConnectionCompleteCommand(org.eclipse.gef.requests.CreateConnectionRequest)
   */
  protected Command getConnectionCompleteCommand(CreateConnectionRequest request) {
    ConnectionCommand command = (ConnectionCommand) request.getStartCommand();

    // dont allow connection if there is already a connection between source and target
    // and of the same type.
    EdgeContainer ec = ((INode) getHost().getModel()).getRoot().getEdgeContainer();
    if (ec.containsEdge(command.getSourceNode(), (INode) getHost().getModel(), command.getType())) {
      return null;
    }

    // dont allow connection if source node is an ancestor of target
    AbstractAsset parent = (AbstractAsset) getHost().getModel();
    while (parent != null) {
      parent = parent.getParent();
      if (parent == command.getSourceNode()) {
        return null;
      }
    }

    // check meta node policy
    Object m = getHost().getModel();
    if (m instanceof MetaNode) {
      String edgeType = ((MetaNode) m).getEdgeType();
      if (edgeType != null && !edgeType.equals(command.getType())) {
        return null;
      }
    }

    // dont allow self-connection
    if (command.getSourceNode() == getHost().getModel()) {
      return null;
    }

    // dont allow connection if target node is an ancestor of source
    parent = (AbstractAsset) command.getSourceNode();
    while (parent != null) {
      parent = parent.getParent();
      if (parent == (AbstractAsset) getHost().getModel()) {
        return null;
      }
    }

    command.setTargetNode((INode) getHost().getModel());

    return command;
  }
예제 #12
0
 @Override
 protected Command getConnectionCompleteCommand(CreateConnectionRequest request) {
   ConnectionDrawCommand cmd = (ConnectionDrawCommand) request.getStartCommand();
   cmd.setTarget((WorkflowNode) getHost().getModel());
   return cmd;
 }
예제 #13
0
 @Override
 public void execute() {
   // configure the request
   EditPart source = request.getSourceEditPart();
   EditPart target = request.getTargetEditPart();
   PointList list = feedback.getPoints();
   DiagramEditPart diagramEditPart = null;
   if (source.getParent() instanceof DiagramEditPart) {
     diagramEditPart = (DiagramEditPart) source.getParent();
   } else if (source instanceof DiagramEditPart) {
     diagramEditPart = (DiagramEditPart) source;
   } else {
     if (source.getParent().getParent() instanceof DiagramEditPart) {
       diagramEditPart = (DiagramEditPart) source.getParent().getParent();
     }
   }
   if (diagramEditPart == null) {
     return;
   }
   if (!(source instanceof DiagramEditPart || target instanceof DiagramEditPart)) {
     // one must be whitespace, we make it the target
     request.setTargetEditPart(diagramEditPart);
     // additionally we must cut the drawn connection
     // in half to share room with the element that will
     // be auto-created
     PointList newList = new PointList();
     newList.addPoint(list.getFirstPoint());
     if (list.size() == 4) {
       // rectilinear routing will have a three points
       newList.addPoint(list.getPoint(1));
     }
     newList.addPoint(list.getMidpoint());
     feedback.setPoints(newList);
   }
   // create the active tool's element first
   CreateConnectionCommand command = new CreateConnectionCommand(request, feedback);
   command.execute();
   Connector_c newConnector = command.result;
   if (newConnector == null) {
     return;
   }
   // we need to now refresh the diagram to get the new edit part
   source.refresh();
   source.getParent().refresh();
   GraphicalEditPart newPart =
       (GraphicalEditPart) source.getViewer().getEditPartRegistry().get(newConnector);
   // transfer the feedback connection points to the newly created
   // edit part
   ((Connection) newPart.getFigure()).setPoints(feedback.getPoints().getCopy());
   // now adjust the request for the new element to be created for each
   // terminal specification that requires auto-creation
   createElementForTerminalSpec(
       autoStartSpec,
       ((NonRootModelElement) diagramEditPart.getModel()).getModelRoot(),
       list,
       newPart,
       target,
       diagramEditPart);
   createElementForTerminalSpec(
       autoEndSpec,
       ((NonRootModelElement) diagramEditPart.getModel()).getModelRoot(),
       list,
       newPart,
       target,
       diagramEditPart);
 }
예제 #14
0
  private void createElementForTerminalSpec(
      TerminalSpecification_c autoCreationSpec,
      ModelRoot modelRoot,
      PointList line,
      EditPart newPart,
      EditPart targetPart,
      final DiagramEditPart diagramEditPart) {
    ElementSpecification_c specification =
        ElementSpecification_c.getOneGD_ESOnR209(autoCreationSpec);
    if (specification != null && request instanceof GraphicsConnectionCreateRequest) {
      // deactivate the current tool
      ModelTool_c activeTool =
          ModelTool_c.ModelToolInstance(
              modelRoot,
              new ClassQueryInterface_c() {

                @Override
                public boolean evaluate(Object candidate) {
                  return ((ModelTool_c) candidate).getActive();
                }
              });
      activeTool.setActive(false);
      // find the new tool and activate it
      ModelTool_c newTool =
          ModelTool_c.getOneCT_MTLOnR103(
              specification,
              new ClassQueryInterface_c() {

                @Override
                public boolean evaluate(Object candidate) {
                  ModelTool_c tool = (ModelTool_c) candidate;
                  return Model_c.getOneGD_MDOnR100(tool) == diagramEditPart.getModel();
                }
              });
      newTool.setActive(true);
      // create the new element
      if (specification.getSymboltype().equals("connector")) { // $NON-NLS-1$
        // creating a connector
        // we want to create the new connector from the
        // midpoint of the drawn line to the end of the
        // drawn line
        PointList newLine = new PointList();
        newLine.addPoint(line.getLastPoint());
        if (line.size() == 4) {
          // rectilinear routing will have a three points
          newLine.addPoint(line.getPoint(2));
        }
        newLine.addPoint(line.getMidpoint());
        feedback.setPoints(newLine);
        // we also need to adjust the request's source and
        // target edit part, we swap the original target as the
        // source as if the new connection was drawn from
        // the original destination element
        request.setTargetEditPart(newPart);
        request.setSourceEditPart(targetPart);
        // need to update the location in the request for
        // those connectors that end on whitespace
        request.setLocation(line.getMidpoint());
        // we need to configure the proper tool id in the
        // request
        GraphicsConnectionCreateRequest gRequest = (GraphicsConnectionCreateRequest) request;
        gRequest.setToolId(newTool.getTool_id());
        CreateConnectionCommand command = new CreateConnectionCommand(request, feedback);
        command.disableCropping();
        command.execute();
        // reset the active tool states
        newTool.setActive(false);
        activeTool.setActive(true);
      } else if (specification.getSymboltype().equals("shape")) { // $NON-NLS-1$
        // TODO: support shape auto creation
      }
    }
    // otherwise this is not an auto create specification
  }
예제 #15
0
 public ConnectionAnchor getTargetConnectionAnchor(Request request) {
   CreateConnectionRequest r = (CreateConnectionRequest) request;
   if (r.getNewObjectType().equals(NoteConnectionEditPart.NOTE_CONNECTION)
       || r.getNewObjectType() == Relationship.class) return getConnectionAnchor();
   return null;
 }
 @Override
 protected Command getConnectionCompleteCommand(CreateConnectionRequest request) {
   CreateConnectionCommand cmd = (CreateConnectionCommand) request.getStartCommand();
   cmd.setTarget((DiagramNodeModel) getHost().getModel());
   return cmd;
 }