/* * JBoss, Home of Professional Open Source. * * See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing. * * See the AUTHORS.txt file distributed with this work for a full listing of individual contributors. */ package org.teiid.designer.diagram.ui.custom; //import org.eclipse.core.runtime.IStatus; import org.eclipse.emf.ecore.EObject; import org.teiid.designer.core.metamodel.aspect.MetamodelAspect; import org.teiid.designer.core.metamodel.aspect.uml.UmlPackage; import org.teiid.designer.diagram.ui.DiagramUiPlugin; import org.teiid.designer.diagram.ui.PluginConstants; import org.teiid.designer.metamodels.diagram.Diagram; import org.teiid.designer.ui.viewsupport.DiagramHelper; /** * @author BLaFond * * To change the template for this generated type comment go to * Window>Preferences>Java>Code Generation>Code and Comments * * @since 8.0 */ public class CustomDiagramHelper extends DiagramHelper { // private static final String PROBLEM = "CustomDiagramHelper.paste.problem"; //$NON-NLS-1$ // private static final String UNDO_TEXT = "CustomDiagramHelper.paste.undoText"; //$NON-NLS-1$ /* (non-Javadoc) * @See org.teiid.designer.ui.actions.IDiagramHelper#canClone(org.teiid.designer.metamodels.diagram.Diagram) */ @Override public boolean canClone(Diagram diagram) { return true; } /* (non-Javadoc) * @See org.teiid.designer.ui.actions.IDiagramHelper#canCopy(org.teiid.designer.metamodels.diagram.Diagram) */ @Override public boolean canCopy(Diagram diagram) { return true; } /* (non-Javadoc) * @See org.teiid.designer.ui.actions.IDiagramHelper#canCut(org.teiid.designer.metamodels.diagram.Diagram) */ @Override public boolean canCut(Diagram diagram) { return true; } /* (non-Javadoc) * @See org.teiid.designer.ui.actions.IDiagramHelper#canDelete(org.teiid.designer.metamodels.diagram.Diagram) */ @Override public boolean canDelete(Diagram diagram) { return true; } /* (non-Javadoc) * @See org.teiid.designer.ui.actions.IDiagramHelper#canRename(org.teiid.designer.metamodels.diagram.Diagram) */ @Override public boolean canRename(Diagram diagram) { return true; } /* (non-Javadoc) * @See org.teiid.designer.ui.actions.IDiagramHelper#canCreate(org.teiid.designer.metamodels.diagram.Diagram) */ @Override public boolean canCreate(Diagram diagram) { return true; } /* (non-Javadoc) * @See org.teiid.designer.ui.actions.IDiagramHelper#canPaste(org.teiid.designer.metamodels.diagram.Diagram, org.eclipse.emf.ecore.EObject) */ @Override public boolean canPaste(Diagram diagram, EObject pasteParent) { boolean pasteOK = true; // If paste parent is a UmlPackageType, then we can paste MetamodelAspect mmAspect = DiagramUiPlugin.getDiagramAspectManager().getUmlAspect(pasteParent); if( !(mmAspect instanceof UmlPackage)) pasteOK = false; // Now we need to find out if all eObjects are of this custom diagram types String thisType = diagram.getType(); if( thisType == null || !(thisType.equals(PluginConstants.CUSTOM_DIAGRAM_TYPE_ID)) ) pasteOK = false; return pasteOK; } /* (non-Javadoc) * @See org.teiid.designer.ui.actions.IDiagramHelper#paste(org.teiid.designer.metamodels.diagram.Diagram, org.eclipse.emf.ecore.EObject) */ @Override public void paste(Diagram diagram, EObject pasteParent) { // This is a little tricky. // 1) Paste will require this method to "Clone" the diagram into the diagram container, but change the // target to this paste parent // String description = null; // // String path = ModelerCore.getModelEditor().getModelRelativatePath(diagram).toString(); // description = DiagramUiConstants.Util.getString(UNDO_TEXT, path); // // boolean started = ModelerCore.startTxn(description, this); // boolean succeeded = false; // try { // Diagram clonedDiagram = null; // try { // clonedDiagram = (Diagram)ModelerCore.getModelEditor().clone(diagram); // clonedDiagram.setTarget(pasteParent); // } catch (ModelerCoreException theException) { // Object objPath = ModelerCore.getModelEditor().getModelRelativatePathIncludingModel(diagram); // String msg = DiagramUiConstants.Util.getString(PROBLEM, objPath); // DiagramUiConstants.Util.log(IStatus.ERROR, theException, msg); // } // succeeded = true; // } finally { // if (started) { // if ( succeeded ) { // ModelerCore.commitTxn(); // } else { // ModelerCore.rollbackTxn(); // } // } // } } }