carbidecpp22devenv/plugins/org.eclipse.gmf.templates.legacy_1.0.0.v20090614-0839/codegen.lite.templates/xpt/editor/ElementChooser.xpt
changeset 422 033392511bf7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/carbidecpp22devenv/plugins/org.eclipse.gmf.templates.legacy_1.0.0.v20090614-0839/codegen.lite.templates/xpt/editor/ElementChooser.xpt	Fri Dec 04 11:06:59 2009 -0600
@@ -0,0 +1,471 @@
+/*
+ * 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"»
+«EXTENSION xpt::editor::Utils»
+«EXTENSION xpt::editor::Wizard»
+
+«DEFINE ElementChooser FOR gmfgen::GenDiagram-»
+	«EXPAND xpt::Common::copyright FOR editorGen-»
+package «editorGen.editor.packageName»;
+
+	«EXPAND xpt::Common::generatedClassComment»
+public class «elementChooserClassName» extends org.eclipse.jface.dialogs.Dialog {
+
+	«EXPAND attributes-»
+
+	«EXPAND constructor-»
+
+	«EXPAND createDialogArea-»
+
+	«EXPAND createButtonBar-»
+
+	«EXPAND createModelBrowser-»
+
+	«EXPAND setOkButtonEnabled-»
+
+	«EXPAND isValidModelFile-»
+
+	«EXPAND getCreateShortcutCommand-»
+
+	«EXPAND getCreateShortcutCommandForGivenObject-»
+
+	«EXPAND open-»
+
+	«EXPAND ModelElementsTreeContentProvider-»
+
+	«EXPAND ModelElementsTreeLabelProvider-»
+
+	«EXPAND ModelFilesFilter-»
+
+	«EXPAND OkButtonEnabler-»	
+
+	«EXPAND additions-»
+}
+«ENDDEFINE»
+
+«DEFINE attributes FOR gmfgen::GenDiagram-»
+	«EXPAND xpt::Common::generatedMemberComment»
+private org.eclipse.jface.viewers.TreeViewer myTreeViewer;
+
+	«EXPAND xpt::Common::generatedMemberComment»
+private org.eclipse.emf.common.util.URI mySelectedModelElementURI;
+
+	«EXPAND xpt::Common::generatedMemberComment»
+private org.eclipse.gmf.runtime.notation.View myView;
+	
+	«EXPAND xpt::Common::generatedMemberComment»
+private org.eclipse.emf.transaction.TransactionalEditingDomain myEditingDomain = «EXPAND xpt::editor::Common::createEditingDomain FOR editorGen»;
+
+«EXPAND xpt::Common::generatedMemberComment»
+private org.eclipse.gef.GraphicalViewer myGraphicalViewer;
+«ENDDEFINE»
+
+«DEFINE constructor FOR gmfgen::GenDiagram-»
+	«EXPAND xpt::Common::generatedMemberComment»
+public «elementChooserClassName»(org.eclipse.swt.widgets.Shell parentShell, org.eclipse.gmf.runtime.notation.View view, org.eclipse.gef.GraphicalViewer graphicalViewer) {
+	super(parentShell);
+	setShellStyle(getShellStyle() | org.eclipse.swt.SWT.RESIZE);
+	myView = view;
+	myGraphicalViewer = graphicalViewer;
+}
+«ENDDEFINE»
+
+«DEFINE createDialogArea FOR gmfgen::GenDiagram-»
+	«EXPAND xpt::Common::generatedMemberComment»
+protected org.eclipse.swt.widgets.Control createDialogArea(org.eclipse.swt.widgets.Composite parent) {
+	org.eclipse.swt.widgets.Composite composite = (org.eclipse.swt.widgets.Composite) super.createDialogArea(parent);
+	getShell().setText(«EXPAND xpt::Externalizer::accessorCall(titleKey(i18nKeyForSelectModelElement(this))) FOR editorGen»);
+	createModelBrowser(composite);
+	return composite;
+}
+«ENDDEFINE»
+
+«DEFINE createButtonBar FOR gmfgen::GenDiagram-»
+	«EXPAND xpt::Common::generatedMemberComment»
+protected org.eclipse.swt.widgets.Control createButtonBar(org.eclipse.swt.widgets.Composite parent) {
+	org.eclipse.swt.widgets.Control buttonBar = super.createButtonBar(parent);
+	setOkButtonEnabled(false);
+	return buttonBar;
+}
+«ENDDEFINE»
+
+«DEFINE createModelBrowser FOR gmfgen::GenDiagram-»
+	«EXPAND xpt::Common::generatedMemberComment»
+private void createModelBrowser(org.eclipse.swt.widgets.Composite composite) {
+	myTreeViewer = new org.eclipse.jface.viewers.TreeViewer(composite, org.eclipse.swt.SWT.SINGLE | org.eclipse.swt.SWT.H_SCROLL | org.eclipse.swt.SWT.V_SCROLL | org.eclipse.swt.SWT.BORDER);
+	org.eclipse.swt.layout.GridData layoutData = new org.eclipse.swt.layout.GridData(org.eclipse.swt.layout.GridData.FILL_BOTH);
+	layoutData.heightHint = 300;
+	layoutData.widthHint = 300;
+	myTreeViewer.getTree().setLayoutData(layoutData);
+	myTreeViewer.setContentProvider(new ModelElementsTreeContentProvider());
+	myTreeViewer.setLabelProvider(new ModelElementsTreeLabelProvider());
+	myTreeViewer.setInput(org.eclipse.core.resources.ResourcesPlugin.getWorkspace().getRoot());
+	myTreeViewer.addFilter(new ModelFilesFilter());
+	myTreeViewer.addSelectionChangedListener(new OkButtonEnabler());
+}
+«ENDDEFINE»
+
+«DEFINE setOkButtonEnabled FOR gmfgen::GenDiagram-»
+	«EXPAND xpt::Common::generatedMemberComment»
+private void setOkButtonEnabled(boolean enabled) {
+	getButton(org.eclipse.jface.dialogs.IDialogConstants.OK_ID).setEnabled(enabled);
+}
+«ENDDEFINE»
+
+«DEFINE isValidModelFile FOR gmfgen::GenDiagram-»
+	«EXPAND xpt::Common::generatedMemberComment»
+private boolean isValidModelFile(org.eclipse.core.resources.IFile file) {
+	String fileExtension = file.getFullPath().getFileExtension();
+	return «EXPAND compareModelFileExtension FOREACH containsShortcutsTo SEPARATOR " || "»; «EXPAND xpt::Common::nonNLS({}) FOREACH containsShortcutsTo SEPARATOR " "»
+}
+«ENDDEFINE»
+
+/**
+ * NB: For the lite runtime, "containsShortcutsTo" is considered not file extension, 
+ * but the model ID of the diagram whose elements may appear on this diagram. 
+ * The mapping between model ID and the file extension is not predefined, but the most typical case
+ * is covered here.
+ */
+«DEFINE compareModelFileExtension FOR String»"«this»".equalsIgnoreCase(fileExtension)«ENDDEFINE»
+
+«DEFINE getCreateShortcutCommand FOR gmfgen::GenDiagram-»
+«EXPAND xpt::Common::generatedMemberComment»
+public org.eclipse.gmf.runtime.lite.commands.CreateNotationalElementCommand getCreateShortcutCommand() {
+	final org.eclipse.emf.ecore.EObject selectedElement;
+	try {
+		org.eclipse.emf.transaction.TransactionalEditingDomain editingDomain = org.eclipse.emf.transaction.util.TransactionUtil.getEditingDomain(myView.getElement());
+		selectedElement = editingDomain.getResourceSet().getEObject(mySelectedModelElementURI, true);
+	} catch (org.eclipse.emf.common.util.WrappedException e) {
+		«editorGen.plugin.getActivatorQualifiedClassName()».getInstance().logError("Exception while loading object: " + mySelectedModelElementURI.toString(), e); «EXPAND xpt::Common::nonNLS»
+		return null;
+	}
+	if (selectedElement == null) {
+		return null;
+	}
+	return getCreateShortcutCommand(selectedElement);
+}
+«ENDDEFINE»
+
+«DEFINE getCreateShortcutCommandForGivenObject FOR gmfgen::GenDiagram-»
+«EXPAND xpt::Common::generatedMemberComment»
+public org.eclipse.gmf.runtime.lite.commands.CreateNotationalElementCommand getCreateShortcutCommand(org.eclipse.emf.ecore.EObject domainModelElement) {
+	«FOREACH containsShortcutsTo AS nextModelID ITERATOR it-»
+	«IF it.isFirstIteration()»org.eclipse.gmf.runtime.lite.shortcuts.IShortcutProvider «ENDIF»shortcutProvider = org.eclipse.gmf.runtime.lite.shortcuts.ShortcutProvidersRegistry.INSTANCE.getShortcutProvider(«IF nextModelID == editorGen.modelID»«getEditPartQualifiedClassName()».MODEL_ID«ELSE»"«nextModelID»"«ENDIF»);«IF nextModelID != editorGen.modelID»	«EXPAND xpt::Common::nonNLS»«ENDIF»
+	if (shortcutProvider != null) {
+		org.eclipse.gmf.runtime.lite.commands.CreateNotationalElementCommand result = shortcutProvider.getCreateShortcutCommand(myView, domainModelElement);
+		if (result != null && result.canExecute()) {
+			return result;
+		}
+	}
+	«ENDFOREACH-»
+	return null;
+}
+«ENDDEFINE»
+
+«DEFINE open FOR gmfgen::GenDiagram-»
+	«EXPAND xpt::Common::generatedMemberComment»
+public int open() {
+	int result = super.open();
+	for (java.util.Iterator it = myEditingDomain.getResourceSet().getResources().iterator(); it.hasNext();) {
+		org.eclipse.emf.ecore.resource.Resource resource = (org.eclipse.emf.ecore.resource.Resource) it.next();
+		resource.unload();
+	}
+	myEditingDomain.dispose();
+	return result;
+}
+«ENDDEFINE»
+
+«DEFINE ModelElementsTreeContentProvider FOR gmfgen::GenDiagram-»
+	«EXPAND xpt::Common::generatedClassComment»
+private class ModelElementsTreeContentProvider implements org.eclipse.jface.viewers.ITreeContentProvider {
+
+	«EXPAND METCP_attributes-»
+	
+	«EXPAND METCP_getChildren-»
+
+	«EXPAND METCP_getParent-»
+
+	«EXPAND METCP_hasChildren-»
+
+	«EXPAND METCP_getElements-»
+
+	«EXPAND METCP_dispose-»
+
+	«EXPAND METCP_inputChanged-»	
+
+	«EXPAND METCP_additions-»
+}
+«ENDDEFINE»
+
+«DEFINE METCP_attributes FOR gmfgen::GenDiagram-»
+	«EXPAND xpt::Common::generatedMemberComment»
+private org.eclipse.jface.viewers.ITreeContentProvider myWorkbenchContentProvider = new «IF null == editorGen.application»org.eclipse.ui.model.WorkbenchContentProvider«ELSE»org.eclipse.ui.model.BaseWorkbenchContentProvider«ENDIF»();
+
+	«EXPAND xpt::Common::generatedMemberComment»
+private org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider myAdapterFactoryContentProvier = new org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider(«editorGen.plugin.getActivatorQualifiedClassName()».getInstance().getItemProvidersAdapterFactory());
+«ENDDEFINE»
+
+«DEFINE METCP_getChildren FOR gmfgen::GenDiagram-»
+	«EXPAND xpt::Common::generatedMemberComment»
+public Object[] getChildren(Object parentElement) {
+	Object[] result = myWorkbenchContentProvider.getChildren(parentElement);
+	if (result != null && result.length > 0) {
+		return result;
+	}
+	if (parentElement instanceof org.eclipse.core.resources.IFile) {
+		org.eclipse.core.resources.IFile modelFile = (org.eclipse.core.resources.IFile) parentElement;
+		org.eclipse.core.runtime.IPath resourcePath = modelFile.getFullPath();
+		org.eclipse.emf.ecore.resource.ResourceSet resourceSet = myEditingDomain.getResourceSet();
+		try {
+			org.eclipse.emf.ecore.resource.Resource modelResource = resourceSet.getResource(org.eclipse.emf.common.util.URI.createPlatformResourceURI(resourcePath.toString(), true), true);
+			return myAdapterFactoryContentProvier.getChildren(modelResource);
+		} catch (org.eclipse.emf.common.util.WrappedException e) {
+			«editorGen.plugin.getActivatorQualifiedClassName()».getInstance().logError("Unable to load resource: " + resourcePath.toString(), e); «EXPAND xpt::Common::nonNLS»
+		}
+		return java.util.Collections.EMPTY_LIST.toArray();
+	}
+	return myAdapterFactoryContentProvier.getChildren(parentElement);
+}
+«ENDDEFINE»
+
+«DEFINE METCP_getParent FOR gmfgen::GenDiagram-»
+	«EXPAND xpt::Common::generatedMemberComment»
+public Object getParent(Object element) {
+	Object parent = myWorkbenchContentProvider.getParent(element);
+	if (parent != null) {
+		return parent;
+	}
+	if (element instanceof org.eclipse.emf.ecore.EObject) {
+		org.eclipse.emf.ecore.EObject eObject = (org.eclipse.emf.ecore.EObject) element;
+		if (eObject.eContainer() == null && eObject.eResource().getURI().isFile()) {
+			String path = eObject.eResource().getURI().path();
+			return org.eclipse.core.resources.ResourcesPlugin.getWorkspace().getRoot().getFileForLocation(new org.eclipse.core.runtime.Path(path));
+		}
+		return myAdapterFactoryContentProvier.getParent(eObject);
+	}
+	return null;
+}
+«ENDDEFINE»
+
+«DEFINE METCP_hasChildren FOR gmfgen::GenDiagram-»
+	«EXPAND xpt::Common::generatedMemberComment»
+public boolean hasChildren(Object element) {
+	if (element instanceof org.eclipse.core.resources.IFile) {
+		return isValidModelFile((org.eclipse.core.resources.IFile) element);
+	}
+	return myWorkbenchContentProvider.hasChildren(element) || myAdapterFactoryContentProvier.hasChildren(element);
+}
+«ENDDEFINE»
+
+«DEFINE METCP_getElements FOR gmfgen::GenDiagram-»
+	«EXPAND xpt::Common::generatedMemberComment»
+public Object[] getElements(Object inputElement) {
+	Object[] elements = myWorkbenchContentProvider.getElements(inputElement);
+	return elements;
+}
+«ENDDEFINE»
+
+«DEFINE METCP_dispose FOR gmfgen::GenDiagram-»
+	«EXPAND xpt::Common::generatedMemberComment»
+public void dispose() {
+	myWorkbenchContentProvider.dispose();
+	myAdapterFactoryContentProvier.dispose();
+}
+«ENDDEFINE»
+
+«DEFINE METCP_inputChanged FOR gmfgen::GenDiagram-»
+	«EXPAND xpt::Common::generatedMemberComment»
+public void inputChanged(org.eclipse.jface.viewers.Viewer viewer, Object oldInput, Object newInput) {
+	myWorkbenchContentProvider.inputChanged(viewer, oldInput, newInput);
+	myAdapterFactoryContentProvier.inputChanged(viewer, oldInput, newInput);
+}
+«ENDDEFINE»
+
+«DEFINE ModelElementsTreeLabelProvider FOR gmfgen::GenDiagram-»
+	«EXPAND xpt::Common::generatedClassComment»
+private class ModelElementsTreeLabelProvider implements org.eclipse.jface.viewers.ILabelProvider {
+
+	«EXPAND METLP_attributes-»
+	
+	«EXPAND METLP_getImage-»
+	
+	«EXPAND METLP_getText-»
+	
+	«EXPAND METLP_addListener-»
+	
+	«EXPAND METLP_dispose-»
+	
+	«EXPAND METLP_isLabelProperty-»
+	
+	«EXPAND METLP_removeListener-»
+
+	«EXPAND METLP_additions-»
+}
+«ENDDEFINE»
+
+
+«DEFINE METLP_attributes FOR gmfgen::GenDiagram-»
+	«EXPAND xpt::Common::generatedMemberComment»
+		private org.eclipse.ui.model.WorkbenchLabelProvider myWorkbenchLabelProvider = new org.eclipse.ui.model.WorkbenchLabelProvider();
+
+	«EXPAND xpt::Common::generatedMemberComment»
+		private org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider myAdapterFactoryLabelProvider = new org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider(«editorGen.plugin.getActivatorQualifiedClassName()».getInstance().getItemProvidersAdapterFactory());
+«ENDDEFINE»
+		
+«DEFINE METLP_getImage FOR gmfgen::GenDiagram-»
+	«EXPAND xpt::Common::generatedMemberComment»
+public org.eclipse.swt.graphics.Image getImage(Object element) {
+	org.eclipse.swt.graphics.Image result = myWorkbenchLabelProvider.getImage(element);
+	return result != null ? result : myAdapterFactoryLabelProvider.getImage(element);
+}
+«ENDDEFINE»
+
+«DEFINE METLP_getText FOR gmfgen::GenDiagram-»
+	«EXPAND xpt::Common::generatedMemberComment»
+public String getText(Object element) {
+	String result = myWorkbenchLabelProvider.getText(element);
+	return result != null && result.length() > 0 ? result : myAdapterFactoryLabelProvider.getText(element);
+}
+«ENDDEFINE»
+
+«DEFINE METLP_addListener FOR gmfgen::GenDiagram-»
+	«EXPAND xpt::Common::generatedMemberComment»
+public void addListener(org.eclipse.jface.viewers.ILabelProviderListener listener) {
+	myWorkbenchLabelProvider.addListener(listener);
+	myAdapterFactoryLabelProvider.addListener(listener);
+}
+«ENDDEFINE»
+
+«DEFINE METLP_dispose FOR gmfgen::GenDiagram-»
+	«EXPAND xpt::Common::generatedMemberComment»
+public void dispose() {
+	myWorkbenchLabelProvider.dispose();
+	myAdapterFactoryLabelProvider.dispose();
+}
+«ENDDEFINE»
+
+«DEFINE METLP_isLabelProperty FOR gmfgen::GenDiagram-»
+	«EXPAND xpt::Common::generatedMemberComment»
+public boolean isLabelProperty(Object element, String property) {
+	return myWorkbenchLabelProvider.isLabelProperty(element, property) || myAdapterFactoryLabelProvider.isLabelProperty(element, property);
+}
+«ENDDEFINE»
+
+«DEFINE METLP_removeListener FOR gmfgen::GenDiagram-»
+	«EXPAND xpt::Common::generatedMemberComment»
+public void removeListener(org.eclipse.jface.viewers.ILabelProviderListener listener) {
+	myWorkbenchLabelProvider.removeListener(listener);
+	myAdapterFactoryLabelProvider.removeListener(listener);
+}
+«ENDDEFINE»
+
+«DEFINE ModelFilesFilter FOR gmfgen::GenDiagram-»
+	«EXPAND xpt::Common::generatedClassComment»
+private class ModelFilesFilter extends org.eclipse.jface.viewers.ViewerFilter {
+
+	«EXPAND MFF_select-»
+
+	«EXPAND MFF_additions-»
+}
+«ENDDEFINE»
+
+«DEFINE MFF_select FOR gmfgen::GenDiagram-»
+	«EXPAND xpt::Common::generatedMemberComment»
+public boolean select(org.eclipse.jface.viewers.Viewer viewer, Object parentElement, Object element) {
+	if (element instanceof org.eclipse.core.resources.IContainer) {
+		return true;
+	}
+	if (element instanceof org.eclipse.core.resources.IFile) {
+		org.eclipse.core.resources.IFile file = (org.eclipse.core.resources.IFile) element;
+		return isValidModelFile(file);
+	}
+	return true;
+}
+«ENDDEFINE»
+
+«DEFINE OkButtonEnabler FOR gmfgen::GenDiagram-»
+	«EXPAND xpt::Common::generatedClassComment»
+private class OkButtonEnabler implements org.eclipse.jface.viewers.ISelectionChangedListener {
+
+	«EXPAND OBE_selectionChanged-»
+
+	«EXPAND OBE_canCreateShortcutNode-»
+
+	«EXPAND OBE_additions-»
+}
+«ENDDEFINE»
+
+«DEFINE OBE_selectionChanged FOR gmfgen::GenDiagram-»
+	«EXPAND xpt::Common::generatedMemberComment»
+public void selectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent event) {
+	if (event.getSelection() instanceof org.eclipse.jface.viewers.IStructuredSelection) {
+		org.eclipse.jface.viewers.IStructuredSelection selection = (org.eclipse.jface.viewers.IStructuredSelection) event.getSelection();
+		if (selection.size() == 1) {
+			Object selectedElement = selection.getFirstElement();
+			if (selectedElement instanceof org.eclipse.emf.edit.provider.IWrapperItemProvider) {
+				selectedElement = ((org.eclipse.emf.edit.provider.IWrapperItemProvider) selectedElement).getValue();
+			}
+			if (selectedElement instanceof org.eclipse.emf.ecore.util.FeatureMap.Entry) {
+				selectedElement = ((org.eclipse.emf.ecore.util.FeatureMap.Entry) selectedElement).getValue();
+			}
+			if (selectedElement instanceof org.eclipse.emf.ecore.EObject) {
+				org.eclipse.emf.ecore.EObject selectedModelElement = (org.eclipse.emf.ecore.EObject) selectedElement;
+				setOkButtonEnabled(canCreateShortcutNode(selectedModelElement));
+				mySelectedModelElementURI = org.eclipse.emf.ecore.util.EcoreUtil.getURI(selectedModelElement);
+				return;
+			}
+		}
+	}
+	mySelectedModelElementURI = null;
+	setOkButtonEnabled(false);
+}
+«ENDDEFINE»
+
+«DEFINE OBE_canCreateShortcutNode FOR gmfgen::GenDiagram-»
+«EXPAND xpt::Common::generatedMemberComment»
+private boolean canCreateShortcutNode(org.eclipse.emf.ecore.EObject modelElement) {
+	if (myGraphicalViewer.getEditPartRegistry().get(modelElement) != null) {
+		return false;
+	}
+	org.eclipse.gmf.runtime.lite.commands.CreateNotationalElementCommand command = getCreateShortcutCommand(modelElement);
+	return command != null && command.canExecute();
+}
+«ENDDEFINE»
+
+«DEFINE METCP_additions FOR gmfgen::GenDiagram-»
+«ENDDEFINE»
+
+«DEFINE METLP_additions FOR gmfgen::GenDiagram-»
+«ENDDEFINE»
+
+«DEFINE MFF_additions FOR gmfgen::GenDiagram-»
+«ENDDEFINE»
+
+«DEFINE OBE_additions FOR gmfgen::GenDiagram-»
+«ENDDEFINE»
+
+«DEFINE additions FOR gmfgen::GenDiagram-»
+«ENDDEFINE»
+
+«DEFINE i18nValues FOR gmfgen::GenDiagram-»
+«IF !isRichClientPlatform()-»
+«EXPAND xpt::Externalizer::messageEntry(titleKey(i18nKeyForSelectModelElement(this)), "Select model element")-»
+«ENDIF-»
+«ENDDEFINE»
+
+«DEFINE i18nAccessors FOR gmfgen::GenDiagram-»
+«IF !isRichClientPlatform()-»
+	«EXPAND xpt::Externalizer::accessorField(titleKey(i18nKeyForSelectModelElement(this)))-»
+«ENDIF-»
+«ENDDEFINE»