- added double-click functionality for IndividualsAsscociations which opens the...
[taxeditor.git] / eu.etaxonomy.taxeditor.editor / src / main / java / eu / etaxonomy / taxeditor / editor / view / descriptive / DescriptiveViewPart.java
index 4951bc8f944175bcd67ccf9fad829bf159cf94c5..c9320f10904cb28dd2db065db9cdc837884642fb 100644 (file)
@@ -10,6 +10,7 @@
 
 package eu.etaxonomy.taxeditor.editor.view.descriptive;
 
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -19,11 +20,14 @@ import org.eclipse.jface.action.IAction;
 import org.eclipse.jface.action.IToolBarManager;
 import org.eclipse.jface.action.MenuManager;
 import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.viewers.DoubleClickEvent;
+import org.eclipse.jface.viewers.IDoubleClickListener;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.ITreeContentProvider;
 import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.jface.viewers.TreeNode;
+import org.eclipse.jface.viewers.TreeSelection;
 import org.eclipse.jface.viewers.TreeViewer;
 import org.eclipse.jface.viewers.Viewer;
 import org.eclipse.swt.SWT;
@@ -36,15 +40,19 @@ import org.eclipse.swt.widgets.Menu;
 import org.eclipse.swt.widgets.Tree;
 import org.eclipse.ui.IWorkbenchActionConstants;
 import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.PartInitException;
 
 import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.description.DescriptionBase;
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
 import eu.etaxonomy.cdm.model.description.IDescribable;
+import eu.etaxonomy.cdm.model.description.IndividualsAssociation;
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.taxeditor.editor.EditorUtil;
 import eu.etaxonomy.taxeditor.editor.view.checklist.ChecklistEditor;
 import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView;
+import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateViewEditorInput;
 import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;
 import eu.etaxonomy.taxeditor.model.FeatureNodeContainerTree;
@@ -52,6 +60,7 @@ import eu.etaxonomy.taxeditor.model.IPartContentHasDetails;
 import eu.etaxonomy.taxeditor.model.IPartContentHasFactualData;
 import eu.etaxonomy.taxeditor.model.IPartContentHasSupplementalData;
 import eu.etaxonomy.taxeditor.model.ImageResources;
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.view.AbstractCdmEditorViewPart;
 import eu.etaxonomy.taxeditor.view.detail.DetailsViewPart;
 import eu.etaxonomy.taxeditor.view.supplementaldata.SupplementalDataViewPart;
@@ -115,6 +124,41 @@ public class DescriptiveViewPart extends AbstractCdmEditorViewPart implements IP
 //             if(getEditor() != null){
 //                     viewer.setInput(getEditor().getEditorInput());
 //             }
+
+               viewer.addDoubleClickListener(new IDoubleClickListener() {
+            @Override
+            public void doubleClick(DoubleClickEvent event) {
+                //Open derivate editor when specimen description element is double clicked
+                TreeSelection selection = (TreeSelection) viewer.getSelection();
+                if(selection.getFirstElement() instanceof IndividualsAssociation){
+                    SpecimenOrObservationBase specimen = ((IndividualsAssociation)selection.getFirstElement()).getAssociatedSpecimenOrObservation();
+                    if(specimen!=null){
+                        try {
+                            EditorUtil.open(new DerivateViewEditorInput(Collections.singleton(specimen.getUuid())));
+                        } catch (PartInitException e) {
+                            MessagingUtils.error(DescriptiveViewPart.class, "Could not open Derivate Editor", e);
+                        }
+                    }
+
+
+                    //TODO: extend command to accept parameter to open editor
+//                    String commandId = "eu.etaxonomy.taxeditor.editor.handler.openDerivateView";
+//                    IHandlerService handlerService = (IHandlerService) AbstractUtility.getService(IHandlerService.class);
+//                    try {
+//                        handlerService.executeCommand(commandId, null);
+//                    } catch (ExecutionException e) {
+//                        MessagingUtils.error(DerivateSearchCompositeController.class, e);
+//                    } catch (NotDefinedException e) {
+//                        MessagingUtils.error(DerivateSearchCompositeController.class, e);
+//                    } catch (NotEnabledException e) {
+//                        MessagingUtils.error(DerivateSearchCompositeController.class, e);
+//                    } catch (NotHandledException e) {
+//                        MessagingUtils.error(DerivateSearchCompositeController.class, e);
+//                    }
+                }
+
+            }
+        });
        }
 
        /* (non-Javadoc)