-// $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
+
+ }
+
+}