Bug 552176 - [Tools] Application model editor: Jump to list entries

add IOpenListener for E4PickList, CompositePartEditor list

Change-Id: Ibaf311eb001c81ad00a93dd3c3cf6b829e362be7
Signed-off-by: Benedikt Kuntz <benedikt.kuntz@airbus.com>
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/E4PickList.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/E4PickList.java
index f9200e1..cdf5173 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/E4PickList.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/E4PickList.java
@@ -113,6 +113,17 @@
 		final ObservableListContentProvider<?> cp = new ObservableListContentProvider<>();
 		viewer.setContentProvider(cp);
 
+		viewer.addOpenListener(event -> {
+			if (event.getSelection() instanceof IStructuredSelection) {
+				IStructuredSelection selection = (IStructuredSelection) event.getSelection();
+				ModelEditor editor = componentEditor.getEditor();
+				if (selection.getFirstElement() instanceof EObject && editor != null) {
+					EObject selected = (EObject) selection.getFirstElement();
+					editor.gotoEObject(ModelEditor.TAB_FORM, selected);
+				}
+			}
+		});
+
 		// enable tabbing and keyboard activation
 		this.focusCellMgr = new TableViewerFocusCellManager(viewer, new FocusCellOwnerDrawHighlighter(viewer),
 				new CellNavigationStrategy());
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/CompositePartEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/CompositePartEditor.java
index 11c8edb..02a03f2 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/CompositePartEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/CompositePartEditor.java
@@ -19,6 +19,7 @@
 import org.eclipse.e4.tools.emf.ui.internal.ResourceProvider;
 import org.eclipse.e4.tools.emf.ui.internal.common.ComponentLabelProvider;
 import org.eclipse.e4.tools.emf.ui.internal.common.FeatureClassLabelProvider;
+import org.eclipse.e4.tools.emf.ui.internal.common.ModelEditor;
 import org.eclipse.e4.tools.emf.ui.internal.common.component.ControlFactory.TextPasteHandler;
 import org.eclipse.e4.tools.emf.ui.internal.common.component.dialogs.PartIconDialogEditor;
 import org.eclipse.e4.tools.emf.ui.internal.common.uistructure.UIViewer;
@@ -356,6 +357,16 @@
 
 			viewer.setInput(E4Properties.<MPartSashContainerElement>children().observeDetail(getMaster()));
 
+			viewer.addOpenListener(event -> {
+				if (event.getSelection() instanceof IStructuredSelection) {
+					IStructuredSelection selection = (IStructuredSelection) event.getSelection();
+					if (selection.getFirstElement() instanceof EObject && getEditor() != null) {
+						EObject selected = (EObject) selection.getFirstElement();
+						getEditor().gotoEObject(ModelEditor.TAB_FORM, selected);
+					}
+				}
+			});
+
 			new Label(parent, SWT.NONE);
 
 			final Composite buttonCompBot = new Composite(parent, SWT.NONE);