1 package eu
.etaxonomy
.taxeditor
.editor
.handler
.defaultHandler
;
4 import org
.eclipse
.core
.commands
.AbstractHandler
;
5 import org
.eclipse
.core
.commands
.ExecutionEvent
;
6 import org
.eclipse
.core
.commands
.ExecutionException
;
7 import org
.eclipse
.core
.commands
.ParameterType
;
8 import org
.eclipse
.core
.commands
.common
.NotDefinedException
;
9 import org
.eclipse
.jface
.viewers
.ISelection
;
10 import org
.eclipse
.jface
.viewers
.IStructuredSelection
;
11 import org
.eclipse
.ui
.PartInitException
;
12 import org
.eclipse
.ui
.handlers
.HandlerUtil
;
14 import eu
.etaxonomy
.cdm
.api
.service
.ITaxonNodeService
;
15 import eu
.etaxonomy
.cdm
.api
.service
.ITaxonService
;
16 import eu
.etaxonomy
.cdm
.hibernate
.HibernateProxyHelper
;
17 import eu
.etaxonomy
.cdm
.model
.taxon
.Taxon
;
18 import eu
.etaxonomy
.cdm
.model
.taxon
.TaxonBase
;
19 import eu
.etaxonomy
.cdm
.model
.taxon
.TaxonNode
;
20 import eu
.etaxonomy
.taxeditor
.editor
.EditorUtil
;
21 import eu
.etaxonomy
.taxeditor
.editor
.TaxonEditorInput
;
22 import eu
.etaxonomy
.taxeditor
.handler
.defaultHandler
.DefaultOpenClassificationWizardHandler
;
23 import eu
.etaxonomy
.taxeditor
.model
.MessagingUtils
;
24 import eu
.etaxonomy
.taxeditor
.store
.CdmStore
;
27 public class DefaultOpenTaxonEditorHandler
extends AbstractHandler
{
30 public Object
execute(ExecutionEvent event
) throws ExecutionException
{
31 String commandId
= event
.getCommand().getId();
32 String uuidParameterId
= commandId
+".uuid";
33 //check if uuid parameter is set
34 if(event
.getParameter(uuidParameterId
)!=null){
35 Object object
= event
.getObjectParameterForExecution(uuidParameterId
);
36 ParameterType parameterType
;
38 parameterType
= event
.getCommand().getParameterType(uuidParameterId
);
39 if(parameterType
.isCompatible(object
)){
40 TaxonNode taxonNode
= CdmStore
.getService(ITaxonNodeService
.class).load((UUID
) object
);
42 openTaxonEditor(event
, taxonNode
.getTaxon().getUuid());
45 TaxonBase taxon
= CdmStore
.getService(ITaxonService
.class).load((UUID
) object
);
46 openTaxonEditor(event
, taxon
.getUuid());
49 } catch (NotDefinedException e
) {
50 MessagingUtils
.error(DefaultOpenClassificationWizardHandler
.class, "Error while opening classification!", e
);
53 //if not try current selection
55 ISelection selection
= HandlerUtil
.getCurrentSelection(event
);
57 if(selection
instanceof IStructuredSelection
){
58 final IStructuredSelection structuredSelection
= (IStructuredSelection
) selection
;
61 Object firstElement
= structuredSelection
.getFirstElement();
62 if(firstElement
instanceof TaxonBase
){
63 openTaxonEditor(event
, (HibernateProxyHelper
.deproxy(firstElement
, TaxonBase
.class).getUuid()));
65 else if(firstElement
instanceof TaxonNode
){
66 taxon
= (HibernateProxyHelper
.deproxy(firstElement
, TaxonNode
.class)).getTaxon();
67 openTaxonEditor(event
, taxon
.getUuid());
74 private void openTaxonEditor(ExecutionEvent event
, UUID taxonUuid
) {
75 TaxonEditorInput input
= TaxonEditorInput
.NewInstanceFromTaxonBase(taxonUuid
);
77 EditorUtil
.open(input
);
78 } catch (PartInitException e
) {
79 MessagingUtils
.error(DefaultOpenTaxonEditorHandler
.class, "Could not open taxon editor for taxon "+input
.getTaxon(), e
);