package eu.etaxonomy.taxeditor.editor.view.descriptive;
+import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
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;
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;
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;
// 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)