blob: aad3ee0e7b28897e585e3dca439a42bbb1c6435a [file] [log] [blame]
/*
* Copyright (c) 2007 Borland Software Corporation
*
* 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:
* bblajer (Borland) - initial API and implementation
*/
«IMPORT "http://www.eclipse.org/gmf/2008/GenModel"»
«IMPORT "http://www.eclipse.org/emf/2002/Ecore"»
«IMPORT "http://www.eclipse.org/emf/2002/GenModel"»
«EXTENSION xpt::editor::i18n»
«EXTENSION xpt::editor::Wizard»
«DEFINE NewDiagramFileWizard FOR gmfgen::GenDiagram
«EXPAND xpt::Common::copyright FOR editorGen
package «editorGen.editor.packageName»;
«EXPAND xpt::Common::generatedClassComment»
public class «newDiagramFileWizardClassName» «EXPAND supertypes» {
«EXPAND editingDomain
«EXPAND selectedModelFile
«EXPAND creationPage
«EXPAND selection
«EXPAND workbenchPage
«EXPAND diagramRoot
«EXPAND ctor
«EXPAND addPages
«EXPAND performFinish
«IF isRichClientPlatform()-»
«EXPAND SourceURISelectorPage
«EXPAND DiagramURISelectorPage
«ENDIF
«EXPAND RootElementSelectorPage
«EXPAND additions
}
«ENDDEFINE»
«DEFINE supertypes FOR gmfgen::GenDiagram»extends org.eclipse.jface.wizard.Wizard«ENDDEFINE»
«DEFINE selectedModelFileType FOR gmfgen::GenDiagram»«IF isRichClientPlatform()»org.eclipse.emf.common.util.URI«ELSE»org.eclipse.core.resources.IFile«ENDIF»«ENDDEFINE»
«DEFINE selectedModelFileName FOR gmfgen::GenDiagram»«IF isRichClientPlatform()»mySelectedModelFileURI«ELSE»mySelectedModelFile«ENDIF»«ENDDEFINE»
«DEFINE selectedModelFileAsURI FOR gmfgen::GenDiagram»«IF isRichClientPlatform()»«EXPAND selectedModelFileName»«ELSE»org.eclipse.emf.common.util.URI.createPlatformResourceURIEXPAND selectedModelFileName».getFullPath().toString(), trueENDIF»«ENDDEFINE»
«DEFINE selectedModelFileAsString FOR gmfgen::GenDiagram»«IF isRichClientPlatform()»«EXPAND selectedModelFileName».toString()«ELSE»«EXPAND selectedModelFileName».getFullPath().toString()«ENDIF»«ENDDEFINE»
«DEFINE editingDomain FOR gmfgen::GenDiagram
«EXPAND xpt::Common::generatedMemberComment»
private org.eclipse.emf.transaction.TransactionalEditingDomain myEditingDomain;
«ENDDEFINE»
«DEFINE selection FOR gmfgen::GenDiagram
«IF !isRichClientPlatform()-»
«EXPAND xpt::Common::generatedMemberComment»
private org.eclipse.jface.viewers.IStructuredSelection mySelection;
«ENDIF
«ENDDEFINE»
«DEFINE workbenchPage FOR gmfgen::GenDiagram
«IF !isRichClientPlatform()-»
«EXPAND xpt::Common::generatedMemberComment»
private org.eclipse.ui.IWorkbenchPage myWorkbenchPage;
«ENDIF
«ENDDEFINE»
«DEFINE selectedModelFile FOR gmfgen::GenDiagram
«EXPAND xpt::Common::generatedMemberComment»
private «EXPAND selectedModelFileType» «EXPAND selectedModelFileName»;
«ENDDEFINE»
«DEFINE creationPage FOR gmfgen::GenDiagram
«IF isRichClientPlatform()-»
«EXPAND xpt::Common::generatedMemberComment»
private DiagramURISelectorPage myDiagramURISelectorPage;
«ELSE
«EXPAND xpt::Common::generatedMemberComment»
private org.eclipse.ui.dialogs.WizardNewFileCreationPage myFileCreationPage;
«ENDIF
«ENDDEFINE»
«DEFINE diagramRoot FOR gmfgen::GenDiagram
«EXPAND xpt::Common::generatedMemberComment»
private org.eclipse.emf.ecore.EObject myDiagramRoot;
«ENDDEFINE»
«DEFINE ctor FOR gmfgen::GenDiagram
«IF isRichClientPlatform()-»
«EXPAND xpt::Common::generatedMemberComment»
public «newDiagramFileWizardClassName»(org.eclipse.emf.common.util.URI selectedModelFileURI, org.eclipse.emf.ecore.EObject diagramRoot, org.eclipse.emf.transaction.TransactionalEditingDomain editingDomain) {
«ELSE
«EXPAND xpt::Common::generatedMemberComment»
public «newDiagramFileWizardClassName»(org.eclipse.core.resources.IFile selectedModelFile, org.eclipse.ui.IWorkbenchPage workbenchPage, org.eclipse.jface.viewers.IStructuredSelection selection, org.eclipse.emf.ecore.EObject diagramRoot, org.eclipse.emf.transaction.TransactionalEditingDomain editingDomain) {
«EXPAND assertNotNull("selectedModelFile")-»
«EXPAND assertNotNull("workbenchPage")-»
«EXPAND assertNotNull("selection")-»
«EXPAND assertNotNull("diagramRoot")-»
«ENDIF
«EXPAND assertNotNull("editingDomain")-»
«IF isRichClientPlatform()-»
«EXPAND selectedModelFileName» = selectedModelFileURI;
«ELSE
«EXPAND selectedModelFileName» = selectedModelFile;
myWorkbenchPage = workbenchPage;
mySelection = selection;
«ENDIF
myDiagramRoot = diagramRoot;
myEditingDomain = editingDomain;
setDefaultPageImageDescriptoreditorGen.plugin.getActivatorQualifiedClassName()».getBundledImageDescriptor("«EXPAND xpt::editor::CreationWizard::wizardBannerLocation»")); «EXPAND xpt::Common::nonNLS»
}
«ENDDEFINE»
«DEFINE assertNotNull(String var) FOR gmfgen::GenDiagram
assert «var» != null : "Null «var» in «newDiagramFileWizardClassName» constructor"; «EXPAND xpt::Common::nonNLS»
«ENDDEFINE»
«DEFINE addPages FOR gmfgen::GenDiagram
«EXPAND xpt::Common::generatedMemberComment»
public void addPages() {
«IF isRichClientPlatform()-»
if (mySelectedModelFileURI == null) {
addPage(new SourceURISelectorPage());
}
myDiagramURISelectorPage = new DiagramURISelectorPage();
addPage(myDiagramURISelectorPage);
«ELSE
myFileCreationPage = new org.eclipse.ui.dialogs.WizardNewFileCreationPageEXPAND xpt::Externalizer::accessorCall(i18nForNewDiagramFileWizardDiagramURISelectorPageName()) FOR editorGen», mySelection) {
public void createControl(org.eclipse.swt.widgets.Composite parent) {
super.createControl(parent);
org.eclipse.core.resources.IContainer parentContainer = mySelectedModelFile.getParent();
String originalFileName = mySelectedModelFile.getProjectRelativePath().removeFileExtension().lastSegment();
String fileExtension = ".«editorGen.diagramFileExtension»"; «EXPAND xpt::Common::nonNLS»
String fileName = originalFileName + fileExtension;
for (int i = 1; i > 0 && parentContainer.getFile(new org.eclipse.core.runtime.Path(fileName)).exists(); i++) {
fileName = originalFileName + i + fileExtension;
}
if (parentContainer.getFile(new org.eclipse.core.runtime.Path(fileName)).exists()) {
return; //failed to set name that does not exist, just leave empty.
}
setFileName(fileName);
}
};
myFileCreationPage.setTitleEXPAND xpt::Externalizer::accessorCall(i18nForNewDiagramFileWizardDiagramURISelectorPageTitle()) FOR editorGen»);
myFileCreationPage.setDescriptionEXPAND xpt::Externalizer::accessorCall(i18nForNewDiagramFileWizardDiagramURISelectorPageDescription()) FOR editorGen»);
addPage(myFileCreationPage);
«ENDIF
RootElementSelectorPage diagramRootElementSelectionPage = new RootElementSelectorPage();
diagramRootElementSelectionPage.setModelElement(myDiagramRoot);
addPage(diagramRootElementSelectionPage);
}
«ENDDEFINE»
«DEFINE performFinish FOR gmfgen::GenDiagram
«EXPAND xpt::Common::generatedMemberComment»
public boolean performFinish() {
org.eclipse.emf.ecore.resource.ResourceSet resourceSet = myEditingDomain.getResourceSet();
«EXPAND defineDiagramFileURI
final org.eclipse.emf.ecore.resource.Resource diagramResource = resourceSet.createResource(diagramFileURI);
org.eclipse.emf.common.command.AbstractCommand command = new org.eclipse.emf.common.command.AbstractCommandEXPAND xpt::Externalizer::accessorCall(i18nForNewDiagramFileWizardCommandLabel()) FOR editorGen») {
private org.eclipse.gmf.runtime.notation.Diagram myCreatedDiagram;
protected boolean prepare() {
int diagramVID = «EXPAND xpt::editor::VisualIDRegistry::getDiagramVisualIDMethodCall»(myDiagramRoot);
if (diagramVID != «EXPAND xpt::editor::VisualIDRegistry::visualID») {
return false;
}
return true;
}
public void execute() {
myCreatedDiagram = «getDiagramEditorUtilQualifiedClassName()».createDiagramFor(myDiagramRoot);
assert myCreatedDiagram != null;
diagramResource.getContents().add(myCreatedDiagram);
«IF editorGen.sameFileForDiagramAndModel
diagramResource.getContents().add(myCreatedDiagram.getElement());
«ENDIF
}
public void redo() {
execute();
}
public boolean canUndo() {
return false;
}
};
try {
new org.eclipse.gmf.runtime.lite.commands.WrappingCommand(myEditingDomain, command).execute();
diagramResource.savegetDiagramEditorUtilQualifiedClassName()».getSaveOptions());
«EXPAND openEditor
if (editor != null) {
«EXPAND layoutEditor
}
} catch (java.io.IOException ex) {
«editorGen.plugin.getActivatorQualifiedClassName()».getInstance().logError("Save operation failed for: " + «EXPAND fileString», ex); «EXPAND xpt::Common::nonNLS»
«IF editorGen.editor.eclipseEditor && !isRichClientPlatform()-»
} catch (org.eclipse.ui.PartInitException ex) {
«editorGen.plugin.getActivatorQualifiedClassName()».getInstance().logError("Unable to open editor", ex); «EXPAND xpt::Common::nonNLS»
«ENDIF
}
return true;
}
«ENDDEFINE»
«DEFINE fileString FOR gmfgen::GenDiagram»«IF isRichClientPlatform()»diagramFileURI.toString()«ELSE»diagramFile.getFullPath().toString()«ENDIF»«ENDDEFINE»
«DEFINE defineDiagramFileURI FOR gmfgen::GenDiagram
«IF isRichClientPlatform()-»
org.eclipse.emf.common.util.URI diagramFileURI = myDiagramURISelectorPage.getNewFileURI();
«ELSE
org.eclipse.core.resources.IFile diagramFile = myFileCreationPage.createNewFile();
«getDiagramEditorUtilQualifiedClassName()».setCharset(diagramFile);
org.eclipse.emf.common.util.URI diagramFileURI = org.eclipse.emf.common.util.URI.createPlatformResourceURI(diagramFile.getFullPath().toString(), true);
«ENDIF
«ENDDEFINE»
«DEFINE openEditor FOR gmfgen::GenDiagram
«IF editorGen.editor.eclipseEditor
«IF isRichClientPlatform()-»
org.eclipse.ui.IEditorPart editor = «getDiagramEditorUtilQualifiedClassName()».openEditor(diagramFileURI);
«ELSE
org.eclipse.ui.IEditorPart editor = org.eclipse.ui.ide.IDE.openEditor(myWorkbenchPage, diagramFile);
«ENDIF
«ELSE
org.eclipse.ui.IViewPart editor = «getDiagramEditorUtilQualifiedClassName()».showView(diagramFileURI);
«ENDIF
«ENDDEFINE»
«DEFINE layoutEditor FOR gmfgen::GenDiagram
org.eclipse.gmf.runtime.lite.services.IDiagramLayouter layouter = (org.eclipse.gmf.runtime.lite.services.IDiagramLayouter) editor.getAdapter(org.eclipse.gmf.runtime.lite.services.IDiagramLayouter.class);
if (layouter != null) {
org.eclipse.gef.GraphicalViewer graphicalViewer = (org.eclipse.gef.GraphicalViewer) editor.getAdapter(org.eclipse.gef.GraphicalViewer.class);
if (graphicalViewer != null) {
org.eclipse.emf.common.command.Command layoutCommand = layouter.layout((org.eclipse.gef.GraphicalEditPart) graphicalViewer.getContents());
if (layoutCommand != null && layoutCommand.canExecute()) {
graphicalViewer.getEditDomain().getCommandStack().execute(new org.eclipse.gmf.runtime.lite.commands.WrappingCommand(myEditingDomain, layoutCommand));
«IF editorGen.editor.eclipseEditor
diagramResource.savegetDiagramEditorUtilQualifiedClassName()».getSaveOptions());
«ENDIF
}
}
}
«ENDDEFINE»
«DEFINE SourceURISelectorPage FOR gmfgen::GenDiagram
«EXPAND xpt::Common::generatedClassComment»
private class SourceURISelectorPage extends «EXPAND xpt::editor::URISelectorPage::qualifiedClassName» {
«EXPAND xpt::Common::generatedMemberComment»
public SourceURISelectorPage() {
superEXPAND xpt::Externalizer::accessorCall(i18nForNewDiagramFileWizardSourceURISelectorPageName()) FOR editorGen»);
setTitleEXPAND xpt::Externalizer::accessorCall(i18nForNewDiagramFileWizardSourceURISelectorPageTitle()) FOR editorGen»);
setDescriptionEXPAND xpt::Externalizer::accessorCall(i18nForNewDiagramFileWizardSourceURISelectorPageDescription()) FOR editorGen»);
}
«EXPAND xpt::Common::generatedMemberComment»
protected String getFileExtension() {
return "«editorGen.domainFileExtension»"; «EXPAND xpt::Common::nonNLS»
}
«EXPAND xpt::Common::generatedMemberComment»
protected boolean validatePage() {
if (super.validatePage()) {
mySelectedModelFileURI = getFileURI();
return true;
}
return false;
}
«EXPAND xpt::Common::generatedMemberComment»
protected String validateFile(java.io.File file) {
if (!file.exists()) {
return «EXPAND xpt::Externalizer::accessorCall(i18nForNewDiagramFileWizardNoSourceFile()) FOR editorGen»;
}
return null;
}
}
«ENDDEFINE»
«DEFINE DiagramURISelectorPage FOR gmfgen::GenDiagram
«EXPAND xpt::Common::generatedClassComment»
private class DiagramURISelectorPage extends «EXPAND xpt::editor::URISelectorPage::qualifiedClassName» {
«EXPAND xpt::Common::generatedMemberComment»
private org.eclipse.emf.common.util.URI myNewFileURI;
«EXPAND xpt::Common::generatedMemberComment»
public DiagramURISelectorPage() {
superEXPAND xpt::Externalizer::accessorCall(i18nForNewDiagramFileWizardDiagramURISelectorPageName()) FOR editorGen»);
setTitleEXPAND xpt::Externalizer::accessorCall(i18nForNewDiagramFileWizardDiagramURISelectorPageTitle()) FOR editorGen»);
setDescriptionEXPAND xpt::Externalizer::accessorCall(i18nForNewDiagramFileWizardDiagramURISelectorPageDescription()) FOR editorGen»);
}
«EXPAND xpt::Common::generatedMemberComment»
protected String getFileExtension() {
return "«editorGen.diagramFileExtension»"; «EXPAND xpt::Common::nonNLS»
}
«EXPAND xpt::Common::generatedMemberComment»
public void setVisible(boolean visible) {
super.setVisible(visible);
if (visible && mySelectedModelFileURI != null && getFileURI() == null && mySelectedModelFileURI.isFile()) {
java.io.File originalFile = new java.io.File(mySelectedModelFileURI.toFileString());
String originalFileName = mySelectedModelFileURI.trimFileExtension().lastSegment();
java.io.File parentFile = originalFile.getParentFile();
java.io.File newFile = new java.io.File(parentFile, originalFileName + getFileExtension());
for(int i = 1; i > 0 && newFile.exists(); i++) {
newFile = new java.io.File(parentFile, originalFileName + i + getFileExtension());
}
if (newFile.exists()) {
return; //failed to set name that does not exist, just leave empty.
}
setFile(newFile);
}
}
«EXPAND xpt::Common::generatedMemberComment»
protected boolean validatePage() {
myNewFileURI = null;
if (super.validatePage()) {
myNewFileURI = getFileURI();
return true;
}
return false;
}
«EXPAND xpt::Common::generatedMemberComment»
public org.eclipse.emf.common.util.URI getNewFileURI() {
return myNewFileURI;
}
«EXPAND xpt::Common::generatedMemberComment»
protected String validateFile(java.io.File file) {
if (file.exists()) {
return «EXPAND xpt::Externalizer::accessorCall(i18nForNewDiagramFileWizardDiagramFileExists()) FOR editorGen»;
}
return null;
}
}
«ENDDEFINE»
«DEFINE RootElementSelectorPage FOR gmfgen::GenDiagram
«EXPAND xpt::Common::generatedClassComment»
private class RootElementSelectorPage extends «EXPAND xpt::editor::ModelElementSelectionPage::qualifiedClassName» {
«EXPAND xpt::Common::generatedMemberComment»
protected RootElementSelectorPage() {
superEXPAND xpt::Externalizer::accessorCall(i18nForNewDiagramFileWizardRootElementSelectorPageName()) FOR editorGen»);
setTitleEXPAND xpt::Externalizer::accessorCall(i18nForNewDiagramFileWizardRootElementSelectorPageTitle()) FOR editorGen»);
setDescriptionEXPAND xpt::Externalizer::accessorCall(i18nForNewDiagramFileWizardRootElementSelectorPageDescription()) FOR editorGen»);
}
«EXPAND xpt::Common::generatedMemberComment»
protected String getSelectionTitle() {
return «EXPAND xpt::Externalizer::accessorCall(i18nForNewDiagramFileWizardRootElementSelectorPageLabelText()) FOR editorGen»;
}
«IF isRichClientPlatform()-»
«EXPAND xpt::Common::generatedMemberComment»
public void setVisible(boolean visible) {
if (visible) {
if (myDiagramRoot != null) {
setModelElement(myDiagramRoot);
} else {
org.eclipse.emf.ecore.resource.Resource resource;
try {
resource = myEditingDomain.getResourceSet().getResource(mySelectedModelFileURI, true);
} catch (org.eclipse.emf.common.util.WrappedException e) {
resource = null;
}
setModelResource(resource);
}
}
super.setVisible(visible);
}
«ENDIF
«EXPAND xpt::Common::generatedMemberComment»
protected boolean validatePage() {
myDiagramRoot = getModelElement();
if (myDiagramRoot == null) {
setErrorMessageEXPAND xpt::Externalizer::accessorCall(i18nForNewDiagramFileWizardRootElementSelectorPageNoRootSelected()) FOR editorGen»);
return false;
}
boolean result = «EXPAND xpt::editor::VisualIDRegistry::visualID FOR getDiagram()» == «EXPAND xpt::editor::VisualIDRegistry::getDiagramVisualIDMethodCall»(myDiagramRoot);
if (result) {
setErrorMessage(null);
} else {
setErrorMessageEXPAND xpt::Externalizer::accessorCall(i18nForNewDiagramFileWizardRootElementSelectorPageInvalidRootSelected()) FOR editorGen»);
}
return result;
}
}
«ENDDEFINE»
«DEFINE additions FOR gmfgen::GenDiagram»«ENDDEFINE»
«DEFINE i18nAccessors FOR gmfgen::GenDiagram
«IF isRichClientPlatform()-»
«EXPAND xpt::Externalizer::accessorField(i18nForNewDiagramFileWizardNoSourceFile())-»
«EXPAND xpt::Externalizer::accessorField(i18nForNewDiagramFileWizardSourceURISelectorPageName())-»
«EXPAND xpt::Externalizer::accessorField(i18nForNewDiagramFileWizardSourceURISelectorPageTitle())-»
«EXPAND xpt::Externalizer::accessorField(i18nForNewDiagramFileWizardSourceURISelectorPageDescription())-»
«EXPAND xpt::Externalizer::accessorField(i18nForNewDiagramFileWizardDiagramFileExists())-»
«ENDIF
«EXPAND xpt::Externalizer::accessorField(i18nForNewDiagramFileWizardDiagramURISelectorPageName())-»
«EXPAND xpt::Externalizer::accessorField(i18nForNewDiagramFileWizardDiagramURISelectorPageTitle())-»
«EXPAND xpt::Externalizer::accessorField(i18nForNewDiagramFileWizardDiagramURISelectorPageDescription())-»
«EXPAND xpt::Externalizer::accessorField(i18nForNewDiagramFileWizardRootElementSelectorPageName())-»
«EXPAND xpt::Externalizer::accessorField(i18nForNewDiagramFileWizardRootElementSelectorPageTitle())-»
«EXPAND xpt::Externalizer::accessorField(i18nForNewDiagramFileWizardRootElementSelectorPageDescription())-»
«EXPAND xpt::Externalizer::accessorField(i18nForNewDiagramFileWizardRootElementSelectorPageLabelText())-»
«EXPAND xpt::Externalizer::accessorField(i18nForNewDiagramFileWizardRootElementSelectorPageNoRootSelected())-»
«EXPAND xpt::Externalizer::accessorField(i18nForNewDiagramFileWizardRootElementSelectorPageInvalidRootSelected())-»
«EXPAND xpt::Externalizer::accessorField(i18nForNewDiagramFileWizardCommandLabel())-»
«ENDDEFINE»
«DEFINE i18nValues FOR gmfgen::GenDiagram
«IF isRichClientPlatform()-»
«EXPAND xpt::Externalizer::messageEntry(i18nForNewDiagramFileWizardNoSourceFile(), "Source file does not exist")-»
«EXPAND xpt::Externalizer::messageEntry(i18nForNewDiagramFileWizardSourceURISelectorPageName(), "Select source file")-»
«EXPAND xpt::Externalizer::messageEntry(i18nForNewDiagramFileWizardSourceURISelectorPageTitle(), "Source file")-»
«EXPAND xpt::Externalizer::messageEntry(i18nForNewDiagramFileWizardSourceURISelectorPageDescription(), "Select file with semantic model element to be depicted on diagram")-»
«EXPAND xpt::Externalizer::messageEntry(i18nForNewDiagramFileWizardDiagramFileExists(), "Diagram file already exists")-»
«ENDIF
«EXPAND xpt::Externalizer::messageEntry(i18nForNewDiagramFileWizardDiagramURISelectorPageName(), "Initialize new " + editorGen.diagramFileExtension + " file")-»
«EXPAND xpt::Externalizer::messageEntry(i18nForNewDiagramFileWizardDiagramURISelectorPageTitle(), "Diagram file")-»
«EXPAND xpt::Externalizer::messageEntry(i18nForNewDiagramFileWizardDiagramURISelectorPageDescription(), "Create new diagram based on " + editorGen.domainGenModel.modelName + " model content")-»
«EXPAND xpt::Externalizer::messageEntry(i18nForNewDiagramFileWizardRootElementSelectorPageName(), "Select diagram root element")-»
«EXPAND xpt::Externalizer::messageEntry(i18nForNewDiagramFileWizardRootElementSelectorPageTitle(), "Diagram root element")-»
«EXPAND xpt::Externalizer::messageEntry(i18nForNewDiagramFileWizardRootElementSelectorPageDescription(), "Select semantic model element to be depicted on diagram")-»
«EXPAND xpt::Externalizer::messageEntry(i18nForNewDiagramFileWizardRootElementSelectorPageLabelText(), "&Select diagram root element")-»
«EXPAND xpt::Externalizer::messageEntry(i18nForNewDiagramFileWizardRootElementSelectorPageNoRootSelected(), "No diagram root element selected")-»
«EXPAND xpt::Externalizer::messageEntry(i18nForNewDiagramFileWizardRootElementSelectorPageInvalidRootSelected(), "Invalid diagram root element is selected")-»
«EXPAND xpt::Externalizer::messageEntry(i18nForNewDiagramFileWizardCommandLabel(), "Initializing diagram contents")-»
«ENDDEFINE»