Merge branch 'develop' into nameEditorE4
[taxeditor.git] / eu.etaxonomy.taxeditor.editor / src / main / java / eu / etaxonomy / taxeditor / editor / name / handler / ChangeSynonymToAcceptedTaxonHandler.java
index 6dadfb8dace9ec8c39314cdefe31f95de4af694b..09f2598d245152278ee0462d81d607e3cd440092 100644 (file)
@@ -1,4 +1,3 @@
-// $Id$
 /**
 * Copyright (C) 2007 EDIT
 * European Distributed Institute of Taxonomy
@@ -10,6 +9,7 @@
 
 package eu.etaxonomy.taxeditor.editor.name.handler;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Set;
 import java.util.UUID;
@@ -27,17 +27,19 @@ import org.eclipse.ui.handlers.HandlerUtil;
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.name.HomotypicalGroup;
-import eu.etaxonomy.cdm.model.name.TaxonNameBase;
+import eu.etaxonomy.cdm.model.name.TaxonName;
 import eu.etaxonomy.cdm.model.taxon.Synonym;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
 import eu.etaxonomy.taxeditor.editor.EditorUtil;
 import eu.etaxonomy.taxeditor.editor.MultiPageTaxonEditor;
 import eu.etaxonomy.taxeditor.editor.TaxonEditorInput;
+import eu.etaxonomy.taxeditor.editor.l10n.Messages;
 import eu.etaxonomy.taxeditor.editor.name.operation.ChangeSynonymToAcceptedTaxonOperation;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
+import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled;
 import eu.etaxonomy.taxeditor.ui.dialog.selection.TaxonNodeSelectionDialog;
 
 /**
@@ -45,16 +47,12 @@ import eu.etaxonomy.taxeditor.ui.dialog.selection.TaxonNodeSelectionDialog;
  *
  * @author n.hoffmann
  * @created 21.04.2009
- * @version 1.0
  */
 public class ChangeSynonymToAcceptedTaxonHandler extends AbstractHandler implements IPostOperationEnabled {
        private static final Logger logger = Logger
                        .getLogger(ChangeSynonymToAcceptedTaxonHandler.class);
        private MultiPageTaxonEditor editor;
 
-       /* (non-Javadoc)
-        * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
-        */
        /** {@inheritDoc} */
        @Override
     public Object execute(ExecutionEvent event) throws ExecutionException {
@@ -63,14 +61,14 @@ public class ChangeSynonymToAcceptedTaxonHandler extends AbstractHandler impleme
                IEditorInput input = editor.getEditorInput();
 
                if (!(input instanceof TaxonEditorInput)) {
-                       logger.error("Editor input is not TaxonEditorInput");
+                       logger.error("Editor input is not TaxonEditorInput"); //$NON-NLS-1$
                        return null;
                }
 
                // Get synonym from selection
                StructuredSelection selection = (StructuredSelection) HandlerUtil.getCurrentSelection(event);
                if (!(selection.getFirstElement() instanceof Synonym)) {
-                       logger.error("Selection does not contain a Synonym");
+                       logger.error("Selection does not contain a Synonym"); //$NON-NLS-1$
                        return null;
                }
 
@@ -84,30 +82,30 @@ public class ChangeSynonymToAcceptedTaxonHandler extends AbstractHandler impleme
                // Get taxon
                Taxon taxon = ((TaxonEditorInput) input).getTaxon();
 
-               TaxonNode parentNode = (TaxonNode) HibernateProxyHelper.deproxy(((TaxonEditorInput) input).getTaxonNode().getParent());
+               TaxonNode parentNode = HibernateProxyHelper.deproxy(((TaxonEditorInput) input).getTaxonNode().getParent());
+
+               List<UUID> excludeTaxa = new ArrayList<>();
+               //excludeTaxa.add(taxon.getUuid());//there are some cases where the accepted taxon should be the parent of the new created accepted taxon
 
-               List<UUID> excludeTaxa = null;
+               TaxonNode newParentNode = TaxonNodeSelectionDialog.select(HandlerUtil.getActiveShell(event), editor.getConversationHolder(), Messages.ChangeSynonymToAcceptedTaxonHandler_SELECT_PARENT, null, null, ((TaxonEditorInput) input).getTaxonNode().getClassification());
 
-               TaxonNode newParentNode = TaxonNodeSelectionDialog.select(HandlerUtil.getActiveShell(event), editor.getConversationHolder(), "Select parent", excludeTaxa, null, null);
 
                if(newParentNode != null){
 
                        // TODO get synonyms from homotypical group and add them as homotypic synonyms to new accepted taxon
                        // apply confirmation dialog
                        HomotypicalGroup group = synonym.getHomotypicGroup();
-                       Set<TaxonNameBase> namesInGroup = group.getTypifiedNames();
+                       Set<TaxonName> namesInGroup = group.getTypifiedNames();
                        // FIXME with this implementation we can not create a taxonNode that is a direct child of the classification node
-                       AbstractPostOperation operation = new ChangeSynonymToAcceptedTaxonOperation("Change synonym to accepted taxon", EditorUtil.getUndoContext(),
-                                       taxon, newParentNode, synonym, namesInGroup, this, editor, editor); //$NON-NLS-1$
+                       AbstractPostOperation operation = new ChangeSynonymToAcceptedTaxonOperation(Messages.ChangeSynonymToAcceptedTaxonHandler_CHANGE_SYN_TO_ACC_TAXON, EditorUtil.getUndoContext(),
+                                       taxon, newParentNode, synonym, namesInGroup, this, editor, (ICdmEntitySessionEnabled)editor.getEditorInput()); //$NON-NLS-1$
+
                        EditorUtil.executeOperation(operation);
                }
 
                return null;
        }
 
-       /* (non-Javadoc)
-        * @see eu.etaxonomy.taxeditor.operations.IPostOperationEnabled#postOperation(eu.etaxonomy.cdm.model.common.CdmBase)
-        */
        /** {@inheritDoc} */
        @Override
     public boolean postOperation(CdmBase objectAffectedByOperation) {
@@ -130,13 +128,13 @@ public class ChangeSynonymToAcceptedTaxonHandler extends AbstractHandler impleme
                                 *  CdmStore.getTaxonService().getTaxonNodeByUuid(taxonNodeUuid);
                                 *  doesn't work yet.
                                 */
-                               EditorUtil.openTaxonNode(newNode.getUuid());
+                               EditorUtil.openTaxonBaseE4(newNode.getUuid());
 
                        } catch (PartInitException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        } catch (Exception e) {
-                               MessagingUtils.warningDialog("Could not create Taxon", this, e.getMessage());
+                               MessagingUtils.warningDialog(Messages.ChangeSynonymToAcceptedTaxonHandler_CREATE_FAILURE, this, e.getMessage());
                        }
                }
                return true;