From 55a3c3cf584ab7ba531136417e5fd214d58c37b6 Mon Sep 17 00:00:00 2001
From: Patrick Plitzner
Date: Tue, 5 Apr 2016 16:37:25 +0200
Subject: [PATCH] Add "Open in..." to taxon search #5616
---
eu.etaxonomy.taxeditor.navigation/plugin.xml | 12 ++++++-----
.../navigation/search/SearchResultView.java | 14 ++-----------
.../taxeditor/view/CdmViewerContextMenu.java | 20 ++++++++++++++++++-
.../taxeditor/view/CdmViewerUtil.java | 20 +++++++++++++++++++
4 files changed, 48 insertions(+), 18 deletions(-)
diff --git a/eu.etaxonomy.taxeditor.navigation/plugin.xml b/eu.etaxonomy.taxeditor.navigation/plugin.xml
index bb5599054..c01bb7ad9 100644
--- a/eu.etaxonomy.taxeditor.navigation/plugin.xml
+++ b/eu.etaxonomy.taxeditor.navigation/plugin.xml
@@ -90,11 +90,13 @@
-
-
+
+
+
diff --git a/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/search/SearchResultView.java b/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/search/SearchResultView.java
index 8651303a0..45925d809 100644
--- a/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/search/SearchResultView.java
+++ b/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/search/SearchResultView.java
@@ -38,12 +38,8 @@ import org.eclipse.ui.part.ViewPart;
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
-import eu.etaxonomy.cdm.api.service.ITaxonService;
import eu.etaxonomy.cdm.api.service.config.IFindTaxaAndNamesConfigurator;
import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
-import eu.etaxonomy.cdm.model.taxon.Synonym;
-import eu.etaxonomy.cdm.model.taxon.Taxon;
-import eu.etaxonomy.cdm.model.taxon.TaxonBase;
import eu.etaxonomy.cdm.persistence.dto.UuidAndTitleCache;
import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
import eu.etaxonomy.cdm.persistence.query.MatchMode;
@@ -123,14 +119,8 @@ public class SearchResultView extends ViewPart implements IConversationEnabled{
public void doubleClick(DoubleClickEvent event) {
if(event.getSelection() instanceof IStructuredSelection){
Object selectedObject = ((IStructuredSelection) event.getSelection()).getFirstElement();
- if (selectedObject instanceof UuidAndTitleCache){
- Class type = ((UuidAndTitleCache) selectedObject).getType();
- if(type == Taxon.class || type == Synonym.class){
- TaxonBase taxonBase = CdmStore.getService(ITaxonService.class).load(((UuidAndTitleCache) selectedObject).getUuid());
- CdmViewerChooser chooser = new CdmViewerChooser(getSite().getShell());
- chooser.chooseViewer(taxonBase);
- }
- }
+ CdmViewerChooser chooser = new CdmViewerChooser(getSite().getShell());
+ chooser.chooseViewer(selectedObject);
}
}
});
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/CdmViewerContextMenu.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/CdmViewerContextMenu.java
index bfe10e7cd..13591957a 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/CdmViewerContextMenu.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/CdmViewerContextMenu.java
@@ -22,9 +22,16 @@ import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.actions.CompoundContributionItem;
import org.eclipse.ui.handlers.IHandlerService;
+import eu.etaxonomy.cdm.api.service.IOccurrenceService;
+import eu.etaxonomy.cdm.api.service.ITaxonService;
import eu.etaxonomy.cdm.model.common.ICdmBase;
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
+import eu.etaxonomy.cdm.model.taxon.Synonym;
+import eu.etaxonomy.cdm.model.taxon.Taxon;
+import eu.etaxonomy.cdm.persistence.dto.UuidAndTitleCache;
import eu.etaxonomy.taxeditor.Messages;
import eu.etaxonomy.taxeditor.model.MessagingUtils;
+import eu.etaxonomy.taxeditor.store.CdmStore;
/**
* Generic context menu for opening elements in the taxeditor.
@@ -78,7 +85,7 @@ public class CdmViewerContextMenu extends CompoundContributionItem {
private final class CommandInvoker extends SelectionAdapter {
private final Command command;
- private final Object selectedObject;
+ private Object selectedObject;
private CommandInvoker(Command command, Object selectedObject) {
this.command = command;
@@ -89,6 +96,17 @@ public class CdmViewerContextMenu extends CompoundContributionItem {
public void widgetSelected(SelectionEvent e) {
IHandlerService handlerService = (IHandlerService)PlatformUI.getWorkbench().getService(IHandlerService.class);
Map params = new HashMap();
+ //for generic UuidAndTitleCache objects try to load the object
+ if (selectedObject instanceof UuidAndTitleCache){
+ UuidAndTitleCache uuidAndTitleCache = (UuidAndTitleCache)selectedObject;
+ Class type = uuidAndTitleCache.getType();
+ if(type == Taxon.class || type == Synonym.class){
+ selectedObject = CdmStore.getService(ITaxonService.class).load(uuidAndTitleCache.getUuid());
+ }
+ else if(SpecimenOrObservationBase.class.isAssignableFrom(type)){
+ selectedObject = CdmStore.getService(IOccurrenceService.class).load(uuidAndTitleCache.getUuid());
+ }
+ }
if(selectedObject instanceof ICdmBase){
params.put(command.getId()+".uuid", ((ICdmBase) selectedObject).getUuid()); //$NON-NLS-1$
}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/CdmViewerUtil.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/CdmViewerUtil.java
index 8113b9703..698f94233 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/CdmViewerUtil.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/CdmViewerUtil.java
@@ -19,7 +19,14 @@ import org.eclipse.core.runtime.Platform;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.commands.ICommandService;
+import eu.etaxonomy.cdm.api.service.IOccurrenceService;
+import eu.etaxonomy.cdm.api.service.ITaxonService;
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
+import eu.etaxonomy.cdm.model.taxon.Synonym;
+import eu.etaxonomy.cdm.model.taxon.Taxon;
+import eu.etaxonomy.cdm.persistence.dto.UuidAndTitleCache;
import eu.etaxonomy.taxeditor.model.MessagingUtils;
+import eu.etaxonomy.taxeditor.store.CdmStore;
/**
* Scans eu.etaxonomy.taxeditor.store.cdmViewer extension point.
@@ -42,6 +49,19 @@ public class CdmViewerUtil {
Map commandViewerNameMap = new HashMap();
if(input!=null){
+ //for generic UuidAndTitleCache objects try to load the object
+ if (input instanceof UuidAndTitleCache){
+ UuidAndTitleCache uuidAndTitleCache = (UuidAndTitleCache)input;
+ Class type = uuidAndTitleCache.getType();
+ if(type == Taxon.class || type == Synonym.class){
+ input = CdmStore.getService(ITaxonService.class).load(uuidAndTitleCache.getUuid());
+ }
+ else if(SpecimenOrObservationBase.class.isAssignableFrom(type)){
+ input = CdmStore.getService(IOccurrenceService.class).load(uuidAndTitleCache.getUuid());
+ }
+ }
+
+
IExtensionRegistry reg = Platform.getExtensionRegistry();
IConfigurationElement[] extensions = reg
.getConfigurationElementsFor("eu.etaxonomy.taxeditor.store.cdmViewer"); //$NON-NLS-1$
--
2.34.1