carbidecpp22devenv/plugins/org.eclipse.gmf.templates.legacy_1.0.0.v20090614-0839/codegen.templates/xpt/editor/InitDiagramFileAction.xpt
changeset 422 033392511bf7
equal deleted inserted replaced
421:631a44165bcf 422:033392511bf7
       
     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»