diff options
Diffstat (limited to 'plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.menu/src/org/eclipse/papyrus/infra/gmfdiag/menu/handlers/CopyInDiagramHandler.java')
-rw-r--r-- | plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.menu/src/org/eclipse/papyrus/infra/gmfdiag/menu/handlers/CopyInDiagramHandler.java | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.menu/src/org/eclipse/papyrus/infra/gmfdiag/menu/handlers/CopyInDiagramHandler.java b/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.menu/src/org/eclipse/papyrus/infra/gmfdiag/menu/handlers/CopyInDiagramHandler.java index ba4f645aa08..908df94d02b 100644 --- a/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.menu/src/org/eclipse/papyrus/infra/gmfdiag/menu/handlers/CopyInDiagramHandler.java +++ b/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.menu/src/org/eclipse/papyrus/infra/gmfdiag/menu/handlers/CopyInDiagramHandler.java @@ -13,17 +13,25 @@ *****************************************************************************/ package org.eclipse.papyrus.infra.gmfdiag.menu.handlers; +import java.util.ArrayList; import java.util.List; import org.eclipse.emf.transaction.TransactionalEditingDomain; import org.eclipse.gef.commands.Command; +import org.eclipse.gef.commands.CompoundCommand; +import org.eclipse.gmf.runtime.diagram.ui.editparts.DiagramEditPart; import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; +import org.eclipse.gmf.runtime.diagram.ui.parts.IDiagramWorkbenchPart; +import org.eclipse.gmf.runtime.diagram.ui.render.internal.commands.CopyImageCommand; +import org.eclipse.gmf.runtime.notation.Diagram; import org.eclipse.papyrus.commands.wrappers.EMFtoGEFCommandWrapper; +import org.eclipse.papyrus.commands.wrappers.GMFtoGEFCommandWrapper; import org.eclipse.papyrus.infra.core.clipboard.PapyrusClipboard; import org.eclipse.papyrus.infra.gmfdiag.common.commands.DefaultDiagramCopyCommand; import org.eclipse.papyrus.infra.gmfdiag.common.strategy.IStrategy; import org.eclipse.papyrus.infra.gmfdiag.common.strategy.paste.IPasteStrategy; import org.eclipse.papyrus.infra.gmfdiag.common.strategy.paste.PasteStrategyManager; +import org.eclipse.papyrus.infra.gmfdiag.common.utils.DiagramEditPartsUtil; /** * Handler for the Copy Action in Diagram @@ -42,13 +50,30 @@ public class CopyInDiagramHandler extends AbstractGraphicalCommandHandler { List<IGraphicalEditPart> selectedElements = getSelectedElements(); TransactionalEditingDomain editingDomain = getEditingDomain(); // TODO : select copyStrategy + CompoundCommand compoundCommand = new CompoundCommand(); + DefaultDiagramCopyCommand defaultDiagramCopyCommand = new DefaultDiagramCopyCommand(editingDomain, papyrusClipboard, selectedElements); + EMFtoGEFCommandWrapper emFtoGEFCommandWrapper = new EMFtoGEFCommandWrapper(defaultDiagramCopyCommand); + compoundCommand.add(emFtoGEFCommandWrapper); + + IDiagramWorkbenchPart activeDiagramWorkbenchPart = DiagramEditPartsUtil.getActiveDiagramWorkbenchPart(); + Diagram diagram = activeDiagramWorkbenchPart.getDiagram(); + DiagramEditPart diagramEditPart = activeDiagramWorkbenchPart.getDiagramEditPart(); + List<Object> selectedElementModels = new ArrayList<Object>(); + for(IGraphicalEditPart iGraphicalEditPart : selectedElements) { + selectedElementModels.add(iGraphicalEditPart.getModel()); + } + + CopyImageCommand copyImageCommand = new CopyImageCommand("Create image to allow paste on system", diagram, selectedElementModels, diagramEditPart); //$NON-NLS-1$ + GMFtoGEFCommandWrapper gmFtoGEFCommandWrapper = new GMFtoGEFCommandWrapper(copyImageCommand); + compoundCommand.add(gmFtoGEFCommandWrapper); List<IStrategy> allStrategies = PasteStrategyManager.getInstance().getAllStrategies(); for(IStrategy iStrategy : allStrategies) { IPasteStrategy iIPasteStrategy = (IPasteStrategy)iStrategy; iIPasteStrategy.prepare(papyrusClipboard); } - return new EMFtoGEFCommandWrapper(defaultDiagramCopyCommand); + + return compoundCommand; } } |