1 package eu
.etaxonomy
.taxeditor
.editor
.name
.handler
;
3 import org
.apache
.log4j
.Logger
;
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
.jface
.viewers
.StructuredSelection
;
8 import org
.eclipse
.swt
.widgets
.Shell
;
9 import org
.eclipse
.ui
.IEditorInput
;
10 import org
.eclipse
.ui
.handlers
.HandlerUtil
;
12 import eu
.etaxonomy
.cdm
.model
.common
.CdmBase
;
13 import eu
.etaxonomy
.cdm
.model
.taxon
.Synonym
;
14 import eu
.etaxonomy
.cdm
.model
.taxon
.Taxon
;
15 import eu
.etaxonomy
.cdm
.model
.taxon
.TaxonNode
;
16 import eu
.etaxonomy
.taxeditor
.editor
.EditorUtil
;
17 import eu
.etaxonomy
.taxeditor
.editor
.MultiPageTaxonEditor
;
18 import eu
.etaxonomy
.taxeditor
.editor
.TaxonEditorInput
;
19 import eu
.etaxonomy
.taxeditor
.editor
.name
.operation
.MoveSynonymToAnotherAcceptedTaxonOperation
;
20 import eu
.etaxonomy
.taxeditor
.model
.AbstractUtility
;
21 import eu
.etaxonomy
.taxeditor
.operation
.IPostOperationEnabled
;
22 import eu
.etaxonomy
.taxeditor
.ui
.dialog
.selection
.TaxonNodeSelectionDialog
;
24 public class MoveSynonymToAnotherAcceptedTaxonHandler
extends AbstractHandler
implements IPostOperationEnabled
{
25 private static final Logger logger
= Logger
26 .getLogger(MoveSynonymToAnotherAcceptedTaxonHandler
.class);
27 private MultiPageTaxonEditor editor
;
30 public Object
execute(ExecutionEvent event
) throws ExecutionException
{
31 editor
= (MultiPageTaxonEditor
) HandlerUtil
.getActiveEditor(event
);
32 Shell shell
= HandlerUtil
.getActiveShell(event
);
33 IEditorInput input
= editor
.getEditorInput();
34 if (!EditorUtil
.forceUserSave(editor
, shell
)) {
38 if (!(input
instanceof TaxonEditorInput
)) {
39 logger
.error("Editor input is not TaxonEditorInput");
43 // Get synonym from selection
44 StructuredSelection selection
= (StructuredSelection
) HandlerUtil
.getCurrentSelection(event
);
45 if (!(selection
.getFirstElement() instanceof Synonym
)) {
46 logger
.error("Selection does not contain a Synonym");
50 Synonym synonym
= (Synonym
) selection
.getFirstElement();
51 TaxonNode newParentNode
= TaxonNodeSelectionDialog
.select(HandlerUtil
.getActiveShell(event
), editor
.getConversationHolder(), "Select new accepted taxon", null, null, ((TaxonEditorInput
)input
).getTaxonNode().getClassification());
52 if(newParentNode
!=null){
53 Taxon oldParent
= ((TaxonEditorInput
)input
).getTaxon();
55 MoveSynonymToAnotherAcceptedTaxonOperation operation
= new MoveSynonymToAnotherAcceptedTaxonOperation("Change accepted Taxon of Synonym", EditorUtil
.getUndoContext(),
56 oldParent
.getUuid(), synonym
.getUuid(), newParentNode
.getTaxon(), editor
);
58 AbstractUtility
.executeOperation(operation
);
65 public boolean postOperation(CdmBase objectAffectedByOperation
) {
66 // TODO Auto-generated method stub
71 public boolean onComplete() {
72 // TODO Auto-generated method stub