From: Patrick Plitzner Date: Mon, 14 Sep 2015 14:28:12 +0000 (+0200) Subject: Open a newly created specimen in specimen editor X-Git-Tag: remoting-3.10.0~5^2~3 X-Git-Url: https://dev.e-taxonomy.eu/gitweb/taxeditor.git/commitdiff_plain/34014adad86172b1258b572bf9235cdd54ab0030 Open a newly created specimen in specimen editor --- diff --git a/eu.etaxonomy.taxeditor.editor/plugin.xml b/eu.etaxonomy.taxeditor.editor/plugin.xml index 66def4730..e681c8a01 100644 --- a/eu.etaxonomy.taxeditor.editor/plugin.xml +++ b/eu.etaxonomy.taxeditor.editor/plugin.xml @@ -1453,8 +1453,27 @@ id="eu.etaxonomy.taxeditor.editor.view.descriptive.command.moveDescriptionElements" name="%command.name.12"> + + + + + + + + selectionIterator = ((IStructuredSelection) currentSelection).iterator(); - Set selectedElementUUIDs = new HashSet(); - while(selectionIterator.hasNext()){ - Object object = selectionIterator.next(); - if(object instanceof SpecimenOrObservationBase){ - selectedElementUUIDs.add(((SpecimenOrObservationBase) object).getUuid()); - } - else if(object instanceof IndividualsAssociation){ - SpecimenOrObservationBase specimen = ((IndividualsAssociation) object).getAssociatedSpecimenOrObservation(); - if(specimen!=null){ - selectedElementUUIDs.add(specimen.getUuid()); + Set selectedElementUUIDs = new HashSet(); + //check if parameter is set + Object parameter = event.getObjectParameterForExecution("eu.etaxonomy.taxeditor.specimenUuidParameter"); + if(parameter instanceof UUID){ + selectedElementUUIDs.add((UUID) parameter); + } + else{ + //if not, try with current selection + ISelection currentSelection = HandlerUtil.getCurrentSelection(event); + if(currentSelection instanceof IStructuredSelection){ + Iterator selectionIterator = ((IStructuredSelection) currentSelection).iterator(); + while(selectionIterator.hasNext()){ + Object object = selectionIterator.next(); + if(object instanceof SpecimenOrObservationBase){ + selectedElementUUIDs.add(((SpecimenOrObservationBase) object).getUuid()); + } + else if(object instanceof IndividualsAssociation){ + SpecimenOrObservationBase specimen = ((IndividualsAssociation) object).getAssociatedSpecimenOrObservation(); + if(specimen!=null){ + selectedElementUUIDs.add(specimen.getUuid()); + } } } } - if(!selectedElementUUIDs.isEmpty()){ - DerivateViewEditorInput input = new DerivateViewEditorInput(selectedElementUUIDs); - try { - EditorUtil.open(input); - } catch (PartInitException e) { - MessagingUtils.error(OpenDerivateViewHandler.class, "Could not open Derivative Editor", e); - } catch (NullPointerException npe){ - MessagingUtils.messageDialog("Failed to open Editor", OpenDerivateViewHandler.class, "Could not open Derivative Editor. The derivate hierarchy is corrupted!", npe); - } - } - else{ - MessagingUtils.informationDialog("Empty selection", "No Specimen selected."); + } + if(!selectedElementUUIDs.isEmpty()){ + DerivateViewEditorInput input = new DerivateViewEditorInput(selectedElementUUIDs); + try { + EditorUtil.open(input); + } catch (PartInitException e) { + MessagingUtils.error(OpenDerivateViewHandler.class, "Could not open Derivative Editor", e); + } catch (NullPointerException npe){ + MessagingUtils.messageDialog("Failed to open Editor", OpenDerivateViewHandler.class, "Could not open Derivative Editor. The derivate hierarchy is corrupted!", npe); } } + else{ + MessagingUtils.informationDialog("Empty selection", "No Specimen selected."); + } return null; } diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/handler/UuidParameterConverter.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/handler/UuidParameterConverter.java new file mode 100644 index 000000000..5bd3db11e --- /dev/null +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/handler/UuidParameterConverter.java @@ -0,0 +1,24 @@ +package eu.etaxonomy.taxeditor.handler; + +import java.util.UUID; + +import org.eclipse.core.commands.AbstractParameterValueConverter; +import org.eclipse.core.commands.ParameterValueConversionException; + +public class UuidParameterConverter extends AbstractParameterValueConverter { + + public UuidParameterConverter() { + // TODO Auto-generated constructor stub + } + + @Override + public Object convertToObject(String parameterValue) throws ParameterValueConversionException { + return UUID.fromString(parameterValue); + } + + @Override + public String convertToString(Object parameterValue) throws ParameterValueConversionException { + return parameterValue.toString(); + } + +} diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewDerivedUnitBaseWizard.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewDerivedUnitBaseWizard.java index 3b9036faf..c4215fd34 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewDerivedUnitBaseWizard.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewDerivedUnitBaseWizard.java @@ -10,6 +10,21 @@ package eu.etaxonomy.taxeditor.newWizard; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + +import org.eclipse.core.commands.Command; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.commands.NotEnabledException; +import org.eclipse.core.commands.NotHandledException; +import org.eclipse.core.commands.ParameterizedCommand; +import org.eclipse.core.commands.common.NotDefinedException; +import org.eclipse.ui.IWorkbenchWindow; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.commands.ICommandService; +import org.eclipse.ui.handlers.IHandlerService; + import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade; import eu.etaxonomy.cdm.api.facade.DerivedUnitFacadeNotSupportedException; import eu.etaxonomy.cdm.api.service.IOccurrenceService; @@ -19,7 +34,9 @@ import eu.etaxonomy.cdm.model.occurrence.FieldUnit; import eu.etaxonomy.cdm.model.occurrence.MediaSpecimen; import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase; import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType; +import eu.etaxonomy.taxeditor.model.AbstractUtility; import eu.etaxonomy.taxeditor.model.IDerivedUnitFacadePart; +import eu.etaxonomy.taxeditor.model.MessagingUtils; import eu.etaxonomy.taxeditor.preference.PreferencesUtil; import eu.etaxonomy.taxeditor.store.CdmStore; import eu.etaxonomy.taxeditor.ui.section.occurrence.DerivedUnitBaseWizardPage; @@ -27,6 +44,7 @@ import eu.etaxonomy.taxeditor.ui.section.occurrence.DerivedUnitGeneralWizardPage import eu.etaxonomy.taxeditor.ui.section.occurrence.FieldUnitGeneralWizardPage; import eu.etaxonomy.taxeditor.ui.section.occurrence.FieldUnitWizardPage; import eu.etaxonomy.taxeditor.ui.section.occurrence.GatheringEventWizardPage; +import eu.etaxonomy.taxeditor.view.derivateSearch.DerivateSearchCompositeController; /** * @author n.hoffmann @@ -99,5 +117,38 @@ public class NewDerivedUnitBaseWizard extends AbstractNewEntityWizard parameters = new HashMap(); + parameters.put("eu.etaxonomy.taxeditor.specimenUuidParameter", getEntity().getUuid()); + ParameterizedCommand parameterizedCommand = ParameterizedCommand.generateCommand(command, parameters); + + //execute the command + try { + handlerService.executeCommand(parameterizedCommand, 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); + } + + return performFinish; + } + }