|
1 /* |
|
2 * Copyright (c) 2007 Borland Software Corporation |
|
3 * |
|
4 * All rights reserved. This program and the accompanying materials |
|
5 * are made available under the terms of the Eclipse Public License v1.0 |
|
6 * which accompanies this distribution, and is available at |
|
7 * http://www.eclipse.org/legal/epl-v10.html |
|
8 * |
|
9 * Contributors: |
|
10 * Alexander Shatalin (Borland) - initial API and implementation |
|
11 * Dmitry Stadnik (Borland) - rewritten in xpand |
|
12 */ |
|
13 |
|
14 «IMPORT "http://www.eclipse.org/gmf/2008/GenModel"» |
|
15 «IMPORT "http://www.eclipse.org/emf/2002/Ecore"» |
|
16 |
|
17 «EXTENSION xpt::editor::Utils» |
|
18 |
|
19 «DEFINE className FOR gmfgen::GenDiagram»«initDiagramFileActionClassName»«ENDDEFINE» |
|
20 |
|
21 «DEFINE qualifiedClassName FOR gmfgen::GenDiagram»«editorGen.editor.packageName».«EXPAND className»«ENDDEFINE» |
|
22 |
|
23 «DEFINE InitDiagramFileAction FOR gmfgen::GenDiagram-» |
|
24 «EXPAND xpt::Common::copyright FOR editorGen-» |
|
25 package «editorGen.editor.packageName»; |
|
26 |
|
27 «EXPAND xpt::Common::generatedClassComment» |
|
28 public class «EXPAND className» |
|
29 «IF editorGen.application == null-» |
|
30 implements org.eclipse.ui.IObjectActionDelegate { |
|
31 |
|
32 «EXPAND xpt::Common::generatedMemberComment» |
|
33 private org.eclipse.ui.IWorkbenchPart targetPart; |
|
34 |
|
35 «EXPAND xpt::Common::generatedMemberComment» |
|
36 private org.eclipse.emf.common.util.URI domainModelURI; |
|
37 |
|
38 «EXPAND xpt::Common::generatedMemberComment» |
|
39 public void setActivePart(org.eclipse.jface.action.IAction action, org.eclipse.ui.IWorkbenchPart targetPart) { |
|
40 this.targetPart = targetPart; |
|
41 } |
|
42 |
|
43 «EXPAND xpt::Common::generatedMemberComment» |
|
44 public void selectionChanged(org.eclipse.jface.action.IAction action, org.eclipse.jface.viewers.ISelection selection) { |
|
45 domainModelURI = null; |
|
46 action.setEnabled(false); |
|
47 if (selection instanceof org.eclipse.jface.viewers.IStructuredSelection == false || selection.isEmpty()) { |
|
48 return; |
|
49 } |
|
50 org.eclipse.core.resources.IFile file = |
|
51 (org.eclipse.core.resources.IFile) ((org.eclipse.jface.viewers.IStructuredSelection) selection).getFirstElement(); |
|
52 domainModelURI = org.eclipse.emf.common.util.URI.createPlatformResourceURI(file.getFullPath().toString(), true); |
|
53 action.setEnabled(true); |
|
54 } |
|
55 |
|
56 «EXPAND xpt::Common::generatedMemberComment» |
|
57 private org.eclipse.swt.widgets.Shell getShell() { |
|
58 return targetPart.getSite().getShell(); |
|
59 } |
|
60 |
|
61 «EXPAND xpt::Common::generatedMemberComment» |
|
62 public void run(org.eclipse.jface.action.IAction action) { |
|
63 org.eclipse.emf.transaction.TransactionalEditingDomain editingDomain = |
|
64 org.eclipse.gmf.runtime.emf.core.GMFEditingDomainFactory.INSTANCE.createEditingDomain(); |
|
65 «IF editorGen.sameFileForDiagramAndModel-» |
|
66 org.eclipse.emf.ecore.resource.ResourceSet resourceSet = new org.eclipse.emf.ecore.resource.impl.ResourceSetImpl(); |
|
67 «ELSE-» |
|
68 org.eclipse.emf.ecore.resource.ResourceSet resourceSet = editingDomain.getResourceSet(); |
|
69 «ENDIF-» |
|
70 org.eclipse.emf.ecore.EObject diagramRoot = null; |
|
71 try { |
|
72 org.eclipse.emf.ecore.resource.Resource resource = resourceSet.getResource(domainModelURI, true); |
|
73 diagramRoot = (org.eclipse.emf.ecore.EObject) resource.getContents().get(0); |
|
74 } catch (org.eclipse.emf.common.util.WrappedException ex) { |
|
75 «editorGen.plugin.getActivatorQualifiedClassName()».getInstance().logError( |
|
76 "Unable to load resource: " + domainModelURI, ex); «EXPAND xpt::Common::nonNLS» |
|
77 } |
|
78 if (diagramRoot == null) { |
|
79 org.eclipse.jface.dialogs.MessageDialog.openError(getShell(), |
|
80 «EXPAND xpt::Externalizer::accessorCall(i18nKeyForInitDiagramFileResourceErrorDialog().titleKey()) FOR editorGen», |
|
81 «EXPAND xpt::Externalizer::accessorCall(i18nKeyForInitDiagramFileResourceErrorDialog().messageKey()) FOR editorGen»); |
|
82 return; |
|
83 } |
|
84 org.eclipse.jface.wizard.Wizard wizard = new «getNewDiagramFileWizardQualifiedClassName()»(domainModelURI, diagramRoot, editingDomain); |
|
85 wizard.setWindowTitle(org.eclipse.osgi.util.NLS.bind( |
|
86 «EXPAND xpt::Externalizer::accessorCall(i18nKeyForInitDiagramFileWizardTitle()) FOR editorGen», |
|
87 «EXPAND xpt::editor::VisualIDRegistry::modelID»)); |
|
88 «getDiagramEditorUtilQualifiedClassName()».runWizard(getShell(), wizard, "InitDiagramFile"); «EXPAND xpt::Common::nonNLS» |
|
89 } |
|
90 «ELSE-» |
|
91 implements org.eclipse.ui.IWorkbenchWindowActionDelegate { |
|
92 |
|
93 «EXPAND xpt::Common::generatedMemberComment» |
|
94 private org.eclipse.ui.IWorkbenchWindow window; |
|
95 |
|
96 «EXPAND xpt::Common::generatedMemberComment» |
|
97 public void init(org.eclipse.ui.IWorkbenchWindow window) { |
|
98 this.window = window; |
|
99 } |
|
100 |
|
101 «EXPAND xpt::Common::generatedMemberComment» |
|
102 public void dispose() { |
|
103 window = null; |
|
104 } |
|
105 |
|
106 «EXPAND xpt::Common::generatedMemberComment» |
|
107 public void selectionChanged(org.eclipse.jface.action.IAction action, org.eclipse.jface.viewers.ISelection selection) { |
|
108 } |
|
109 |
|
110 «EXPAND xpt::Common::generatedMemberComment» |
|
111 private org.eclipse.swt.widgets.Shell getShell() { |
|
112 return window.getShell(); |
|
113 } |
|
114 |
|
115 «EXPAND xpt::Common::generatedMemberComment» |
|
116 public void run(org.eclipse.jface.action.IAction action) { |
|
117 org.eclipse.emf.transaction.TransactionalEditingDomain editingDomain = |
|
118 org.eclipse.gmf.runtime.emf.core.GMFEditingDomainFactory.INSTANCE.createEditingDomain(); |
|
119 org.eclipse.emf.ecore.resource.Resource resource = |
|
120 «getDiagramEditorUtilQualifiedClassName()».openModel(getShell(), |
|
121 «EXPAND xpt::Externalizer::accessorCall(i18nKeyForInitDiagramOpenFileDialogTitle()) FOR editorGen», editingDomain); |
|
122 if (resource == null || resource.getContents().isEmpty()) { |
|
123 return; |
|
124 } |
|
125 org.eclipse.emf.ecore.EObject diagramRoot = (org.eclipse.emf.ecore.EObject) resource.getContents().get(0); |
|
126 org.eclipse.jface.wizard.Wizard wizard = new «getNewDiagramFileWizardQualifiedClassName()»(resource.getURI(), diagramRoot, editingDomain); |
|
127 wizard.setWindowTitle(org.eclipse.osgi.util.NLS.bind( |
|
128 «EXPAND xpt::Externalizer::accessorCall(i18nKeyForInitDiagramFileWizardTitle()) FOR editorGen», |
|
129 «EXPAND xpt::editor::VisualIDRegistry::modelID»)); |
|
130 «getDiagramEditorUtilQualifiedClassName()».runWizard(getShell(), wizard, "InitDiagramFile"); «EXPAND xpt::Common::nonNLS» |
|
131 } |
|
132 «ENDIF-» |
|
133 } |
|
134 «ENDDEFINE» |
|
135 |
|
136 «DEFINE i18nAccessors FOR gmfgen::GenDiagram-» |
|
137 «EXPAND xpt::Externalizer::accessorField(i18nKeyForInitDiagramFileResourceErrorDialog().titleKey())-» |
|
138 «EXPAND xpt::Externalizer::accessorField(i18nKeyForInitDiagramFileResourceErrorDialog().messageKey())-» |
|
139 «EXPAND xpt::Externalizer::accessorField(i18nKeyForInitDiagramFileWizardTitle())-» |
|
140 «EXPAND xpt::Externalizer::accessorField(i18nKeyForInitDiagramOpenFileDialogTitle())-» |
|
141 «ENDDEFINE» |
|
142 |
|
143 «DEFINE i18nValues FOR gmfgen::GenDiagram-» |
|
144 «EXPAND xpt::Externalizer::messageEntry(i18nKeyForInitDiagramFileResourceErrorDialog().titleKey(), "Error")-» |
|
145 «EXPAND xpt::Externalizer::messageEntry(i18nKeyForInitDiagramFileResourceErrorDialog().messageKey(), "Model file loading failed")-» |
|
146 «EXPAND xpt::Externalizer::messageEntry(i18nKeyForInitDiagramFileWizardTitle(), "Initialize new {0} diagram file")-» |
|
147 «EXPAND xpt::Externalizer::messageEntry(i18nKeyForInitDiagramOpenFileDialogTitle(), "Select domain model")-» |
|
148 «ENDDEFINE» |