smaller fixes
authorKatja Luther <k.luther@bgbm.org>
Tue, 5 Nov 2013 08:54:48 +0000 (08:54 +0000)
committerKatja Luther <k.luther@bgbm.org>
Tue, 5 Nov 2013 08:54:48 +0000 (08:54 +0000)
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/MultiPageTaxonEditorDataChangeBehaviour.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/DeleteTaxonBaseHandler.java
eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/handler/DeleteHandler.java
eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/operation/CopyOperation.java
eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/operation/DeleteOperation.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/operation/AbstractPersistentPostOperation.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/operation/AbstractPostOperation.java

index 80812aef3d68c378a50d5760ae0f65f07f017dd5..2ff0bd9bb5eeb53e43f4b17816be98c227a05296 100644 (file)
@@ -83,7 +83,7 @@ public class MultiPageTaxonEditorDataChangeBehaviour extends AbstractDataChangeB
                        // close open editors
                        if((event.getEntity() instanceof TaxonNode) 
                                        && input.getTaxonNode().equals(event.getEntity())){
-                               EditorUtil.close(source);
+                               //EditorUtil.close(source);
                                logger.debug("Closing open editor for deleted taxon.");
                        }
                }
index dab4585d43f4f19c407570c42704c356e8d963f6..ee188ef28d78b22bdfc0e3e1d61e86aef15244cd 100644 (file)
@@ -87,6 +87,7 @@ public class DeleteTaxonBaseHandler extends AbstractHandler implements IHandler,
                                return ;
                        }
                        IWorkbenchPage activePage = HandlerUtil.getActiveWorkbenchWindow(event).getActivePage();
+                       
                        operation = new DeleteTaxonOperation(commandName, editor.getUndoContext(),(Taxon) selectedElement, null, activePage, this, editor);
                        //editor.dispose();
                        
index 88a37c649ab5511fb41c794532235107ba642ffd..06daa8920e571cfb9d25aa21126c3101a93201dc 100644 (file)
@@ -27,6 +27,8 @@ import org.eclipse.ui.IWorkbenchPage;
 import org.eclipse.ui.PartInitException;
 import org.eclipse.ui.handlers.HandlerUtil;
 
+import eu.etaxonomy.cdm.api.service.config.TaxonDeletionConfigurator;
+import eu.etaxonomy.cdm.model.common.ITreeNode;
 import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
 import eu.etaxonomy.taxeditor.editor.TaxonEditorInput;
@@ -64,38 +66,51 @@ public class DeleteHandler extends AbstractHandler implements IHandler{
                }
 
                Iterator selectionIterator = selection.iterator();
