ref #6925 Inject context into operations to allow sync/async execution
[taxeditor.git] / eu.etaxonomy.taxeditor.navigation / src / main / java / eu / etaxonomy / taxeditor / navigation / navigator / e4 / TaxonNavigatorE4.java
index 5c4a5c15e1986f9a0b8f8d9490d9f3434ab4256f..0a6149e952e7031cb504b2ce790cf0b141790862 100644 (file)
@@ -30,7 +30,9 @@ 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.ISelection;
 import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.TreePath;
 import org.eclipse.jface.viewers.TreeViewer;
 import org.eclipse.swt.SWT;
@@ -45,6 +47,7 @@ import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
 import eu.etaxonomy.cdm.api.service.IClassificationService;
 import eu.etaxonomy.cdm.model.common.CdmBase;
+import eu.etaxonomy.cdm.model.common.ICdmBase;
 import eu.etaxonomy.cdm.model.common.ITreeNode;
 import eu.etaxonomy.cdm.model.taxon.Classification;
 import eu.etaxonomy.cdm.model.taxon.TaxonNaturalComparator;
@@ -69,12 +72,10 @@ import eu.etaxonomy.taxeditor.store.LoginManager;
 import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
 
 /**
- * Taxonomic tree implementation using Common Navigator Framework.
  *
- * @author p.ciardelli
- * @author n.hoffmann
- * @created 02.06.2009
- * @version 1.0+-
+ * @author pplitzner
+ * @since Sep 7, 2017
+ *
  */
 public class TaxonNavigatorE4 implements
                IPostOperationEnabled, IConversationEnabled, Observer,
@@ -90,8 +91,6 @@ public class TaxonNavigatorE4 implements
 
        private ICdmEntitySession cdmEntitySession;
 
-       private String partNameCache;
-
        private IDataChangeBehavior dataChangeBehavior;
 
        private Root root;
@@ -121,6 +120,15 @@ public class TaxonNavigatorE4 implements
 
            viewer.setContentProvider(new TaxonNavigatorContentProviderE4());
         viewer.setLabelProvider(new TaxonNavigatorLabelProviderE4());
+        viewer.addDoubleClickListener(event->{
+            ISelection selection = event.getSelection();
+            if(selection instanceof IStructuredSelection){
+                Object firstElement = ((IStructuredSelection) selection).getFirstElement();
+                if(firstElement instanceof ICdmBase){
+                    NavigationUtil.openEditor((ICdmBase) firstElement, viewer.getControl().getShell());
+                }
+            }
+        });
 
         //propagate selection
         selectionChangedListener = (event -> selService.setSelection(event.getSelection()));
@@ -128,6 +136,7 @@ public class TaxonNavigatorE4 implements
 
         //create context menu
         menuService.registerContextMenu(viewer.getControl(), "eu.etaxonomy.taxeditor.navigator.popupmenu.taxonnavigator");
+        menuService.registerContextMenu(viewer.getControl(), "eu.etaxonomy.taxeditor.store.menu.import");
 
            init();
        }
@@ -324,23 +333,6 @@ public class TaxonNavigatorE4 implements
                return true;
        }
 
-       //FIXME E4 migrate double click
-//     /** {@inheritDoc} */
-//     @Override
-//     protected void handleDoubleClick(DoubleClickEvent event) {
-//             ISelection selection = event.getSelection();
-//             if(selection instanceof IStructuredSelection){
-//                     Object firstElement = ((IStructuredSelection) selection).getFirstElement();
-//                     if(firstElement instanceof ICdmBase){
-//                             NavigationUtil.openEditor((ICdmBase) firstElement);
-//                     }
-//             }
-//             // If the double click is passed up to the super-class it will
-//             // expand/collapse trees.
-//             // We do not want that
-//             // super.handleDoubleClick(anEvent);
-//     }
-
        @Override
        public boolean onComplete() {
                return true;