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