Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 64114 Details for
Bug 181187
Need a method to add extension models to gmfgen model
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
[patch]
Action is completely rewritten
org.eclipse.gmf.codegen.ui.txt (text/plain), 16.95 KB, created by
Anna Karjakina
on 2007-04-17 18:43:15 EDT
(
hide
)
Description:
Action is completely rewritten
Filename:
MIME Type:
Creator:
Anna Karjakina
Created:
2007-04-17 18:43:15 EDT
Size:
16.95 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.gmf.common >Index: src/org/eclipse/gmf/internal/common/ui/ElementSelectorExtension.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.gmf/plugins/org.eclipse.gmf.common/src/org/eclipse/gmf/internal/common/ui/ElementSelectorExtension.java,v >retrieving revision 1.6 >diff -u -r1.6 ElementSelectorExtension.java >--- src/org/eclipse/gmf/internal/common/ui/ElementSelectorExtension.java 19 Mar 2007 16:49:09 -0000 1.6 >+++ src/org/eclipse/gmf/internal/common/ui/ElementSelectorExtension.java 17 Apr 2007 22:36:49 -0000 >@@ -44,6 +44,10 @@ > } > > protected List<EObject> getModelElements(Resource resource) { >+ return getModelElements(resource, true); >+ } >+ >+ protected List<EObject> getModelElements(Resource resource, boolean sort) { > List<EObject> elements = new ArrayList<EObject>(); > for (Iterator<EObject> it = resource.getAllContents(); it.hasNext();) { > EObject next = it.next(); >@@ -52,14 +56,16 @@ > elements.add(next); > } > } >- Collections.sort(elements, new Comparator<EObject>() { >+ if (sort) { >+ Collections.sort(elements, new Comparator<EObject>() { > >- public int compare(EObject o1, EObject o2) { >- String n1 = getModelElementLabel(o1); >- String n2 = getModelElementLabel(o2); >- return n1.compareTo(n2); >- } >- }); >+ public int compare(EObject o1, EObject o2) { >+ String n1 = getModelElementLabel(o1); >+ String n2 = getModelElementLabel(o2); >+ return n1.compareTo(n2); >+ } >+ }); >+ } > return elements; > } > >#P org.eclipse.gmf.bridge.ui >Index: META-INF/MANIFEST.MF >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.gmf/plugins/org.eclipse.gmf.bridge.ui/META-INF/MANIFEST.MF,v >retrieving revision 1.14 >diff -u -r1.14 MANIFEST.MF >--- META-INF/MANIFEST.MF 5 Apr 2007 20:57:15 -0000 1.14 >+++ META-INF/MANIFEST.MF 17 Apr 2007 22:36:50 -0000 >@@ -22,8 +22,8 @@ > Eclipse-LazyStart: true > Export-Package: org.eclipse.gmf.internal.bridge.resolver;x-internal:=true, > org.eclipse.gmf.internal.bridge.transform;x-friends:="org.eclipse.gmf.bridge.ui.dashboard,org.eclipse.gmf.codegen.ui,org.eclipse.gmf.tests,org.eclipse.gmf.codegen.lite.ui", >- org.eclipse.gmf.internal.bridge.ui;x-friends:="org.eclipse.gmf.bridge.ui.dashboard,org.eclipse.gmf.doc.ui", >- org.eclipse.gmf.internal.bridge.wizards;x-friends:="org.eclipse.gmf.bridge.ui.dashboard,org.eclipse.gmf.doc.ui", >+ org.eclipse.gmf.internal.bridge.ui;x-friends:="org.eclipse.gmf.bridge.ui.dashboard,org.eclipse.gmf.doc.ui,org.eclipse.gmf.codegen.ui", >+ org.eclipse.gmf.internal.bridge.wizards;x-friends:="org.eclipse.gmf.bridge.ui.dashboard,org.eclipse.gmf.doc.ui,org.eclipse.gmf.codegen.ui", > org.eclipse.gmf.internal.bridge.wizards.pages;x-friends:="org.eclipse.gmf.doc.ui", > org.eclipse.gmf.internal.bridge.wizards.strategy;x-internal:=true > Bundle-RequiredExecutionEnvironment: J2SE-1.5 >#P org.eclipse.gmf.codegen.ui >Index: plugin.properties >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.gmf/plugins/org.eclipse.gmf.codegen.ui/plugin.properties,v >retrieving revision 1.16 >diff -u -r1.16 plugin.properties >--- plugin.properties 5 Apr 2007 20:57:00 -0000 1.16 >+++ plugin.properties 17 Apr 2007 22:36:51 -0000 >@@ -23,3 +23,5 @@ > migrate.model.action=Migrate to GMF 2.0 > > dashboard.gende=Generate diagram editor >+ >+addextensionmodel.action=Add extension model... >Index: plugin.xml >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.gmf/plugins/org.eclipse.gmf.codegen.ui/plugin.xml,v >retrieving revision 1.18 >diff -u -r1.18 plugin.xml >--- plugin.xml 5 Apr 2007 20:57:00 -0000 1.18 >+++ plugin.xml 17 Apr 2007 22:36:51 -0000 >@@ -29,6 +29,26 @@ > id="gmf.codegen.ui.executeTemplatesAction"> > </action> > </objectContribution> >+ <objectContribution >+ adaptable="true" >+ id="gmf.codegen.ui.addExtensionModel" >+ nameFilter="*.gmfgen" >+ objectClass="org.eclipse.core.resources.IFile"> >+ <!-- uncomment to use PredefinedModelExtension feature --> >+ <!--visibility> >+ <or> >+ <objectState name="extension" value="gmfgen"/> >+ <objectState name="extension" value="ecore"/> >+ </or> >+ </visibility--> >+ <action >+ label="%addextensionmodel.action" >+ class="org.eclipse.gmf.internal.codegen.popup.actions.AddExtensionModelAction" >+ menubarPath="additions" >+ enablesFor="+" >+ id="gmf.codegen.ui.addExtensionModelAction"> >+ </action> >+ </objectContribution> > <objectContribution > adaptable="true" > id="gmf.codegen.ui.migrate.model.gmfgen" >Index: src/org/eclipse/gmf/internal/codegen/popup/actions/Messages.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.gmf/plugins/org.eclipse.gmf.codegen.ui/src/org/eclipse/gmf/internal/codegen/popup/actions/Messages.java,v >retrieving revision 1.4 >diff -u -r1.4 Messages.java >--- src/org/eclipse/gmf/internal/codegen/popup/actions/Messages.java 18 Jan 2007 18:49:11 -0000 1.4 >+++ src/org/eclipse/gmf/internal/codegen/popup/actions/Messages.java 17 Apr 2007 22:36:51 -0000 >@@ -22,6 +22,16 @@ > > public static String DiagnosticsDialog_gotoProblem_menuItem; > >+ public static String GMFGenExtensionModelWizard_classChooserLabel; >+ >+ public static String GMFGenExtensionModelWizard_pageDescription; >+ >+ public static String GMFGenExtensionModelWizard_pageTitle; >+ >+ public static String GMFGenExtensionModelWizard_unnamedClassName; >+ >+ public static String GMFGenExtensionModelWizard_windowTitle; >+ > public static String migration_confirmModelOverwriteMessage; > > public static String migration_confirmModelOverwriteTitle; >Index: src/org/eclipse/gmf/internal/codegen/popup/actions/messages.properties >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.gmf/plugins/org.eclipse.gmf.codegen.ui/src/org/eclipse/gmf/internal/codegen/popup/actions/messages.properties,v >retrieving revision 1.4 >diff -u -r1.4 messages.properties >--- src/org/eclipse/gmf/internal/codegen/popup/actions/messages.properties 18 Jan 2007 18:49:11 -0000 1.4 >+++ src/org/eclipse/gmf/internal/codegen/popup/actions/messages.properties 17 Apr 2007 22:36:51 -0000 >@@ -8,3 +8,8 @@ > DiagnosticsDialog_Copy_menuItem=Copy > DiagnosticsDialog_gotoProblem_menuItem=Go to problem > >+GMFGenExtensionModelWizard_windowTitle=Add Your Extension Domain Model To GMFGen >+GMFGenExtensionModelWizard_pageTitle=Select Extension Domain Model >+GMFGenExtensionModelWizard_pageDescription=Load extension model and select root element to create in GMFGen. >+GMFGenExtensionModelWizard_classChooserLabel=Root Class: >+GMFGenExtensionModelWizard_unnamedClassName=<unnamed> >Index: src/org/eclipse/gmf/internal/codegen/popup/actions/AddExtensionModelAction.java >=================================================================== >RCS file: src/org/eclipse/gmf/internal/codegen/popup/actions/AddExtensionModelAction.java >diff -N src/org/eclipse/gmf/internal/codegen/popup/actions/AddExtensionModelAction.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/gmf/internal/codegen/popup/actions/AddExtensionModelAction.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,63 @@ >+/* >+ * Copyright (c) 2007 Borland Software Corporation and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * Borland Software Corporation - initial API and implementation >+ */ >+package org.eclipse.gmf.internal.codegen.popup.actions; >+ >+import org.eclipse.jface.action.IAction; >+import org.eclipse.jface.viewers.ISelection; >+import org.eclipse.jface.viewers.IStructuredSelection; >+import org.eclipse.jface.wizard.WizardDialog; >+import org.eclipse.swt.widgets.Shell; >+import org.eclipse.ui.IObjectActionDelegate; >+import org.eclipse.ui.IWorkbench; >+import org.eclipse.ui.IWorkbenchPart; >+import org.eclipse.ui.IWorkbenchWizard; >+ >+public class AddExtensionModelAction implements IObjectActionDelegate { >+ >+ private IStructuredSelection mySelection; >+ >+ private IWorkbenchPart myPart; >+ >+ public void setActivePart(IAction action, IWorkbenchPart targetPart) { >+ myPart = targetPart; >+ } >+ >+ public void selectionChanged(IAction action, ISelection selection) { >+ mySelection = (IStructuredSelection) selection; >+ } >+ >+ public void run(IAction action) { >+ // Create the wizard >+ IWorkbenchWizard wizard = createWizard(); >+ wizard.init(getWorkbench(), getSelection()); >+ >+ // Create the wizard dialog >+ WizardDialog dialog = new WizardDialog(getShell(), wizard); >+ // Open the wizard dialog >+ dialog.open(); >+ } >+ >+ protected IWorkbenchWizard createWizard() { >+ return new GMFGenExtensionModelWizard(); >+ } >+ >+ private Shell getShell() { >+ return myPart.getSite().getShell(); >+ } >+ >+ private IWorkbench getWorkbench() { >+ return myPart.getSite().getWorkbenchWindow().getWorkbench(); >+ } >+ >+ private IStructuredSelection getSelection() { >+ return mySelection; >+ } >+} >Index: src/org/eclipse/gmf/internal/codegen/popup/actions/GMFGenExtensionModelWizard.java >=================================================================== >RCS file: src/org/eclipse/gmf/internal/codegen/popup/actions/GMFGenExtensionModelWizard.java >diff -N src/org/eclipse/gmf/internal/codegen/popup/actions/GMFGenExtensionModelWizard.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/gmf/internal/codegen/popup/actions/GMFGenExtensionModelWizard.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,185 @@ >+/* >+ * Copyright (c) 2007 Borland Software Corporation and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * Borland Software Corporation - initial API and implementation >+ */ >+package org.eclipse.gmf.internal.codegen.popup.actions; >+ >+import java.io.IOException; >+import java.lang.reflect.InvocationTargetException; >+import java.util.HashMap; >+import java.util.List; >+import java.util.Map; >+ >+import org.eclipse.core.resources.IFile; >+import org.eclipse.core.runtime.IProgressMonitor; >+import org.eclipse.emf.common.util.URI; >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.ecore.EcorePackage; >+import org.eclipse.emf.ecore.resource.Resource; >+import org.eclipse.emf.ecore.resource.ResourceSet; >+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; >+import org.eclipse.emf.ecore.xmi.XMLResource; >+import org.eclipse.gmf.internal.bridge.ui.Plugin; >+import org.eclipse.gmf.internal.bridge.wizards.WizardUtil; >+import org.eclipse.gmf.internal.common.ui.ElementSelectorExtension; >+import org.eclipse.gmf.internal.common.ui.ExtensibleModelSelectionPage; >+import org.eclipse.gmf.internal.common.ui.ListElementSelectorExtension; >+import org.eclipse.gmf.internal.common.ui.PredefinedModelExtension; >+import org.eclipse.gmf.internal.common.ui.ResourceLocationProvider; >+import org.eclipse.jface.viewers.IStructuredSelection; >+import org.eclipse.jface.viewers.StructuredSelection; >+import org.eclipse.jface.wizard.Wizard; >+import org.eclipse.ui.IWorkbench; >+import org.eclipse.ui.IWorkbenchWizard; >+import org.eclipse.ui.PartInitException; >+import org.eclipse.ui.actions.WorkspaceModifyOperation; >+ >+public class GMFGenExtensionModelWizard extends Wizard implements IWorkbenchWizard { >+ private static String GMFGEN_FILE_EXTENSION = "gmfgen"; //$NON-NLS-1$ >+ private static String ECORE_FILE_EXTENSION = "ecore"; //$NON-NLS-1$ >+ >+ private IWorkbench myWorkbench; >+ private IStructuredSelection mySelection; >+ private ElementSelectorExtension myRootElementSelectorExtension; >+ private ResourceSet myResourceSet; >+ private ResourceLocationProvider myResourceLocationProvider; >+ private Map<String, Object> myGmfgenResourceSaveOptions; >+ >+ public GMFGenExtensionModelWizard() { >+ super(); >+ } >+ >+ public void init(IWorkbench workbench, IStructuredSelection selection) { >+ myWorkbench = workbench; >+ mySelection = selection; >+ setWindowTitle(Messages.GMFGenExtensionModelWizard_windowTitle); >+ } >+ >+ public IWorkbench getWorkbench() { >+ return myWorkbench; >+ } >+ >+ public IStructuredSelection getSelection() { >+ return mySelection; >+ } >+ >+ protected ResourceSet getResourceSet() { >+ if (myResourceSet == null) { >+ myResourceSet = new ResourceSetImpl(); >+ } >+ return myResourceSet; >+ } >+ >+ private Map<String, Object> getGmfgenResourceSaveOptions() { >+ if (myGmfgenResourceSaveOptions == null) { >+ myGmfgenResourceSaveOptions = new HashMap<String, Object>(); >+ myGmfgenResourceSaveOptions.put(XMLResource.OPTION_ENCODING, "UTF-8"); //$NON-NLS-1$ >+ } >+ return myGmfgenResourceSaveOptions; >+ } >+ >+ public ElementSelectorExtension getRootElementSelectorExtension() { >+ return myRootElementSelectorExtension; >+ } >+ >+ public ResourceLocationProvider getResourceLocationProvider() { >+ return myResourceLocationProvider; >+ } >+ >+ @Override >+ public void addPages() { >+ myResourceLocationProvider = new ResourceLocationProvider(getSelection()); >+ ExtensibleModelSelectionPage domainModelSelectionPage = new ExtensibleModelSelectionPage("domain", myResourceLocationProvider, getResourceSet()) { //$NON-NLS-1$ >+ >+ protected String getModelFileExtension() { >+ return ECORE_FILE_EXTENSION; >+ } >+ }; >+ domainModelSelectionPage.setTitle(Messages.GMFGenExtensionModelWizard_pageTitle); >+ domainModelSelectionPage.setDescription(Messages.GMFGenExtensionModelWizard_pageDescription); >+ List<URI> uris = myResourceLocationProvider.getSelectedURIs(ECORE_FILE_EXTENSION); >+ uris.add(URI.createURI("platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore")); //$NON-NLS-1$ >+ domainModelSelectionPage.addExtension("prem", new PredefinedModelExtension(domainModelSelectionPage, uris)); //$NON-NLS-1$ >+ myRootElementSelectorExtension = new ListElementSelectorExtension() { >+ >+ protected String getModelElementName() { >+ return Messages.GMFGenExtensionModelWizard_classChooserLabel; >+ } >+ >+ protected String getModelElementLabel(EObject modelElement) { >+ String name = ((EClass) modelElement).getName(); >+ if (name == null || name.trim().length() == 0) { >+ name = Messages.GMFGenExtensionModelWizard_unnamedClassName; >+ } >+ return name; >+ } >+ >+ protected boolean isApplicable(EObject element) { >+ EClass clazz = (EClass) element; >+ return !clazz.isAbstract(); >+ } >+ >+ protected EClass getModelElementClass() { >+ return EcorePackage.eINSTANCE.getEClass(); >+ } >+ }; >+ domainModelSelectionPage.addExtension("domainElement", myRootElementSelectorExtension); //$NON-NLS-1$ >+ addPage(domainModelSelectionPage); >+ super.addPages(); >+ } >+ >+ @Override >+ public boolean performFinish() { >+ WorkspaceModifyOperation operation = new WorkspaceModifyOperation() { >+ >+ protected void execute(IProgressMonitor progressMonitor) { >+ try { >+ ElementSelectorExtension extension = getRootElementSelectorExtension(); >+ EClass rootClass = (EClass) extension.getModelElement(); >+ EObject instantiated = rootClass.getEPackage().getEFactoryInstance().create(rootClass); >+ List<URI> gmfgenURIs = getResourceLocationProvider().getSelectedURIs(GMFGEN_FILE_EXTENSION); >+ for (int i=0; i<gmfgenURIs.size(); i++) { >+ URI nextGmfgenURI = gmfgenURIs.get(i); >+ addExtensionMetamodelRootToGmfgen(nextGmfgenURI, instantiated); >+ } >+ } catch (Exception ex) { >+ Plugin.log(ex); >+ } finally { >+ progressMonitor.done(); >+ } >+ } >+ }; >+ >+ try { >+ getContainer().run(false, false, operation); >+ List<IFile> selectedGmfgenFiles = getResourceLocationProvider().getSelectedFiles(GMFGEN_FILE_EXTENSION, false); >+ WizardUtil.selectReveal(getWorkbench(), new StructuredSelection(selectedGmfgenFiles)); >+ if (!selectedGmfgenFiles.isEmpty()) { >+ WizardUtil.openInEditor(getWorkbench(), selectedGmfgenFiles.get(0)); >+ } >+ } catch (InvocationTargetException ex) { >+ return false; >+ } catch (InterruptedException ex) { >+ return false; >+ } catch (PartInitException ex) { >+ Plugin.log(ex); >+ } >+ return true; >+ } >+ >+ protected void addExtensionMetamodelRootToGmfgen(URI nextGmfgenURI, EObject instantiated) throws IOException { >+ Resource gmfgenModel = getResourceSet().createResource(nextGmfgenURI); >+ gmfgenModel.load(getResourceSet().getLoadOptions()); >+ gmfgenModel.getContents().add(instantiated); >+ gmfgenModel.save(getGmfgenResourceSaveOptions()); >+ gmfgenModel.unload(); >+ } >+ >+}
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 181187
:
63889
|
64114
|
64119