diff options
2 files changed, 163 insertions, 0 deletions
diff --git a/plugins/developer/org.eclipse.papyrus.gmfgenextension/plugin.xml b/plugins/developer/org.eclipse.papyrus.gmfgenextension/plugin.xml index 25f575057ab..ee3efe208d7 100644 --- a/plugins/developer/org.eclipse.papyrus.gmfgenextension/plugin.xml +++ b/plugins/developer/org.eclipse.papyrus.gmfgenextension/plugin.xml @@ -257,6 +257,23 @@ </or>
</enablement>
</action>
+ <action
+ class="org.eclipse.papyrus.papyrusgmfgenextension.popupaction.DisplayReport"
+ enablesFor="*"
+ id="org.eclipse.papyrus.papyrusgmfgenextension.popupaction.TopNodeRepor"
+ label="Display TopNodeReport"
+ menubarPath="org.eclipse.papyrus.papyrusgmfgenextension.popupaction.MenuPapyrus/TopNodeReport">
+ <enablement>
+ <or>
+ <objectClass
+ name="org.eclipse.gmf.codegen.gmfgen.GenEditorGenerator">
+ </objectClass>
+ <objectClass
+ name="org.eclipse.gmf.codegen.gmfgen.GenDiagram">
+ </objectClass>
+ </or>
+ </enablement>
+ </action>
</objectContribution>
</extension>
diff --git a/plugins/developer/org.eclipse.papyrus.gmfgenextension/src/org/eclipse/papyrus/papyrusgmfgenextension/popupaction/DisplayReport.java b/plugins/developer/org.eclipse.papyrus.gmfgenextension/src/org/eclipse/papyrus/papyrusgmfgenextension/popupaction/DisplayReport.java new file mode 100644 index 00000000000..87790fd3d94 --- /dev/null +++ b/plugins/developer/org.eclipse.papyrus.gmfgenextension/src/org/eclipse/papyrus/papyrusgmfgenextension/popupaction/DisplayReport.java @@ -0,0 +1,146 @@ +/******************************************************************************* + * Copyright (c) 2014 CEA LIST. + * All rights reserved. This program and the accompanying materials + * are property of the CEA, their use is subject to specific agreement + * with the CEA. + * + * Contributors: + * CEA LIST - initial API and implementation + *******************************************************************************/ + +package org.eclipse.papyrus.papyrusgmfgenextension.popupaction; + +import java.util.Iterator; + +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.gmf.codegen.gmfgen.GenChildLabelNode; +import org.eclipse.gmf.codegen.gmfgen.GenChildNode; +import org.eclipse.gmf.codegen.gmfgen.GenChildSideAffixedNode; +import org.eclipse.gmf.codegen.gmfgen.GenCommonBase; +import org.eclipse.gmf.codegen.gmfgen.GenLink; +import org.eclipse.gmf.codegen.gmfgen.GenTopLevelNode; +import org.eclipse.gmf.codegen.gmfgen.TypeLinkModelFacet; +import org.eclipse.jface.action.IAction; +import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.FillLayout; +import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.swt.widgets.Text; +import org.eclipse.ui.IViewPart; + +/** + * Display the lis of nodes + */ +public class DisplayReport extends Action { + + /* + * (non-Javadoc) + * + * @see org.eclipse.ui.IViewActionDelegate#init(org.eclipse.ui.IViewPart) + */ + public void init(IViewPart view) { + // NO OP + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction) + */ + public void run(IAction action) { + + Iterator<EObject> it = getSelectedEObject().iterator(); + while(it.hasNext()) { + EObject eObject = it.next(); + + // Action should not be available on objects that are not GenCommonBase + if(eObject instanceof GenCommonBase) { + GenCommonBase genCommonBase = (GenCommonBase)eObject; + StringBuffer out = getTopNodes(genCommonBase.eResource()); + Shell shell= new Shell(Display.getCurrent()); + + shell.setText("report"); + shell.setLayout(new FillLayout()); + Text text1 = new Text(shell, SWT.MULTI | SWT.BORDER| SWT.H_SCROLL|SWT.V_SCROLL); + text1.setText(out.toString()); + shell.pack(); + shell.open(); + + } + + } + } + + public StringBuffer getTopNodes(Resource gmfgen) { + StringBuffer out= new StringBuffer(); + // Find the highest VisualID used by the chosen kind of node (given by clazz) + Iterator<EObject> it = gmfgen.getAllContents(); + out=out.append("TopNode\n"); + //topNode + while(it.hasNext()) { + EObject eObject = it.next(); + if(eObject instanceof GenTopLevelNode ){ + GenTopLevelNode genTopLevelNode= (GenTopLevelNode)eObject; + if( genTopLevelNode.getModelFacet()!= null){ + out=out.append(genTopLevelNode.getModelFacet().getMetaClass().getEcoreClass().getName()+" "+genTopLevelNode.getVisualID()+"\n"); + } + } + } + + out=out.append("\nChildNode\n"); + it = gmfgen.getAllContents(); + //topNode + while(it.hasNext()) { + EObject eObject = it.next(); + if(eObject instanceof GenChildNode ){ + GenChildNode genTopLevelNode= (GenChildNode)eObject; + if( genTopLevelNode.getModelFacet()!= null){ + out=out.append(genTopLevelNode.getModelFacet().getMetaClass().getEcoreClass().getName()+" "+genTopLevelNode.getVisualID()+"\n"); + } + } + } + + out=out.append("\nChildLabelNode\n"); + it = gmfgen.getAllContents(); + //topNode + while(it.hasNext()) { + EObject eObject = it.next(); + if(eObject instanceof GenChildLabelNode){ + GenChildLabelNode genTopLevelNode= (GenChildLabelNode)eObject; + if( genTopLevelNode.getModelFacet()!= null){ + out=out.append(genTopLevelNode.getModelFacet().getMetaClass().getEcoreClass().getName()+" "+genTopLevelNode.getVisualID()+"\n"); + } + } + } + + out=out.append("\nAffixedNode\n"); + it = gmfgen.getAllContents(); + //topNode + while(it.hasNext()) { + EObject eObject = it.next(); + if(eObject instanceof GenChildSideAffixedNode){ + GenChildSideAffixedNode genTopLevelNode= (GenChildSideAffixedNode)eObject; + if( genTopLevelNode.getModelFacet()!= null){ + out=out.append(genTopLevelNode.getModelFacet().getMetaClass().getEcoreClass().getName()+" "+genTopLevelNode.getVisualID()+"\n"); + } + } + } + out=out.append("\nLink\n"); + it = gmfgen.getAllContents(); + //topNode + while(it.hasNext()) { + EObject eObject = it.next(); + if(eObject instanceof GenLink ){ + GenLink genTopLevelNode= (GenLink)eObject; + if( genTopLevelNode.getModelFacet()!= null){ + if(genTopLevelNode.getModelFacet() instanceof TypeLinkModelFacet){ + out=out.append(((TypeLinkModelFacet)genTopLevelNode.getModelFacet()).getMetaClass().getEcoreClass().getName()+" "+genTopLevelNode.getVisualID()+"\n"); + } + } + } + } + return out; + } + +} |