</or>
</visibleWhen>
</command>
+ <separator
+ name="eu.etaxonomy.taxeditor.editor.separator1">
+ </separator>
<dynamic
class="eu.etaxonomy.taxeditor.view.CdmViewerContextMenu"
id="eu.etaxonomy.taxeditor.editor.descriptive.cdmViewerContextMenu">
</with>
</activeWhen>
</handler>
+ <handler
+ class="eu.etaxonomy.taxeditor.editor.view.derivate.handler.OpenDerivativeEditorForDescriptionElement"
+ commandId="eu.etaxonomy.taxeditor.editor.openSpecimenEditor">
+ <activeWhen>
+ <with
+ variable="selection">
+ <reference
+ definitionId="isTaxonNode">
+ </reference>
+ </with>
+ </activeWhen>
+ </handler>
</extension>
<extension
name="%extension.name"
selection="eu.etaxonomy.cdm.model.description.IndividualsAssociation"
viewerName="Derivative Editor">
</viewCommandMapping>
+ <viewCommandMapping
+ commandId="eu.etaxonomy.taxeditor.editor.openSpecimenEditor"
+ selection="eu.etaxonomy.cdm.model.taxon.TaxonNode"
+ viewerName="Derivative Editor">
+ </viewCommandMapping>
</extension>
</plugin>
--- /dev/null
+package eu.etaxonomy.taxeditor.editor.view.derivate.handler;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.UUID;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.ui.PartInitException;
+
+import eu.etaxonomy.cdm.api.service.IOccurrenceService;
+import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
+import eu.etaxonomy.cdm.model.taxon.TaxonNode;
+import eu.etaxonomy.taxeditor.editor.EditorUtil;
+import eu.etaxonomy.taxeditor.editor.handler.OpenDerivateViewHandler;
+import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateViewEditorInput;
+import eu.etaxonomy.taxeditor.handler.defaultHandler.DefaultOpenHandlerBase;
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+
+public class OpenDerivativeEditorForTaxonNode extends DefaultOpenHandlerBase<TaxonNode> {
+
+ @Override
+ protected TaxonNode getEntity(UUID uuid) {
+ return CdmStore.getService(ITaxonNodeService.class).load(uuid);
+ }
+
+ @Override
+ protected void open(ExecutionEvent event, TaxonNode entity) {
+ List<SpecimenOrObservationBase> specimens = CdmStore.getService(IOccurrenceService.class).listByAssociatedTaxon(SpecimenOrObservationBase.class, null, entity.getTaxon(), null, null, null, null, null);
+ Collection<UUID> specimenUuids = new ArrayList<UUID>();
+ for (SpecimenOrObservationBase specimenOrObservationBase : specimens) {
+ specimenUuids.add(specimenOrObservationBase.getUuid());
+ }
+ try {
+ EditorUtil.open(new DerivateViewEditorInput(specimenUuids));
+ } catch (PartInitException e) {
+ MessagingUtils.error(OpenDerivateViewHandler.class, "Derivative Editor could not be opened", e);
+ }
+
+ }
+
+}