/** {@inheritDoc} */
  @Override
  public void paste(IPasteContext context) {
    // already verified, that pasting is allowed just directly in the diagram
    PictogramElement[] pes = context.getPictogramElements();
    Diagram diagram = (Diagram) pes[0];

    // get the PictogramElements from the clipboard and the linked business object.
    Object[] objects = getFromClipboard();
    for (Object object : objects) {
      PictogramElement pictogramElement = (PictogramElement) object;
      rootCon boRef = (rootCon) getBusinessObjectForPictogramElement(pictogramElement);
      rootCon bo = EcoreUtil.copy(boRef);
      addBusinessObjectToContainer(bo, pictogramElement);

      // create a new AddContext for the creation of a new shape.
      AddContext ac = new AddContext(new AddContext(), bo);
      ac.setLocation(0, 0); // for simplicity paste at (0, 0)
      ac.setTargetContainer(diagram); // paste on diagram
      // copy all properties from the shape (e.g. ALIAS etc.)
      for (Property prop : pictogramElement.getProperties()) {
        ac.putProperty(prop.getKey(), prop.getValue());
      }
      getFeatureProvider().addIfPossible(ac);
    }
  }
 public void paste(IPasteContext context) {
   // we already verified, that we paste directly in the diagram
   PictogramElement[] pes = context.getPictogramElements();
   Diagram diagram = (Diagram) pes[0];
   // get the EClasses from the clipboard without copying them
   // (only copy the pictogram element, not the business object)
   // then create new pictogram elements using the add feature
   Object[] objects = getFromClipboard();
   for (Object object : objects) {
     AddContext ac = new AddContext();
     // For simplicity paste all objects at the location given in the
     // context (no stacking or similar)
     ac.setLocation(context.getX(), context.getY());
     ac.setTargetContainer(diagram);
     addGraphicalRepresentation(ac, object);
   }
 }
  public boolean canPaste(IPasteContext context) {
    // only support pasting directly in the diagram (nothing else selected)
    PictogramElement[] pes = context.getPictogramElements();

    if (pes.length != 1 || !isPasteableContext(pes)) {
      return false;
    }

    List<FlowElement> copyList =
        ModelHandler.getKickstartProcessModel(EcoreUtil.getURI(getDiagram())).getClipboard();
    if (copyList.size() > 0) {
      return true;
    } else {
      return false;
    }
  }
  public boolean canPaste(IPasteContext context) {
    // only support pasting directly in the diagram (nothing else selected)
    PictogramElement[] pes = context.getPictogramElements();
    if (pes.length != 1 || !(pes[0] instanceof Diagram)) {
      return false;
    }

    // can paste, if all objects on the clipboard are AClasses
    Object[] fromClipboard = getFromClipboard();
    if (fromClipboard == null || fromClipboard.length == 0) {
      return false;
    }
    for (Object object : fromClipboard) {
      if (!(object instanceof AClass)) {
        return false;
      }
    }
    return true;
  }
 /** {@inheritDoc} */
 @Override
 public boolean canPaste(IPasteContext context) {
   // TODO: only support pasting directly in the diagram
   PictogramElement[] pes = context.getPictogramElements();
   if (pes.length != 1 || !(pes[0] instanceof Diagram)) {
     return false;
   }
   // can paste, if all objects on the clipboard are PictogramElements with link on subclasses of
   // rootCon
   Object[] fromClipboard = getFromClipboard();
   if (fromClipboard == null || fromClipboard.length == 0) {
     return false;
   }
   for (Object object : fromClipboard) {
     if (!(object instanceof PictogramElement)) {
       return false;
     } else if (!(getBusinessObjectForPictogramElement((PictogramElement) object)
         instanceof rootCon)) {
       return false;
     }
   }
   return true;
 }
  public boolean canPaste(IPasteContext context) {
    // only support pasting directly in the diagram (nothing else selected)
    PictogramElement[] pes = context.getPictogramElements();
    if (pes.length != 1 || !(pes[0] instanceof Diagram)) {
      return false;
    }

    // can paste, if clipboard is filled and all objects on the clipboard
    // are EClasses that can be resolved
    Object[] fromClipboard = getFromClipboard();
    if (fromClipboard == null || fromClipboard.length == 0) {
      return false;
    }
    for (Object object : fromClipboard) {
      if (object instanceof EObject) {
        if (!isResolvable((EObject) object)) {
          return false;
        }
      } else {
        return false;
      }
    }
    return true;
  }