public Command getCreateLinkCommand(View source, View target, GenCommonBase linkType) {
      IElementType metamodelType = getElementType(linkType);
      CreateRelationshipRequest relationShipReq = new CreateRelationshipRequest(metamodelType);

      ConnectionViewAndElementDescriptor desc =
          new ConnectionViewAndElementDescriptor(
              new CreateElementRequestAdapter(relationShipReq),
              metamodelType instanceof IHintedType
                  ? ((IHintedType) metamodelType).getSemanticHint()
                  : "",
              getDefaultPreferencesHint());

      CreateConnectionViewAndElementRequest req = new CreateConnectionViewAndElementRequest(desc);
      req.setType(RequestConstants.REQ_CONNECTION_START);

      EditPart sourceEditPart = findEditPart(source);
      req.setSourceEditPart(sourceEditPart);
      // Note: initializes the sourceCommand in the request
      Command sourceCmd = sourceEditPart.getCommand(req);
      if (sourceCmd == null || !sourceCmd.canExecute()) {
        return null;
      }

      EditPart targetEditPart = target != null ? findEditPart(target) : null;
      if (targetEditPart != null) {
        req.setType(RequestConstants.REQ_CONNECTION_END);
        req.setTargetEditPart(targetEditPart);
        req.setLocation(new Point(0, 0));
        sourceEditPart.getCommand(req);
        Command targetCmd = targetEditPart.getCommand(req);
        return targetCmd;
      }
      return null;
    }
 /** @generated */
 private Collection<IAdaptable> createConnections(
     Collection<TaiPanLinkDescriptor> linkDescriptors, Domain2Notation domain2NotationMap) {
   LinkedList<IAdaptable> adapters = new LinkedList<IAdaptable>();
   for (TaiPanLinkDescriptor nextLinkDescriptor : linkDescriptors) {
     EditPart sourceEditPart = getSourceEditPart(nextLinkDescriptor, domain2NotationMap);
     EditPart targetEditPart = getTargetEditPart(nextLinkDescriptor, domain2NotationMap);
     if (sourceEditPart == null || targetEditPart == null) {
       continue;
     }
     CreateConnectionViewRequest.ConnectionViewDescriptor descriptor =
         new CreateConnectionViewRequest.ConnectionViewDescriptor(
             nextLinkDescriptor.getSemanticAdapter(),
             TaiPanVisualIDRegistry.getType(nextLinkDescriptor.getVisualID()),
             ViewUtil.APPEND,
             false,
             ((IGraphicalEditPart) getHost()).getDiagramPreferencesHint());
     CreateConnectionViewRequest ccr = new CreateConnectionViewRequest(descriptor);
     ccr.setType(RequestConstants.REQ_CONNECTION_START);
     ccr.setSourceEditPart(sourceEditPart);
     sourceEditPart.getCommand(ccr);
     ccr.setTargetEditPart(targetEditPart);
     ccr.setType(RequestConstants.REQ_CONNECTION_END);
     Command cmd = targetEditPart.getCommand(ccr);
     if (cmd != null && cmd.canExecute()) {
       executeCommand(cmd);
       IAdaptable viewAdapter = (IAdaptable) ccr.getNewObject();
       if (viewAdapter != null) {
         adapters.add(viewAdapter);
       }
     }
   }
   return adapters;
 }
 /** Handle resize InteractionOperand {@inheritDoc} */
 @Override
 protected Command getResizeCommand(ChangeBoundsRequest request) {
   if ((request.getResizeDirection() & PositionConstants.EAST_WEST) != 0) {
     EditPart parent = getHost().getParent().getParent();
     return parent.getCommand(request);
   } else {
     if (this.getHost() instanceof InteractionOperandEditPart
         && this.getHost().getParent()
             instanceof CombinedFragmentCombinedFragmentCompartmentEditPart) {
       InteractionOperandEditPart currentIOEP = (InteractionOperandEditPart) this.getHost();
       CombinedFragmentCombinedFragmentCompartmentEditPart compartEP =
           (CombinedFragmentCombinedFragmentCompartmentEditPart) this.getHost().getParent();
       // if first interaction operand and resize direction is NORTH
       if (this.getHost() == OperandBoundsComputeHelper.findFirstIOEP(compartEP)
           && (request.getResizeDirection() & PositionConstants.NORTH) != 0) {
         return getHost().getParent().getParent().getCommand(request);
       } else {
         int heightDelta = request.getSizeDelta().height();
         if ((request.getResizeDirection() & PositionConstants.NORTH) != 0) {
           return OperandBoundsComputeHelper.createIOEPResizeCommand(
               currentIOEP, heightDelta, compartEP, PositionConstants.NORTH);
         } else if ((request.getResizeDirection() & PositionConstants.SOUTH) != 0) {
           return OperandBoundsComputeHelper.createIOEPResizeCommand(
               currentIOEP, heightDelta, compartEP, PositionConstants.SOUTH);
         }
       }
     }
     return null;
   }
 }
 @Override
 protected Command getCommand() {
   final EditPart targetEditPart = getTargetEditPart();
   final CompositeCommand compositeCommand =
       new CompositeCommand(
           Messages.OccurrenceSpecificationCreationTool_CreateOccurrenceSpecification);
   EditPart timeline;
   if (targetEditPart instanceof FullStateInvariantEditPartCN) {
     final FullStateInvariantEditPartCN fullStateInvariantEditPartCN =
         (FullStateInvariantEditPartCN) targetEditPart;
     timeline =
         EditPartUtils.findParentEditPartWithId(
             targetEditPart, FullLifelineTimelineCompartmentEditPartCN.VISUAL_ID);
     compositeCommand.add(
         new CutAndInsertOccurrenceSpecificationCommand(
             fullStateInvariantEditPartCN, getLocation(), false));
   } else if (targetEditPart instanceof CompactStateInvariantEditPartCN) {
     final CompactStateInvariantEditPartCN compactStateInvariantEditPartCN =
         (CompactStateInvariantEditPartCN) targetEditPart;
     timeline =
         EditPartUtils.findParentEditPartWithId(
             targetEditPart, CompactLifelineCompartmentEditPartCN.VISUAL_ID);
     compositeCommand.add(
         new AddOccurrenceSpecificationInCompactLifelineCommand(
             compactStateInvariantEditPartCN, getLocation()));
   } else {
     return UnexecutableCommand.INSTANCE;
   }
   final Command updateLayoutCommand =
       timeline.getCommand(AbstractTimelineLayoutPolicy.UPDATE_LAYOUT_REQUEST);
   compositeCommand.add(new CommandProxy(updateLayoutCommand));
   return new ICommandProxy(compositeCommand);
 }
  /**
   * Returns a composite command with the given initial command and the RegionContainer specific
   * auto-size commands to propagate the auto-size to the regions.
   *
   * @param request the initial request
   * @param autoSizeCommand the initial command
   * @return a composite command with the initial command and the region container specific
   *     additional commands.
   */
  protected Command getRegionContainerAutoSizeCommand(Request request, Command autoSizeCommand) {
    IDiagramElementEditPart host = (IDiagramElementEditPart) getHost();
    TransactionalEditingDomain domain = host.getEditingDomain();
    CompositeTransactionalCommand ctc =
        new CompositeTransactionalCommand(
            domain,
            Messages.RegionContainerResizableEditPolicy_regionContainerAutoSizeCommandLabel);
    ctc.add(new CommandProxy(autoSizeCommand));
    Command regionContainerAutoSizeCommand = new ICommandProxy(ctc);

    // Propagate the auto-size request to the regions.
    Request req = new Request();
    req.setType(request.getType());
    req.getExtendedData().put(REGION_AUTO_SIZE_PROPAGATOR, host);

    Object object = request.getExtendedData().get(REGION_AUTO_SIZE_PROPAGATOR);
    for (EditPart regionPart : getRegionParts()) {
      if (object != regionPart) {
        ctc.add(new CommandProxy(regionPart.getCommand(req)));
      }
    }

    ctc.add(
        CommandFactory.createICommand(
            domain, new RegionContainerUpdateLayoutOperation((Node) host.getModel())));
    return regionContainerAutoSizeCommand;
  }
 public Command createOpacityCommand(final String opacity) {
   final Request opacityReq = new Request("opacity"); // $NON-NLS-1$
   final HashMap<String, String> reqData = new HashMap<String, String>();
   reqData.put("newOpacity", opacity); // $NON-NLS-1$
   opacityReq.setExtendedData(reqData);
   final EditPart object = (EditPart) getSelectedObjects().get(0);
   final Command cmd = object.getCommand(opacityReq);
   return cmd;
 }
 /**
  * Gets a command from each child in the group.
  *
  * @param request
  * @return the compound command
  */
 private Command getCommandFromChildren(Request request) {
   CompoundCommand cc = new CompoundCommand();
   for (Iterator iter = getHost().getChildren().iterator(); iter.hasNext(); ) {
     EditPart childEP = (EditPart) iter.next();
     cc.add(childEP.getCommand(request));
   }
   cc.unwrap();
   return cc;
 }
 /** @generated */
 private Collection createConnections(Collection linkDescriptors, Map domain2NotationMap) {
   List adapters = new LinkedList();
   for (Iterator linkDescriptorsIterator = linkDescriptors.iterator();
       linkDescriptorsIterator.hasNext(); ) {
     final AutomataLinkDescriptor nextLinkDescriptor =
         (AutomataLinkDescriptor) linkDescriptorsIterator.next();
     EditPart sourceEditPart = getEditPart(nextLinkDescriptor.getSource(), domain2NotationMap);
     EditPart targetEditPart =
         getEditPart(nextLinkDescriptor.getDestination(), domain2NotationMap);
     if (sourceEditPart == null || targetEditPart == null) {
       continue;
     }
     CreateConnectionViewRequest.ConnectionViewDescriptor descriptor =
         new CreateConnectionViewRequest.ConnectionViewDescriptor(
             nextLinkDescriptor.getSemanticAdapter(),
             null,
             ViewUtil.APPEND,
             false,
             ((IGraphicalEditPart) getHost()).getDiagramPreferencesHint());
     CreateConnectionViewRequest ccr = new CreateConnectionViewRequest(descriptor);
     ccr.setType(RequestConstants.REQ_CONNECTION_START);
     ccr.setSourceEditPart(sourceEditPart);
     sourceEditPart.getCommand(ccr);
     ccr.setTargetEditPart(targetEditPart);
     ccr.setType(RequestConstants.REQ_CONNECTION_END);
     Command cmd = targetEditPart.getCommand(ccr);
     if (cmd != null && cmd.canExecute()) {
       executeCommand(cmd);
       IAdaptable viewAdapter = (IAdaptable) ccr.getNewObject();
       if (viewAdapter != null) {
         adapters.add(viewAdapter);
       }
     }
   }
   return adapters;
 }
 /** @generated */
 protected Command getCommand(Request request) {
   List operationSet = getOperationSet();
   if (operationSet.isEmpty()) {
     return UnexecutableCommand.INSTANCE;
   }
   Iterator editParts = operationSet.iterator();
   CompositeTransactionalCommand command =
       new CompositeTransactionalCommand(getEditingDomain(), getCommandLabel());
   while (editParts.hasNext()) {
     EditPart editPart = (EditPart) editParts.next();
     Command curCommand = editPart.getCommand(request);
     if (curCommand != null) {
       command.compose(new CommandProxy(curCommand));
     }
   }
   if (command.isEmpty() || command.size() != operationSet.size()) {
     return UnexecutableCommand.INSTANCE;
   }
   return new ICommandProxy(command);
 }
 /**
  * Creates command to destroy the link.
  *
  * @generated
  */
 protected Command getDestroyElementCommand(View view) {
   EditPart editPart = (EditPart) getHost().getViewer().getEditPartRegistry().get(view);
   DestroyElementRequest request = new DestroyElementRequest(getEditingDomain(), false);
   return editPart.getCommand(new EditCommandRequestWrapper(request, Collections.EMPTY_MAP));
 }
  /** {@inheritDoc} */
  @Override
  protected Command getActionCommand() {
    /* for further information, see bug 302555 */
    ViewServiceUtil.forceLoad();

    ShowHideCompartmentRequest req = null;
    CompoundCommand completeCmd =
        new CompoundCommand("Destroy and Create Compartment Command"); // $NON-NLS-1$

    // the commands to hide compartment
    for (EditPartRepresentation current : this.viewsToDestroy) {
      if (current instanceof CompartmentEditPartRepresentation) {
        CompartmentEditPartRepresentation currentRepresentation =
            (CompartmentEditPartRepresentation) current;
        View currentView = currentRepresentation.getCompartmentView();
        EditPart currentEditPart =
            currentRepresentation
                .getRepresentedEditPart(); // should not be null, because a view to  delete should
                                           // be visible, and so have an existing associated edit
                                           // part.
        // if null, try to find it using gmf methods from the view

        if (currentEditPart == null) {
          Activator.log.debug(
              "Warning! An edit part representation wished to destroy a view, but no edit part exists currently!"
                  + current);
          currentEditPart =
              DiagramEditPartsUtil.getEditPartFromView(currentView, selectedElements.get(0))
                  .getParent();
        }

        if (currentEditPart != null) {
          req = new ShowHideCompartmentRequest(ShowHideCompartmentRequest.HIDE, currentView);
          req.setType(ShowHideCompartmentRequest.SHOW_HIDE_COMPARTMENT);
          Command tmp = currentEditPart.getCommand(req);
          if (tmp != null && tmp.canExecute()) {
            completeCmd.add(tmp);
          }
        } else {
          Activator.log.debug(
              "Impossible to find an edit part for the given representation: " + current);
        }
      }

      //			if(current instanceof View) {
      //				EditPart ep = DiagramEditPartsUtil.getEditPartFromView((View)current,
      // selectedElements.get(0)).getParent();
      //				req = new ShowHideCompartmentRequest(ShowHideCompartmentRequest.HIDE,
      // ((View)current).getType());
      //				req.setType(ShowHideCompartmentRequest.SHOW_HIDE_COMPARTMENT);
      //				Command tmp = ep.getCommand(req);
      //				if(tmp != null && tmp.canExecute()) {
      //					completeCmd.add(tmp);
      //				}
      //			} else if(current instanceof CompartmentTitleRepresentation) {
      //				ShowHideTitleOfCompartmentCommand tmp = new
      // ShowHideTitleOfCompartmentCommand(this.domain,
      // (View)((CompartmentTitleRepresentation)current).getRealObject(), false);
      //				if(tmp != null && tmp.canExecute()) {
      //					completeCmd.add(new ICommandProxy(tmp));
      //				}
      //			}
    }

    // the command to show compartment
    for (EditPartRepresentation current : this.viewsToCreate) {
      if (current instanceof CompartmentEditPartRepresentation) {
        CompartmentEditPartRepresentation currentRepresentation =
            (CompartmentEditPartRepresentation) current;
        View currentView = currentRepresentation.getCompartmentView();
        EditPartRepresentation parentRepresentation =
            currentRepresentation.getParentRepresentation();
        IGraphicalEditPart parentEditPart = parentRepresentation.getRepresentedEditPart();
        if (currentView != null && parentEditPart != null) {
          req = new ShowHideCompartmentRequest(ShowHideCompartmentRequest.SHOW, currentView);
          req.setType(ShowHideCompartmentRequest.SHOW_HIDE_COMPARTMENT);
          Command tmp = parentEditPart.getCommand(req);
          if (tmp != null && tmp.canExecute()) {
            completeCmd.add(tmp);
          }
        }
      }

      //			if(current instanceof View) {
      //				EditPart ep = CompartmentUtils.getCompartmentTitleRepresentation(rep,
      // (View)current).getParent();
      //				req = new ShowHideCompartmentRequest(ShowHideCompartmentRequest.SHOW,
      // ((View)current).getType());
      //				req.setType(ShowHideCompartmentRequest.SHOW_HIDE_COMPARTMENT);
      //				Command tmp = ep.getCommand(req);
      //				if(tmp != null && tmp.canExecute()) {
      //					completeCmd.add(tmp);
      //				}
      //			} else if(current instanceof CompartmentTitleRepresentation) {
      //				CompartmentTitleRepresentation compartmentTitleRep =
      // (CompartmentTitleRepresentation)current;
      //				final View view = (View)compartmentTitleRep.getRealObject();
      //				Style style = view.getStyle(NotationPackage.eINSTANCE.getTitleStyle());
      //				if(style == null) {
      //					// style is not existing yet (true for models created with Papyrus 0.7.x) => create now
      //					// See bug 351084
      //					completeCmd.add(new ICommandProxy(new AbstractTransactionalCommand(domain, "Create
      // title style", Collections.EMPTY_LIST) { //$NON-NLS-1$
      //
      //						public CommandResult doExecuteWithResult(IProgressMonitor dummy, IAdaptable info) {
      //							TitleStyle style =
      // (TitleStyle)view.createStyle(NotationPackage.eINSTANCE.getTitleStyle());
      //							style.setShowTitle(false);
      //							return CommandResult.newOKCommandResult();
      //						}
      //					}));
      //				}
      //				ShowHideTitleOfCompartmentCommand tmp = new
      // ShowHideTitleOfCompartmentCommand(this.domain, view, true);
      //				if(tmp != null && tmp.canExecute()) {
      //					completeCmd.add(new ICommandProxy(tmp));
      //				}
      //			}
    }

    // now sets the visibility for all shown views

    for (CompartmentEditPartRepresentation currentRepresentation : visibleRepresentations) {
      final View currentView = currentRepresentation.getCompartmentView();
      boolean newVisibility = currentRepresentation.isTitleVisible();
      boolean oldVisibility = CompartmentUtils.isCompartmentTitleVisible(currentView);

      IGraphicalEditPart parentEditPart =
          currentRepresentation.getParentRepresentation().getRepresentedEditPart();
      final TransactionalEditingDomain domain = parentEditPart.getEditingDomain();
      // visibility has changed => change the model
      if (newVisibility != oldVisibility) {
        Style style = currentView.getStyle(NotationPackage.eINSTANCE.getTitleStyle());
        if (style == null) {
          // style is not existing yet (true for models created with Papyrus 0.7.x) => create now
          // See bug 351084
          completeCmd.add(
              new ICommandProxy(
                  new AbstractTransactionalCommand(
                      domain, "Create title style", Collections.EMPTY_LIST) { // $NON-NLS-1$

                    @Override
                    public CommandResult doExecuteWithResult(
                        IProgressMonitor dummy, IAdaptable info) {
                      TitleStyle style =
                          (TitleStyle)
                              currentView.createStyle(NotationPackage.eINSTANCE.getTitleStyle());
                      style.setShowTitle(false);
                      return CommandResult.newOKCommandResult();
                    }
                  }));
        }
        ShowHideTitleOfCompartmentCommand tmp =
            new ShowHideTitleOfCompartmentCommand(domain, currentView, newVisibility);
        if (tmp != null && tmp.canExecute()) {
          completeCmd.add(new ICommandProxy(tmp));
        }
      }
    }

    return completeCmd;
  }
  /**
   * Gets the show link command from updater link descriptor.
   *
   * @param linkToShow the link to show
   * @param domain2NotationMap the domain2 notation map
   * @param descriptor the descriptor
   * @return the show link command from updater link descriptor
   */
  private ICommand getShowLinkCommandFromUpdaterLinkDescriptor(
      final EObject linkToShow,
      final Domain2Notation domain2NotationMap,
      UpdaterLinkDescriptor descriptor) {
    ConnectorUtils connectorUtils = new ConnectorUtils();

    if (descriptor != null) {

      Set<View> sourceViewList = domain2NotationMap.get(descriptor.getSource());
      Set<View> targetViewList = domain2NotationMap.get(descriptor.getDestination());

      final Set<View> linkSet = domain2NotationMap.get(linkToShow);

      CompositeCommand compositeCommand = new CompositeCommand("Restore All Related Links");
      for (View sourceView : sourceViewList) {
        for (View targetView : targetViewList) {
          if (canDisplayExistingLinkBetweenViews(linkToShow, sourceView, targetView)) {

            if (ConnectorUtils.canDisplayExistingConnectorBetweenViewsAccordingToNestedPaths(
                (Connector) linkToShow, sourceView, targetView)) {
              boolean alreadyDisplayed = false;
              if (linkSet != null) {
                for (View viewLink : linkSet) {
                  boolean linkForViews =
                      isLinkForViews(
                          (org.eclipse.gmf.runtime.notation.Connector) viewLink,
                          sourceView,
                          targetView);
                  alreadyDisplayed = alreadyDisplayed || linkForViews;
                }
              }

              if (!alreadyDisplayed) {
                EditPart sourceEditPart = getEditPartFromView(sourceView);
                EditPart targetEditPart = getEditPartFromView(targetView);

                // If the parts are still null...
                if (sourceEditPart == null || targetEditPart == null) {
                  return null;
                }
                String semanticHint = getSemanticHint(linkToShow);
                CreateConnectionViewRequest.ConnectionViewDescriptor viewDescriptor =
                    new CreateConnectionViewRequest.ConnectionViewDescriptor(
                        descriptor.getSemanticAdapter(),
                        semanticHint,
                        ViewUtil.APPEND,
                        false,
                        ((GraphicalEditPart) getHost()).getDiagramPreferencesHint());
                CreateConnectionViewRequest ccr = new CreateConnectionViewRequest(viewDescriptor);
                ccr.setType(org.eclipse.gef.RequestConstants.REQ_CONNECTION_START);
                ccr.setSourceEditPart(sourceEditPart);
                sourceEditPart.getCommand(ccr);
                ccr.setTargetEditPart(targetEditPart);
                ccr.setType(org.eclipse.gef.RequestConstants.REQ_CONNECTION_END);
                CommandProxy commandProxy = new CommandProxy(targetEditPart.getCommand(ccr));
                compositeCommand.add(commandProxy);
              }
            }
          }
        }
      }
      return compositeCommand;
    }
    return null;
  }