Pre-select current classification for taxon node selection dialog
[taxeditor.git] / eu.etaxonomy.taxeditor.editor / src / main / java / eu / etaxonomy / taxeditor / editor / view / descriptive / handler / MoveDescriptionToOtherTaxonHandler.java
index c4b57e9cb4629968822bd35d951b0bbb9c407a00..281a1a22af684ee17f216d801181d1d9dc679a18 100644 (file)
@@ -22,10 +22,12 @@ import eu.etaxonomy.cdm.api.service.IDescriptionService;
 import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.description.DescriptionBase;
 import eu.etaxonomy.cdm.model.description.TaxonDescription;
+import eu.etaxonomy.cdm.model.taxon.Classification;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
 import eu.etaxonomy.taxeditor.editor.EditorUtil;
 import eu.etaxonomy.taxeditor.editor.MultiPageTaxonEditor;
 import eu.etaxonomy.taxeditor.editor.Page;
+import eu.etaxonomy.taxeditor.editor.TaxonEditorInput;
 import eu.etaxonomy.taxeditor.editor.name.TaxonNameEditor;
 import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.MoveDescriptionToOtherTaxonOperation;
 import eu.etaxonomy.taxeditor.model.AbstractUtility;
@@ -74,7 +76,7 @@ public class MoveDescriptionToOtherTaxonHandler extends AbstractHandler
                                }       else if (element instanceof DescriptionBase){
                                        uuid = ((DescriptionBase)element).getUuid();
                                }
-                               
+
                                if (uuid != null){
                                        descriptions.add((TaxonDescription) CdmStore.getService(IDescriptionService.class).load(uuid, null));
                                }
@@ -87,12 +89,21 @@ public class MoveDescriptionToOtherTaxonHandler extends AbstractHandler
                        List<UUID> excludeTaxa = new ArrayList<UUID>();
                        editor = (TaxonNameEditor) EditorUtil.getActiveEditorPage(Page.NAME);
                        excludeTaxa.add(descriptions.get(0).getTaxon().getUuid());
+
+                       //get current taxon node
+                       TaxonNode node = null;
+                       Classification classification = null;
+                       MultiPageTaxonEditor taxonEditor = EditorUtil.getActiveMultiPageTaxonEditor();
+            if(taxonEditor!=null){
+                node = ((TaxonEditorInput) taxonEditor.getEditorInput()).getTaxonNode();
+                classification = node.getClassification();
+            }
                        TaxonNode newAcceptedTaxonNode = TaxonNodeSelectionDialog.select(HandlerUtil.getActiveShell(event),
                                        editor.getConversationHolder(),
                                        "Choose the accepted taxon",
                                        excludeTaxa,
-                                       null,
-                                       null);
+                                       node,
+                                       classification);
 
                        if (newAcceptedTaxonNode == null) {
                                return null;