-               Set<ITaxonTreeNode> treeNodes = new HashSet<ITaxonTreeNode>();
+               Set<ITreeNode> treeNodes = new HashSet<ITreeNode>();
 
                while (selectionIterator.hasNext()){
                        Object object = selectionIterator.next();
-                       if(object instanceof ITaxonTreeNode) {
-                treeNodes.add((ITaxonTreeNode) object);
+                       if(object instanceof ITreeNode) {
+                treeNodes.add((ITreeNode) object);
             }
                }
-
+               boolean allEditorsClosed = true;
+               for (ITreeNode treeNode : treeNodes){
+                       if(treeNode instanceof TaxonNode) {
+                               allEditorsClosed &= closeObsoleteEditor((TaxonNode) treeNode);
+                       }
+               }
                AbstractPostOperation operation = null;
-               try {
-
-
-                       boolean allEditorsClosed = true;
-                       for (ITaxonTreeNode treeNode : treeNodes){
-                               if(treeNode instanceof TaxonNode) {
-                                       allEditorsClosed &= closeObsoleteEditor((TaxonNode) treeNode);
+               if (treeNodes.size() == 1 ){
+                       try {
+                               
+       
+                               if (allEditorsClosed){
+                                       TaxonNode taxonNode = (TaxonNode)treeNodes.iterator().next();
+                                       operation = new DeleteOperation(
+                                                       event.getCommand().getName(), NavigationUtil.getUndoContext(),
+                                                       taxonNode, new TaxonDeletionConfigurator(), taxonNavigator, taxonNavigator);
+               
+                                       NavigationUtil.executeOperation(operation);
                                }
-                       }
-
-                       if (allEditorsClosed){
-                               operation = new DeleteOperation(
-                                               event.getCommand().getName(), NavigationUtil.getUndoContext(),
-                                               treeNodes, taxonNavigator, taxonNavigator);
        
-                               NavigationUtil.executeOperation(operation);
-                       }
-
+               
        
-
-               } catch (NotDefinedException e) {
-                       NavigationUtil.warn(getClass(), "Command name not set");
+                       } catch (NotDefinedException e) {
+                               NavigationUtil.warn(getClass(), "Command name not set");
+                       }
+               } else{
+                       try{
+                               if (allEditorsClosed){
+                                       operation = new DeleteOperation(
+                                                       event.getCommand().getName(), NavigationUtil.getUndoContext(),
+                                                       treeNodes, new TaxonDeletionConfigurator(), taxonNavigator, taxonNavigator);
+               
+                                       NavigationUtil.executeOperation(operation);
+                               }
+                       }catch (NotDefinedException e) {
+                               NavigationUtil.warn(getClass(), "Command name not set");
+                       }
                }
                return null;
        }
@@ -104,11 +119,17 @@ public class DeleteHandler extends AbstractHandler implements IHandler{
                boolean result = true;
                for (IEditorReference ref : activePage.getEditorReferences()) {
                        try {
+                               String treeIndex = ((ITreeNode)taxonNode).treeIndex();
+                               
+                               
                                IEditorInput input = ref.getEditorInput();
                                if (input instanceof TaxonEditorInput) {
                                        TaxonNode node = ((TaxonEditorInput) input).getTaxonNode();
-                                       if (taxonNode.equals(node)) {
+                                       //if node is a child of taxonNode then close the editor
+                                       if( ((ITreeNode) node).treeIndex().startsWith(treeIndex)){
+                                       //if (taxonNode.equals(node)) {
                                                result &= activePage.closeEditor(ref.getEditor(false), true);
+                                               
                                        }
                                }
                        } catch (PartInitException e) {
index 25c8632a12dfa92dbc5e765b22677961b4ef9cf0..c6b3c56bc076c36698c7f498027d5008c5ad9938 100644 (file)
@@ -48,7 +48,7 @@ public class CopyOperation extends AbstractPostOperation {
        public IStatus execute(IProgressMonitor monitor, IAdaptable info)\r
                        throws ExecutionException {\r
                \r
-               String name = taxonNode.getTaxon().getName().getTitleCache();\r
+               String name = ((TaxonNode)taxonNode).getTaxon().getName().getTitleCache();\r
                \r
            final Clipboard cb = new Clipboard(null);\r
            TextTransfer textTransfer = TextTransfer.getInstance();\r
@@ -56,7 +56,7 @@ public class CopyOperation extends AbstractPostOperation {
            \r
            cb.setContents(new Object[]{name}, transfers);\r
            \r
-               return postExecute(taxonNode);  \r
+               return postExecute(((TaxonNode)taxonNode));     \r
                //return null;\r
        }\r
 \r
index 48a89b97d926f03dfeffa2b114cbc180687a4462..9968fa9cd6d7359e8314873dccc0e1f35f0068e9 100644 (file)
@@ -22,9 +22,11 @@ import eu.etaxonomy.cdm.api.application.CdmApplicationController;
 import eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration;
 import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
 import eu.etaxonomy.cdm.api.service.IClassificationService;
+import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
 import eu.etaxonomy.cdm.api.service.ITaxonService;
 import eu.etaxonomy.cdm.api.service.config.TaxonDeletionConfigurator;
 import eu.etaxonomy.cdm.api.service.exception.DataChangeNoRollbackException;
+import eu.etaxonomy.cdm.model.common.ITreeNode;
 import eu.etaxonomy.cdm.model.taxon.Classification;
 import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
@@ -42,7 +44,8 @@ import eu.etaxonomy.taxeditor.store.StoreUtil;
  */
 public class DeleteOperation extends AbstractPersistentPostOperation{
 
-       private Set<ITaxonTreeNode> treeNodes;
+       private Set<ITreeNode> treeNodes;
+       private TaxonDeletionConfigurator config;
 
 
        /**
@@ -55,13 +58,32 @@ public class DeleteOperation extends AbstractPersistentPostOperation{
         * @param treeNodes a {@link java.util.Set} object.
         */
        public DeleteOperation(String label, IUndoContext undoContext,
-                       Set<ITaxonTreeNode> treeNodes,
+                       ITreeNode taxonNode, TaxonDeletionConfigurator config,
                        IPostOperationEnabled postOperationEnabled,
                        IConversationEnabled conversationEnabled) {
                super(label, undoContext, postOperationEnabled, conversationEnabled);
-               this.treeNodes = treeNodes;
+               this.taxonNode = taxonNode;
+               this.config = config;
        }
 
+       /**
+        * <p>Constructor for DeleteTreeNodeOperation.</p>
+        *
+        * @param label a {@link java.lang.String} object.
+        * @param undoContext a {@link org.eclipse.core.commands.operations.IUndoContext} object.
+        * @param postOperationEnabled a {@link eu.etaxonomy.taxeditor.operation.IPostOperationEnabled} object.
+        * @param conversationEnabled a {@link eu.etaxonomy.cdm.api.conversation.IConversationEnabled} object.
+        * @param treeNodes a {@link java.util.Set} object.
+        */
+       public DeleteOperation(String label, IUndoContext undoContext,
+                       Set<ITreeNode> treeNodes, TaxonDeletionConfigurator config,
+                       IPostOperationEnabled postOperationEnabled,
+                       IConversationEnabled conversationEnabled) {
+               super(label, undoContext, postOperationEnabled, conversationEnabled);
+               this.treeNodes = treeNodes;
+               this.config = config;
+       }
+       
 
        /* (non-Javadoc)
         * @see org.eclipse.core.commands.operations.AbstractOperation#execute(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
@@ -73,34 +95,36 @@ public class DeleteOperation extends AbstractPersistentPostOperation{
 
                bind();
                monitor.worked(20);
-        for (ITaxonTreeNode treeNode : treeNodes){
-                       if(treeNode instanceof TaxonNode){
+               ICdmApplicationConfiguration controller = CdmStore.getCurrentApplicationConfiguration();
+               ITaxonNodeService service = controller.getTaxonNodeService();
+                       if(taxonNode != null && taxonNode instanceof TaxonNode){
                                //((TaxonNode) treeNode).delete();
 
-                               taxon = ((TaxonNode) treeNode).getTaxon();
-                               ICdmApplicationConfiguration controller = CdmStore.getCurrentApplicationConfiguration();
-                               
-                               ITaxonService service = controller.getTaxonService();
+                               taxon = ((TaxonNode)taxonNode).getTaxon();
                                try {
-                                       
-                                       service.deleteTaxon(taxon, new TaxonDeletionConfigurator(), ((TaxonNode) treeNode).getClassification());
-                                       
+                                       service.deleteTaxonNode((TaxonNode)taxonNode, config);
                                } catch (DataChangeNoRollbackException e) {
-                                       // TODO Auto-generated catch block
-                                       e.printStackTrace();
+                                       
+                                       throw new ExecutionException(e.getMessage());
                                        
                                }
                                
-                       }else if(treeNode instanceof Classification){
-                               Classification taxonomicTree = (Classification) treeNode;
+                       }else if(taxonNode != null && taxonNode instanceof Classification){
+                               Classification taxonomicTree = (Classification) taxonNode;
                                if(taxonomicTree.hasChildNodes()){
                                        StoreUtil.warningDialog("Tree is not empty", this, "It is not possible to delete a Taxonomic Tree that " +
                                                        "is not empty. Please delete included taxa first");
                                }else{
                                        CdmStore.getService(IClassificationService.class).delete(taxonomicTree);
                                }
+                       } else {
+                               try {
+                                       service.deleteTaxonNodes(treeNodes, config);
+                               } catch (DataChangeNoRollbackException e) {
+                                       throw new ExecutionException(e.getMessage());
+                               }
                        }
-               }
+               
                monitor.worked(40);
                return postExecute(null);
        }
index ab05864c6e053315ce7a8e72acbfe25f25cd72e8..37ff63f70e73337197149ab7ac44dceef4a6e5df 100644 (file)
@@ -95,6 +95,7 @@ public abstract class AbstractPersistentPostOperation extends AbstractPostOperat
 
                
                if (!conversationEnabled.getConversationHolder().isClosed()){
+                       conversationEnabled.getConversationHolder().bind();
                        conversationEnabled.getConversationHolder().commit(true);
                }
                IStatus status = super.postExecute(objectAffectedByOperation);
index 5f3ffed2222326f01bd1af57193caa3339c8b78f..6d35611cf604060fcdf31d8cee38519404c5c4b7 100644 (file)
@@ -17,6 +17,7 @@ import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
 
 import eu.etaxonomy.cdm.model.common.CdmBase;
+import eu.etaxonomy.cdm.model.common.ITreeNode;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
 
@@ -43,7 +44,7 @@ public abstract class AbstractPostOperation extends AbstractOperation {
        /**
         * A reference to the taxons TaxonNode
         */
-       protected TaxonNode taxonNode;
+       protected ITreeNode taxonNode;
 
        protected UUID parentNodeUuid;