carbidecpp22devenv/plugins/org.eclipse.gmf.templates.legacy_1.0.0.v20090614-0839/codegen.templates/xpt/navigator/NavigatorLinkHelper.xpt
author cawthron
Fri, 04 Dec 2009 11:06:59 -0600
changeset 422 033392511bf7
permissions -rw-r--r--
add files for RCL_2_2

/*
 * 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:
 *    Alexander Shatalin (Borland) - initial API and implementation
 */

«IMPORT "http://www.eclipse.org/gmf/2008/GenModel"»
«EXTENSION xpt::navigator::Utils»

«DEFINE NavigatorLinkHelper FOR gmfgen::GenNavigator-»
	«EXPAND xpt::Common::copyright FOR editorGen-»
package «packageName»;

	«EXPAND xpt::Common::generatedClassComment»
public class «linkHelperClassName» implements org.eclipse.ui.navigator.ILinkHelper {

	«EXPAND xpt::navigator::getEditorInput::getEditorInput FOR editorGen-»

	«EXPAND findSelection-»
	
	«EXPAND activateEditor-»
	
	«EXPAND additions-»
}
«ENDDEFINE»

«DEFINE findSelection FOR gmfgen::GenNavigator-»
	«EXPAND xpt::Common::generatedMemberComment»
public org.eclipse.jface.viewers.IStructuredSelection findSelection(org.eclipse.ui.IEditorInput anInput) {
	«EXPAND defineDiagramDocument FOR editorGen.plugin-»
	«EXPAND findSelectionBody-»
}
«ENDDEFINE»

«DEFINE defineDiagramDocument FOR gmfgen::GenPlugin-»
org.eclipse.gmf.runtime.diagram.ui.resources.editor.document.IDiagramDocument document = «getActivatorQualifiedClassName()».getInstance().getDocumentProvider().getDiagramDocument(anInput);
«ENDDEFINE»

«DEFINE findSelectionBody FOR gmfgen::GenNavigator-»
	«EXPAND getDiagramSelection FOR getDiagramTopReference(this)-»
	return org.eclipse.jface.viewers.StructuredSelection.EMPTY;
«ENDDEFINE»

«REM»
	Linking with editor currently supported only for the navigators conteining top 
	reference to the diagram. In this case diagram node will be selected in navigator.
«ENDREM»
«DEFINE getDiagramSelection FOR gmfgen::GenNavigatorChildReference-»
«EXPAND getDiagram FOR navigator.editorGen-»
org.eclipse.core.resources.IFile file = org.eclipse.emf.workspace.util.WorkspaceSynchronizer.getFile(diagram.eResource());
if (file != null) {
	«IF isInsideGroup()-»
	«navigator.getNavigatorGroupQualifiedClassName()» parentGroup = new «navigator.getNavigatorGroupQualifiedClassName()»("«groupName»", "«groupIcon»", «EXPAND xpt::editor::VisualIDRegistry::modelID FOR navigator.editorGen.diagram», file);
	«ENDIF-»
	«navigator.getNavigatorItemQualifiedClassName()» item = new «navigator.getNavigatorItemQualifiedClassName()»(diagram, «IF isInsideGroup()»parentGroup«ELSE»file«ENDIF», false);
	«IF isInsideGroup()-»
	parentGroup.addChild(item);
	«ENDIF-»
	return new org.eclipse.jface.viewers.StructuredSelection(«IF isInsideGroup()»parentGroup«ELSE»item«ENDIF»);
}
«ENDDEFINE»

«DEFINE getDiagram FOR gmfgen::GenEditorGenerator-»
if (document == null) {
	return org.eclipse.jface.viewers.StructuredSelection.EMPTY;
}
org.eclipse.gmf.runtime.notation.Diagram diagram = document.getDiagram();
«ENDDEFINE»

«DEFINE activateEditor FOR gmfgen::GenNavigator-»
	«EXPAND xpt::Common::generatedMemberComment»
public void activateEditor(org.eclipse.ui.IWorkbenchPage aPage, org.eclipse.jface.viewers.IStructuredSelection aSelection) {
	if (aSelection == null || aSelection.isEmpty()) {
		return;
	}
	if (false == aSelection.getFirstElement() instanceof «getAbstractNavigatorItemQualifiedClassName()») {
		return;
	}
		
	«getAbstractNavigatorItemQualifiedClassName()» abstractNavigatorItem = («getAbstractNavigatorItemQualifiedClassName()») aSelection.getFirstElement();
	org.eclipse.gmf.runtime.notation.View navigatorView = null;
	if (abstractNavigatorItem instanceof «getNavigatorItemQualifiedClassName()») {
		navigatorView = ((«getNavigatorItemQualifiedClassName()») abstractNavigatorItem).getView();
	} else if (abstractNavigatorItem instanceof «getNavigatorGroupQualifiedClassName()») {
		«getNavigatorGroupQualifiedClassName()» navigatorGroup = («getNavigatorGroupQualifiedClassName()») abstractNavigatorItem;
		if (navigatorGroup.getParent() instanceof «getNavigatorItemQualifiedClassName()») {
			navigatorView = ((«getNavigatorItemQualifiedClassName()») navigatorGroup.getParent()).getView();
		}«EXPAND getViewFromShortcut-»
	}
	if (navigatorView == null) {
		return;
	}
	org.eclipse.ui.IEditorInput editorInput = getEditorInput(navigatorView.getDiagram());
	org.eclipse.ui.IEditorPart editor = aPage.findEditor(editorInput);
	if (editor == null) {
		return;
	}
	aPage.bringToTop(editor);
	if (editor instanceof «EXPAND diagramEditorClassFQName») {
		«EXPAND diagramEditorClassFQName» diagramEditor = («EXPAND diagramEditorClassFQName») editor;
		org.eclipse.emf.ecore.resource.ResourceSet diagramEditorResourceSet = diagramEditor.getEditingDomain().getResourceSet();
		org.eclipse.emf.ecore.EObject selectedView = diagramEditorResourceSet.getEObject(org.eclipse.emf.ecore.util.EcoreUtil.getURI(navigatorView), true);	
		if (selectedView == null) {
			return;
		}
		org.eclipse.gef.GraphicalViewer graphicalViewer = (org.eclipse.gef.GraphicalViewer) diagramEditor.getAdapter(org.eclipse.gef.GraphicalViewer.class);
		org.eclipse.gef.EditPart selectedEditPart = (org.eclipse.gef.EditPart) graphicalViewer.getEditPartRegistry().get(selectedView);
		if (selectedEditPart != null) {
			graphicalViewer.select(selectedEditPart);
		}
	}
}
«ENDDEFINE»

«DEFINE getViewFromShortcut FOR gmfgen::GenNavigator-»
	«IF editorGen.diagram.generateShortcutIcon()-»
else if (navigatorGroup.getParent() instanceof org.eclipse.core.runtime.IAdaptable) {
	navigatorView = (org.eclipse.gmf.runtime.notation.View) ((org.eclipse.core.runtime.IAdaptable) navigatorGroup.getParent()).getAdapter(org.eclipse.gmf.runtime.notation.View.class);
}
	«ENDIF-»
«ENDDEFINE»

«DEFINE diagramEditorClassFQName FOR gmfgen::GenNavigator»org.eclipse.gmf.runtime.diagram.ui.parts.DiagramEditor«ENDDEFINE»

«DEFINE additions FOR gmfgen::GenNavigator-»
«ENDDEFINE»