1 package eu
.etaxonomy
.taxeditor
.editor
.view
.derivate
.handler
;
3 import java
.util
.ArrayList
;
4 import java
.util
.Collection
;
8 import org
.eclipse
.e4
.ui
.workbench
.modeling
.EPartService
;
9 import org
.eclipse
.swt
.widgets
.Shell
;
11 import eu
.etaxonomy
.cdm
.api
.service
.IOccurrenceService
;
12 import eu
.etaxonomy
.cdm
.api
.service
.ITaxonNodeService
;
13 import eu
.etaxonomy
.cdm
.api
.service
.config
.FindOccurrencesConfigurator
;
14 import eu
.etaxonomy
.cdm
.model
.occurrence
.SpecimenOrObservationBase
;
15 import eu
.etaxonomy
.cdm
.model
.taxon
.TaxonNode
;
16 import eu
.etaxonomy
.taxeditor
.editor
.AppModelId
;
17 import eu
.etaxonomy
.taxeditor
.editor
.EditorUtil
;
18 import eu
.etaxonomy
.taxeditor
.editor
.l10n
.Messages
;
19 import eu
.etaxonomy
.taxeditor
.editor
.view
.derivate
.DerivateViewEditorInput
;
20 import eu
.etaxonomy
.taxeditor
.handler
.defaultHandler
.e4
.DefaultOpenHandlerBaseE4
;
21 import eu
.etaxonomy
.taxeditor
.preference
.IPreferenceKeys
;
22 import eu
.etaxonomy
.taxeditor
.preference
.PreferencesUtil
;
23 import eu
.etaxonomy
.taxeditor
.store
.CdmStore
;
25 public class OpenDerivativeEditorForTaxonNode
extends DefaultOpenHandlerBaseE4
<TaxonNode
> {
27 protected static final String OPEN_DERIVATIVE_EDITOR_FOR_TAXON_NODE_COULD_NOT_OPEN
= Messages
.OpenDerivativeEditorForTaxonNode_COULD_NOT_OPEN
;
30 protected TaxonNode
getEntity(UUID uuid
) {
31 return CdmStore
.getService(ITaxonNodeService
.class).load(uuid
);
35 protected void open(TaxonNode entity
, Shell shell
, EPartService partService
) {
36 FindOccurrencesConfigurator config
= new FindOccurrencesConfigurator();
37 UUID taxonUuid
= entity
.getTaxon().getUuid();
38 config
.setAssociatedTaxonUuid(taxonUuid
);
39 List
<SpecimenOrObservationBase
> specimens
= CdmStore
.getService(IOccurrenceService
.class).findByTitle(config
).getRecords();
40 Collection
<UUID
> specimenUuids
= new ArrayList
<UUID
>();
41 for (SpecimenOrObservationBase specimenOrObservationBase
: specimens
) {
42 specimenUuids
.add(specimenOrObservationBase
.getUuid());
44 DerivateViewEditorInput input
= new DerivateViewEditorInput(specimenUuids
, taxonUuid
);
45 EditorUtil
.openSpecimenEditor(input
, modelService
, partService
, application
);
52 protected boolean canExecute(TaxonNode entity
) {
53 return (entity
.getTaxon()!=null && PreferencesUtil
.getBooleanValue(IPreferenceKeys
.SHOW_SPECIMEN
));
57 protected String
getPartId() {
58 return AppModelId
.PARTDESCRIPTOR_EU_ETAXONOMY_TAXEDITOR_EDITOR_VIEW_DERIVATE_DERIVATEVIEW
;