From f153f11a76f641a7be2feb709dbb0fea7114bbb4 Mon Sep 17 00:00:00 2001
From: Patrick Plitzner
Date: Tue, 5 Apr 2016 17:01:46 +0200
Subject: [PATCH] Correctly handle UuidAndTitleCache objects in "Open in..."
menu
---
.../taxeditor/view/CdmViewerChooser.java | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/CdmViewerChooser.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/CdmViewerChooser.java
index 63017075f..3d14e03a5 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/CdmViewerChooser.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/CdmViewerChooser.java
@@ -34,8 +34,15 @@ import org.eclipse.swt.widgets.Table;
import org.eclipse.ui.PlatformUI;
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.model.MessagingUtils;
+import eu.etaxonomy.taxeditor.store.CdmStore;
/**
* This class opens a popup dialog and provides the possibility to choose from a
@@ -84,6 +91,17 @@ public class CdmViewerChooser extends PopupDialog implements ISelectionChangedLi
}
private void executeCommand(Command command, Object input) {
+ //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());
+ }
+ }
//set uuid parameter
if(input instanceof ICdmBase){
Map params = new HashMap();
--
2.34.1