Fixes a problem that could have solved #2071; Resolves the problems described in...
[taxeditor.git] / taxeditor-editor / src / main / java / eu / etaxonomy / taxeditor / editor / name / handler / ChangeSynonymToAcceptedTaxonHandler.java
index a17f85625b809b2b028d1895ac0933412a7112b5..26dc6daa04264d0e3af771ffcc494526a9174907 100644 (file)
@@ -17,11 +17,9 @@ import org.apache.log4j.Logger;
 import org.eclipse.core.commands.AbstractHandler;
 import org.eclipse.core.commands.ExecutionEvent;
 import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.commands.operations.IUndoableOperation;
 import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.swt.widgets.Shell;
 import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.PartInitException;
 import org.eclipse.ui.handlers.HandlerUtil;
 
@@ -30,14 +28,17 @@ import eu.etaxonomy.cdm.model.common.CdmBase;
 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.dialogs.filteredSelection.FilteredTaxonNodeSelectionDialog;
+import eu.etaxonomy.taxeditor.dialogs.filteredSelection.TaxonNodeSelectionDialog;
 import eu.etaxonomy.taxeditor.editor.EditorUtil;
 import eu.etaxonomy.taxeditor.editor.MultiPageTaxonEditor;
 import eu.etaxonomy.taxeditor.editor.TaxonEditorInput;
-import eu.etaxonomy.taxeditor.operations.ChangeSynonymToAcceptedTaxonOperation;
-import eu.etaxonomy.taxeditor.operations.IPostOperationEnabled;
+import eu.etaxonomy.taxeditor.editor.name.operation.ChangeSynonymToAcceptedTaxonOperation;
+import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
+import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 
 /**
+ * <p>ChangeSynonymToAcceptedTaxonHandler class.</p>
+ *
  * @author n.hoffmann
  * @created 21.04.2009
  * @version 1.0
@@ -50,6 +51,7 @@ public class ChangeSynonymToAcceptedTaxonHandler extends AbstractHandler impleme
        /* (non-Javadoc)
         * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
         */
+       /** {@inheritDoc} */
        public Object execute(ExecutionEvent event) throws ExecutionException {
                editor =  (MultiPageTaxonEditor) HandlerUtil.getActiveEditor(event);
                Shell shell = HandlerUtil.getActiveShell(event);
@@ -81,7 +83,7 @@ public class ChangeSynonymToAcceptedTaxonHandler extends AbstractHandler impleme
                
                List<UUID> excludeTaxa = null;
                
-               TaxonNode newParentNode = FilteredTaxonNodeSelectionDialog.selectTaxonNode(HandlerUtil.getActiveShell(event), "Select parent", excludeTaxa, null);
+               TaxonNode newParentNode = TaxonNodeSelectionDialog.select(HandlerUtil.getActiveShell(event), editor.getConversationHolder(), "Select parent", excludeTaxa, null);
                
                if(newParentNode != null){
                        
@@ -89,7 +91,7 @@ public class ChangeSynonymToAcceptedTaxonHandler extends AbstractHandler impleme
                        // apply confirmation dialog
                        
                        // FIXME with this implementation we can not create a taxonNode that is a direct child of the classification node
-                       IUndoableOperation operation = new ChangeSynonymToAcceptedTaxonOperation("Change synonym to accepted taxon", EditorUtil.getUndoContext(), 
+                       AbstractPostOperation operation = new ChangeSynonymToAcceptedTaxonOperation("Change synonym to accepted taxon", EditorUtil.getUndoContext(), 
                                        taxon, newParentNode, synonym, null, this, editor); //$NON-NLS-1$
                        EditorUtil.executeOperation(operation);
                }
@@ -100,12 +102,13 @@ public class ChangeSynonymToAcceptedTaxonHandler extends AbstractHandler impleme
        /* (non-Javadoc)
         * @see eu.etaxonomy.taxeditor.operations.IPostOperationEnabled#postOperation(eu.etaxonomy.cdm.model.common.CdmBase)
         */
+       /** {@inheritDoc} */
        public boolean postOperation(CdmBase objectAffectedByOperation) {
                
                // Redraw existing editor
                ((IPostOperationEnabled) editor).postOperation(null);
                
-               editor.doSave(null);
+               editor.doSave(EditorUtil.getMonitor());
                
                if (objectAffectedByOperation instanceof TaxonNode) {
                
@@ -120,13 +123,25 @@ public class ChangeSynonymToAcceptedTaxonHandler extends AbstractHandler impleme
                                 *  CdmStore.getTaxonService().getTaxonNodeByUuid(taxonNodeUuid);
                                 *  doesn't work yet.
                                 */
-                               IEditorPart newEditor = EditorUtil.openTaxonNode(newNode.getUuid());
+                               EditorUtil.openTaxonNode(newNode.getUuid());
                                
                        } catch (PartInitException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
+                       } catch (Exception e) {
+                               EditorUtil.warningDialog("Could not create Taxon", this, e.getMessage());
                        }
                }
                return true;
        }
+
+       /**
+        * <p>onComplete</p>
+        *
+        * @return a boolean.
+        */
+       public boolean onComplete() {
+               // TODO Auto-generated method stub
+               return false;
+       }
 }