merge of origin develop
authorPatrick Plitzner <p.plitzner@bgbm.org>
Mon, 29 Feb 2016 13:50:33 +0000 (14:50 +0100)
committerPatrick Plitzner <p.plitzner@bgbm.org>
Mon, 29 Feb 2016 13:50:33 +0000 (14:50 +0100)
eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/handler/RemotingDeleteTaxonNodeHandler.java

index 015ab99600fbcd680d44e02097a3fa1ceb77fe59..5f748385d186acc52c5ece8fab43ba2b98ca897d 100644 (file)
-// $Id$\r
-/**\r
- * Copyright (C) 2015 EDIT\r
- * European Distributed Institute of Taxonomy\r
- * http://www.e-taxonomy.eu\r
- *\r
- * The contents of this file are subject to the Mozilla Public License Version 1.1\r
- * See LICENSE.TXT at the top of this package for the full license terms.\r
- */\r
-package eu.etaxonomy.taxeditor.navigation.navigator.handler;\r
-\r
-import java.util.HashSet;\r
-import java.util.Iterator;\r
-import java.util.Set;\r
-\r
-import org.eclipse.core.commands.ExecutionEvent;\r
-import org.eclipse.core.commands.operations.AbstractOperation;\r
-import org.eclipse.core.runtime.IStatus;\r
-import org.eclipse.core.runtime.Status;\r
-import org.eclipse.jface.dialogs.MessageDialog;\r
-import org.eclipse.jface.viewers.TreeSelection;\r
-import org.eclipse.ui.IWorkbenchPage;\r
-import org.eclipse.ui.handlers.HandlerUtil;\r
-\r
-import eu.etaxonomy.cdm.api.application.CdmApplicationState;\r
-import eu.etaxonomy.cdm.api.service.config.TaxonDeletionConfigurator;\r
-import eu.etaxonomy.cdm.api.service.config.TaxonNodeDeletionConfigurator;\r
-import eu.etaxonomy.cdm.api.service.config.NodeDeletionConfigurator.ChildHandling;\r
-import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;\r
-import eu.etaxonomy.cdm.model.taxon.Classification;\r
-import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode;\r
-import eu.etaxonomy.cdm.model.taxon.TaxonNode;\r
-import eu.etaxonomy.taxeditor.editor.EditorUtil;\r
-import eu.etaxonomy.taxeditor.model.MessagingUtils;\r
-import eu.etaxonomy.taxeditor.navigation.navigator.TaxonNavigatorLabels;\r
-import eu.etaxonomy.taxeditor.navigation.navigator.operation.RemotingDeleteTaxonNodeOperation;\r
-import eu.etaxonomy.taxeditor.operation.RemotingCdmHandler;\r
-import eu.etaxonomy.taxeditor.ui.dialog.deleteConfigurator.DeleteConfiguratorDialog;\r
-\r
-/**\r
- * @author cmathew\r
- * @date 22 Jun 2015\r
- *\r
- */\r
-public class RemotingDeleteTaxonNodeHandler extends RemotingCdmHandler {\r
-\r
-    private TaxonDeletionConfigurator config;\r
-    private Set<ITaxonTreeNode> treeNodes;\r
-\r
-    /**\r
-     * @param label\r
-     */\r
-    public RemotingDeleteTaxonNodeHandler() {\r
-        super(TaxonNavigatorLabels.DELETE_TAXON_NODE_LABEL);\r
-    }\r
-\r
-    /* (non-Javadoc)\r
-     * @see eu.etaxonomy.taxeditor.operation.RemotingCdmHandler#allowOperations(org.eclipse.core.commands.ExecutionEvent)\r
-     */\r
-    @Override\r
-    public IStatus allowOperations(ExecutionEvent event) {\r
-        TreeSelection selection = (TreeSelection) HandlerUtil.getCurrentSelection(event);\r
-\r
-        Iterator selectionIterator = selection.iterator();\r
-        treeNodes = new HashSet<ITaxonTreeNode>();\r
-\r
-        while (selectionIterator.hasNext()){\r
-            Object object = selectionIterator.next();\r
-            if(object instanceof ITaxonTreeNode) {\r
-                treeNodes.add((ITaxonTreeNode) object);\r
-            }\r
-        }\r
-        boolean allEditorsClosed = true;\r
-        IWorkbenchPage activePage = HandlerUtil.getActiveWorkbenchWindow(event).getActivePage();\r
-        for (ITaxonTreeNode treeNode : treeNodes) {\r
-            if(treeNode instanceof TaxonNode) {\r
-                allEditorsClosed &= EditorUtil.closeObsoleteEditor((TaxonNode) treeNode, activePage);\r
-            }\r
-        }\r
-        if(!allEditorsClosed) {\r
-            return new Status(IStatus.WARNING,\r
-                    "unknown",\r
-                    TaxonNavigatorLabels.RELATED_EDITOR_NOT_CLOSED_MESSAGE);\r
-        }\r
-\r
-        config = new TaxonDeletionConfigurator();\r
-\r
-        if (treeNodes.size() == 1 ){\r
-               ITaxonTreeNode treeNode = treeNodes.iterator().next();\r
-            ITaxonTreeNode taxonNode = treeNode;\r
-            taxonNode = CdmApplicationState.getCurrentAppConfig().getTaxonNodeService().load(taxonNode.getUuid());\r
-            if (taxonNode == null){\r
-               MessagingUtils.informationDialog("Node already deleted", "The taxon node was already deleted. Please reopen the taxon navigator to refresh the view.");\r
-               return Status.CANCEL_STATUS;\r
-                \r
-            }\r
-            TaxonNodeDeletionConfigurator configNodes = new TaxonNodeDeletionConfigurator();\r
-            if (taxonNode instanceof Classification && taxonNode.hasChildNodes()){\r
-                if(!DeleteConfiguratorDialog.openConfirmWithConfigurator(config, HandlerUtil.getActiveShell(event), "Confirm Deletion", "Do you really want to delete the classification? The tree has children, they will be deleted, too.")){\r
-                    return Status.CANCEL_STATUS;\r
-                }\r
-            } else if (taxonNode instanceof Classification && !taxonNode.hasChildNodes()){\r
-                if(!DeleteConfiguratorDialog.openConfirmWithConfigurator(config, HandlerUtil.getActiveShell(event), "Confirm Deletion", "Do you really want to delete the classification?")){\r
-                    return Status.CANCEL_STATUS;\r
-                }\r
-            } else {\r
-\r
-                if (taxonNode.hasChildNodes()){\r
-                    DeleteConfiguratorDialog dialog = new DeleteConfiguratorDialog(\r
-                            config,\r
-                            HandlerUtil.getActiveShell(event),\r
-                            "Confirm Deletion",\r
-                            null,\r
-                            "Do you really want to delete the selected node? It has childnodes, they will be deleted, too.",\r
-                            MessageDialog.WARNING, new String[] { "Delete all children",\r
-                                "Move children to parent node", "Skip" }, 0);\r
-                    int result = dialog.open();\r
-\r
-                    if (result == 0){\r
-                        //delete all children\r
-                        configNodes.setChildHandling(ChildHandling.DELETE);\r
-                        config.setTaxonNodeConfig(configNodes);\r
-                    } else if (result == 1){\r
-                        //move children\r
-                        configNodes.setChildHandling(ChildHandling.MOVE_TO_PARENT);\r
-                        config.setTaxonNodeConfig(configNodes);\r
-                    } else if (result == 2){\r
-                        return Status.CANCEL_STATUS;\r
-                    }\r
-                } else{\r
-                    if(!DeleteConfiguratorDialog.openConfirmWithConfigurator(configNodes, HandlerUtil.getActiveShell(event), "Confirm Deletion", "Do you really want to delete the selected node?")){\r
-                        return Status.CANCEL_STATUS;\r
-                    }\r
-                    config.setTaxonNodeConfig(configNodes);\r
-                }\r
-            }\r
-        }\r
-        return Status.OK_STATUS;\r
-    }\r
-\r
-    /* (non-Javadoc)\r
-     * @see eu.etaxonomy.taxeditor.operation.RemotingCdmHandler#prepareOperation(org.eclipse.core.commands.ExecutionEvent)\r
-     */\r
-    @Override\r
-    public AbstractOperation prepareOperation(ExecutionEvent event) {\r
-        return new RemotingDeleteTaxonNodeOperation(event.getTrigger(),\r
-                false,\r
-                treeNodes,\r
-                config);\r
-    }\r
-\r
-    /* (non-Javadoc)\r
-     * @see eu.etaxonomy.taxeditor.operation.RemotingCdmHandler#onComplete()\r
-     */\r
-    @Override\r
-    public void onComplete() {\r
-        // TODO Auto-generated method stub\r
-\r
-    }\r
-\r
-}\r
+// $Id$
+/**
+ * Copyright (C) 2015 EDIT
+ * European Distributed Institute of Taxonomy
+ * http://www.e-taxonomy.eu
+ *
+ * The contents of this file are subject to the Mozilla Public License Version 1.1
+ * See LICENSE.TXT at the top of this package for the full license terms.
+ */
+package eu.etaxonomy.taxeditor.navigation.navigator.handler;
+
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.operations.AbstractOperation;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.TreeSelection;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.handlers.HandlerUtil;
+
+import eu.etaxonomy.cdm.api.application.CdmApplicationState;
+import eu.etaxonomy.cdm.api.service.config.TaxonDeletionConfigurator;
+import eu.etaxonomy.cdm.api.service.config.TaxonNodeDeletionConfigurator;
+import eu.etaxonomy.cdm.api.service.config.NodeDeletionConfigurator.ChildHandling;
+import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
+import eu.etaxonomy.cdm.model.taxon.Classification;
+import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode;
+import eu.etaxonomy.cdm.model.taxon.TaxonNode;
+import eu.etaxonomy.taxeditor.editor.EditorUtil;
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
+import eu.etaxonomy.taxeditor.navigation.navigator.TaxonNavigatorLabels;
+import eu.etaxonomy.taxeditor.navigation.navigator.operation.RemotingDeleteTaxonNodeOperation;
+import eu.etaxonomy.taxeditor.operation.RemotingCdmHandler;
+import eu.etaxonomy.taxeditor.ui.dialog.deleteConfigurator.DeleteConfiguratorDialog;
+
+/**
+ * @author cmathew
+ * @date 22 Jun 2015
+ *
+ */
+public class RemotingDeleteTaxonNodeHandler extends RemotingCdmHandler {
+
+    private TaxonDeletionConfigurator config;
+    private Set<ITaxonTreeNode> treeNodes;
+
+    /**
+     * @param label
+     */
+    public RemotingDeleteTaxonNodeHandler() {
+        super(TaxonNavigatorLabels.DELETE_TAXON_NODE_LABEL);
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.operation.RemotingCdmHandler#allowOperations(org.eclipse.core.commands.ExecutionEvent)
+     */
+    @Override
+    public IStatus allowOperations(ExecutionEvent event) {
+        TreeSelection selection = (TreeSelection) HandlerUtil.getCurrentSelection(event);
+
+        Iterator selectionIterator = selection.iterator();
+        treeNodes = new HashSet<ITaxonTreeNode>();
+
+        while (selectionIterator.hasNext()){
+            Object object = selectionIterator.next();
+            if(object instanceof ITaxonTreeNode) {
+                treeNodes.add((ITaxonTreeNode) object);
+            }
+        }
+        boolean allEditorsClosed = true;
+        IWorkbenchPage activePage = HandlerUtil.getActiveWorkbenchWindow(event).getActivePage();
+        for (ITaxonTreeNode treeNode : treeNodes) {
+            if(treeNode instanceof TaxonNode) {
+                allEditorsClosed &= EditorUtil.closeObsoleteEditor((TaxonNode) treeNode, activePage);
+            }
+        }
+        if(!allEditorsClosed) {
+            return new Status(IStatus.WARNING,
+                    "unknown",
+                    TaxonNavigatorLabels.RELATED_EDITOR_NOT_CLOSED_MESSAGE);
+        }
+
+        config = new TaxonDeletionConfigurator();
+
+        if (treeNodes.size() == 1 ){
+               ITaxonTreeNode treeNode = treeNodes.iterator().next();
+            ITaxonTreeNode taxonNode = treeNode;
+            taxonNode = CdmApplicationState.getCurrentAppConfig().getTaxonNodeService().load(taxonNode.getUuid());
+            if (taxonNode == null){
+               MessagingUtils.informationDialog("Node already deleted", "The taxon node was already deleted. Please reopen the taxon navigator to refresh the view.");
+               return Status.CANCEL_STATUS;
+                
+            }
+            TaxonNodeDeletionConfigurator configNodes = new TaxonNodeDeletionConfigurator();
+            if (taxonNode instanceof Classification && taxonNode.hasChildNodes()){
+                if(!DeleteConfiguratorDialog.openConfirmWithConfigurator(config, HandlerUtil.getActiveShell(event), "Confirm Deletion", "Do you really want to delete the classification? The tree has children, they will be deleted, too.")){
+                    return Status.CANCEL_STATUS;
+                }
+            } else if (taxonNode instanceof Classification && !taxonNode.hasChildNodes()){
+                if(!DeleteConfiguratorDialog.openConfirmWithConfigurator(config, HandlerUtil.getActiveShell(event), "Confirm Deletion", "Do you really want to delete the classification?")){
+                    return Status.CANCEL_STATUS;
+                }
+            } else {
+
+                if (taxonNode.hasChildNodes()){
+                    DeleteConfiguratorDialog dialog = new DeleteConfiguratorDialog(
+                            config,
+                            HandlerUtil.getActiveShell(event),
+                            "Confirm Deletion",
+                            null,
+                            "Do you really want to delete the selected node? It has childnodes, they will be deleted, too.",
+                            MessageDialog.WARNING, new String[] { "Delete all children",
+                                "Move children to parent node", "Skip" }, 0);
+                    int result = dialog.open();
+
+                    if (result == 0){
+                        //delete all children
+                        configNodes.setChildHandling(ChildHandling.DELETE);
+                        config.setTaxonNodeConfig(configNodes);
+                    } else if (result == 1){
+                        //move children
+                        configNodes.setChildHandling(ChildHandling.MOVE_TO_PARENT);
+                        config.setTaxonNodeConfig(configNodes);
+                    } else if (result == 2){
+                        return Status.CANCEL_STATUS;
+                    }
+                } else{
+                    if(!DeleteConfiguratorDialog.openConfirmWithConfigurator(configNodes, HandlerUtil.getActiveShell(event), "Confirm Deletion", "Do you really want to delete the selected node?")){
+                        return Status.CANCEL_STATUS;
+                    }
+                    config.setTaxonNodeConfig(configNodes);
+                }
+            }
+        }
+        return Status.OK_STATUS;
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.operation.RemotingCdmHandler#prepareOperation(org.eclipse.core.commands.ExecutionEvent)
+     */
+    @Override
+    public AbstractOperation prepareOperation(ExecutionEvent event) {
+        return new RemotingDeleteTaxonNodeOperation(event.getTrigger(),
+                false,
+                treeNodes,
+                config);
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.operation.RemotingCdmHandler#onComplete()
+     */
+    @Override
+    public void onComplete() {
+        // TODO Auto-generated method stub
+
+    }
+
+}