ref #6909 migrate taxon navigator context menu
[taxeditor.git] / eu.etaxonomy.taxeditor.navigation / src / main / java / eu / etaxonomy / taxeditor / navigation / navigator / e4 / TaxonNavigatorE4.java
index a6ed279e9659b80b2aad29637f23f5582c904616..5d563134ea7e042172b50576d5e7362ee9233ad5 100644 (file)
@@ -28,6 +28,9 @@ import javax.inject.Inject;
 import org.eclipse.core.runtime.IAdaptable;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.e4.ui.di.Focus;
+import org.eclipse.e4.ui.services.EMenuService;
+import org.eclipse.e4.ui.workbench.modeling.ESelectionService;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
 import org.eclipse.jface.viewers.TreePath;
 import org.eclipse.jface.viewers.TreeViewer;
 import org.eclipse.swt.SWT;
@@ -49,6 +52,7 @@ import eu.etaxonomy.cdm.model.taxon.TaxonNode;
 import eu.etaxonomy.cdm.model.taxon.TaxonNodeByNameComparator;
 import eu.etaxonomy.cdm.model.taxon.TaxonNodeByRankAndNameComparator;
 import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.model.DataChangeBridge;
 import eu.etaxonomy.taxeditor.model.IDataChangeBehavior;
 import eu.etaxonomy.taxeditor.navigation.NavigationUtil;
@@ -94,12 +98,17 @@ public class TaxonNavigatorE4 implements
 
        private TreeViewer viewer;
 
+    @Inject
+    private ESelectionService selService;
+
+    private ISelectionChangedListener selectionChangedListener;
+
        @Inject
     public TaxonNavigatorE4() {
     }
 
        @PostConstruct
-       private void create(Composite parent){
+       private void create(Composite parent, EMenuService menuService){
            FillLayout layout = new FillLayout();
            layout.marginHeight = 0;
            layout.marginWidth = 0;
@@ -109,6 +118,17 @@ public class TaxonNavigatorE4 implements
            viewer = new TreeViewer(parent);
            viewer.getControl().setLayoutData(LayoutConstants.FILL());
 
+           viewer.setContentProvider(new TaxonNavigatorContentProviderE4());
+        viewer.setLabelProvider(new TaxonNavigatorLabelProviderE4());
+        viewer.setInput(getInitialInput());
+
+        //propagate selection
+        selectionChangedListener = (event -> selService.setSelection(AbstractUtility.getElementsFromSelectionChangedEvent(event)));
+        viewer.addSelectionChangedListener(selectionChangedListener);
+
+        //create context menu
+        menuService.registerContextMenu(viewer.getControl(), "eu.etaxonomy.taxeditor.navigator.popupmenu.taxonnavigator");
+
            init();
        }
 
@@ -150,10 +170,6 @@ public class TaxonNavigatorE4 implements
                    CdmApplicationState.getCurrentDataChangeService().register(this);
                }
                CdmStore.getLoginManager().addObserver(this);
-
-               viewer.setContentProvider(new TaxonNavigatorContentProviderE4());
-               viewer.setLabelProvider(new TaxonNavigatorLabelProviderE4());
-               viewer.setInput(getInitialInput());
        }
 
        /**