diff options
author | Tobias Schwarz | 2012-11-29 09:05:06 +0000 |
---|---|---|
committer | Tobias Schwarz | 2012-11-29 09:06:22 +0000 |
commit | a53e72105fa2d1adc6beb9d4a546a224bde8c516 (patch) | |
tree | 382e0fa22064920e02fc48ad949eb6eb723978fd /target_explorer/plugins/org.eclipse.tcf.te.launch.ui | |
parent | 230a088674b8c456739baec26486d1a5994c0245 (diff) | |
download | org.eclipse.tcf-a53e72105fa2d1adc6beb9d4a546a224bde8c516.tar.gz org.eclipse.tcf-a53e72105fa2d1adc6beb9d4a546a224bde8c516.tar.xz org.eclipse.tcf-a53e72105fa2d1adc6beb9d4a546a224bde8c516.zip |
[Taregt Explorer] introduce IPropertiesHandlerDelegate to be able to
switch to correct editor page and set the right selection
Diffstat (limited to 'target_explorer/plugins/org.eclipse.tcf.te.launch.ui')
4 files changed, 125 insertions, 0 deletions
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.launch.ui/META-INF/MANIFEST.MF b/target_explorer/plugins/org.eclipse.tcf.te.launch.ui/META-INF/MANIFEST.MF index b74a9985e..5bad8a2cf 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.launch.ui/META-INF/MANIFEST.MF +++ b/target_explorer/plugins/org.eclipse.tcf.te.launch.ui/META-INF/MANIFEST.MF @@ -45,6 +45,7 @@ Export-Package: org.eclipse.tcf.te.launch.ui.activator;x-internal:=true, org.eclipse.tcf.te.launch.ui.nls;x-internal:=true, org.eclipse.tcf.te.launch.ui.properties, org.eclipse.tcf.te.launch.ui.selection, + org.eclipse.tcf.te.launch.ui.services, org.eclipse.tcf.te.launch.ui.tabs, org.eclipse.tcf.te.launch.ui.tabs.filetransfers, org.eclipse.tcf.te.launch.ui.tabs.launchcontext, diff --git a/target_explorer/plugins/org.eclipse.tcf.te.launch.ui/plugin.xml b/target_explorer/plugins/org.eclipse.tcf.te.launch.ui/plugin.xml index df7d82d3c..198bf65c5 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.launch.ui/plugin.xml +++ b/target_explorer/plugins/org.eclipse.tcf.te.launch.ui/plugin.xml @@ -28,6 +28,21 @@ </propertyTester> </extension> +<!-- Service contributions --> + <extension point="org.eclipse.tcf.te.runtime.services.services"> + <service + class="org.eclipse.tcf.te.launch.ui.services.UIService" + id="org.eclipse.tcf.te.launch.uiservice"> + <serviceType class="org.eclipse.tcf.te.runtime.services.interfaces.IUIService"/> + <enablement> + <or> + <instanceof value="org.eclipse.tcf.te.launch.ui.model.LaunchModel"/> + <instanceof value="org.eclipse.tcf.te.launch.ui.model.LaunchNode"/> + </or> + </enablement> + </service> + </extension> + <!-- Editor page contributions --> <extension point="org.eclipse.tcf.te.ui.views.editorPages"> <editorPage diff --git a/target_explorer/plugins/org.eclipse.tcf.te.launch.ui/src/org/eclipse/tcf/te/launch/ui/handler/PropertiesHandlerDelegate.java b/target_explorer/plugins/org.eclipse.tcf.te.launch.ui/src/org/eclipse/tcf/te/launch/ui/handler/PropertiesHandlerDelegate.java new file mode 100644 index 000000000..d636806b7 --- /dev/null +++ b/target_explorer/plugins/org.eclipse.tcf.te.launch.ui/src/org/eclipse/tcf/te/launch/ui/handler/PropertiesHandlerDelegate.java @@ -0,0 +1,71 @@ +/** + * PropertiesHandlerDelegate.java + * Created on Jan 25, 2012 + * + * Copyright (c) 2012 Wind River Systems, Inc. + * + * The right to copy, distribute, modify, or otherwise make use + * of this software may be licensed only pursuant to the terms + * of an applicable Wind River license agreement. + */ +package org.eclipse.tcf.te.launch.ui.handler; + +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.jface.viewers.Viewer; +import org.eclipse.tcf.te.launch.ui.internal.pages.LaunchExplorerEditorPage; +import org.eclipse.tcf.te.launch.ui.model.LaunchModel; +import org.eclipse.tcf.te.launch.ui.model.LaunchNode; +import org.eclipse.tcf.te.ui.interfaces.handler.IPropertiesHandlerDelegate; +import org.eclipse.tcf.te.ui.swt.DisplayUtil; +import org.eclipse.tcf.te.ui.views.editor.Editor; +import org.eclipse.tcf.te.ui.views.editor.EditorInput; +import org.eclipse.ui.IEditorInput; +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.forms.editor.FormEditor; +import org.eclipse.ui.forms.editor.IFormPage; + +/** + * Launch properties command handler implementation. + */ +public class PropertiesHandlerDelegate implements IPropertiesHandlerDelegate { + + /* (non-Javadoc) + * @see org.eclipse.tcf.te.ui.interfaces.handler.IPropertiesHandlerDelegate#getEditorInput(java.lang.Object) + */ + @Override + public IEditorInput getEditorInput(Object element) { + if (element instanceof LaunchModel) { + return new EditorInput(((LaunchModel)element).getModelRoot()); + } + if (element instanceof LaunchNode) { + return new EditorInput(((LaunchNode)element).getModel().getModelRoot()); + } + return new EditorInput(element); + } + + /* (non-Javadoc) + * @see org.eclipse.tcf.te.ui.interfaces.handler.IPropertiesHandlerDelegate#postOpenProperties(org.eclipse.ui.IEditorPart, java.lang.Object) + */ + @Override + public void postOpenProperties(IEditorPart editor, final Object element) { + if (editor instanceof FormEditor) { + final FormEditor formEditor = (FormEditor)editor; + DisplayUtil.safeAsyncExec(new Runnable() { + @Override + public void run() { + IFormPage page = formEditor.setActivePage("org.eclipse.tcf.te.launch.ui.LaunchEditorPage"); //$NON-NLS-1$ + // If the element is a context node, select the node + if (page != null && element instanceof LaunchModel || element instanceof LaunchNode) { + Viewer viewer = ((LaunchExplorerEditorPage)page).getTreeControl().getViewer(); + if (viewer != null) { + viewer.setSelection(new StructuredSelection(element), true); + } + } + else if (formEditor instanceof Editor) { + ((Editor)formEditor).setActivePage(0); + } + } + }); + } + } +} diff --git a/target_explorer/plugins/org.eclipse.tcf.te.launch.ui/src/org/eclipse/tcf/te/launch/ui/services/UIService.java b/target_explorer/plugins/org.eclipse.tcf.te.launch.ui/src/org/eclipse/tcf/te/launch/ui/services/UIService.java new file mode 100644 index 000000000..6b8fb49ba --- /dev/null +++ b/target_explorer/plugins/org.eclipse.tcf.te.launch.ui/src/org/eclipse/tcf/te/launch/ui/services/UIService.java @@ -0,0 +1,38 @@ +/** + * UIService.java + * Created on Nov 15, 2012 + * + * Copyright (c) 2012 Wind River Systems, Inc. + * + * The right to copy, distribute, modify, or otherwise make use + * of this software may be licensed only pursuant to the terms + * of an applicable Wind River license agreement. + */ +package org.eclipse.tcf.te.launch.ui.services; + +import org.eclipse.tcf.te.launch.ui.handler.PropertiesHandlerDelegate; +import org.eclipse.tcf.te.runtime.services.AbstractService; +import org.eclipse.tcf.te.runtime.services.interfaces.IUIService; +import org.eclipse.tcf.te.ui.interfaces.handler.IPropertiesHandlerDelegate; + +/** + * UI service implementation. + */ +public class UIService extends AbstractService implements IUIService { + private final IPropertiesHandlerDelegate propertiesHandlerDelegate = new PropertiesHandlerDelegate(); + + /* (non-Javadoc) + * @see org.eclipse.tcf.te.runtime.services.interfaces.IUIService#getDelegate(java.lang.Object, java.lang.Class) + */ + @SuppressWarnings("unchecked") + @Override + public <V> V getDelegate(Object context, Class<? extends V> clazz) { + + if (IPropertiesHandlerDelegate.class.isAssignableFrom(clazz)) { + return (V) propertiesHandlerDelegate; + } + + return null; + } + +} |