+// $Id$
+/**
+* Copyright (C) 2007 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.operations;
+
+import java.util.Set;
+
+import org.apache.log4j.Logger;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.commands.operations.IUndoContext;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+
+import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
+import eu.etaxonomy.cdm.model.taxon.ITreeNode;
+import eu.etaxonomy.cdm.model.taxon.TaxonNode;
+import eu.etaxonomy.cdm.model.taxon.TaxonomicTree;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.store.StoreUtil;
+
+/**
+ * @author n.hoffmann
+ * @created Jan 20, 2010
+ * @version 1.0
+ */
+public class DeleteTreeNodeOperation extends AbstractPersistentPostOperation{
+
+ private static final Logger logger = Logger
+ .getLogger(DeleteTreeNodeOperation.class);
+ private Set<ITreeNode> treeNodes;
+
+
+ /**
+ * @param label
+ * @param undoContext
+ * @param postOperationEnabled
+ * @param conversationEnabled
+ */
+ public DeleteTreeNodeOperation(String label, IUndoContext undoContext,
+ Set<ITreeNode> treeNodes,
+ IPostOperationEnabled postOperationEnabled,
+ IConversationEnabled conversationEnabled) {
+ super(label, undoContext, postOperationEnabled, conversationEnabled);
+ this.treeNodes = treeNodes;
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.core.commands.operations.AbstractOperation#execute(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
+ */
+ @Override
+ public IStatus execute(IProgressMonitor monitor, IAdaptable info)
+ throws ExecutionException {
+
+ for (ITreeNode treeNode : treeNodes){
+ if(treeNode instanceof TaxonNode){
+ ((TaxonNode) treeNode).delete();
+ }else if(treeNode instanceof TaxonomicTree){
+ TaxonomicTree taxonomicTree = (TaxonomicTree) treeNode;
+ if(taxonomicTree.hasChildNodes()){
+ StoreUtil.warningDialog("Tree is not empty", "It is not possible to delete a Taxonomic Tree that " +
+ "is not empty. Please delete included taxa first");
+ }else{
+ CdmStore.getTaxonTreeService().delete(taxonomicTree);
+ }
+ }
+ }
+
+ return postExecute(null);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.core.commands.operations.AbstractOperation#redo(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
+ */
+ @Override
+ public IStatus redo(IProgressMonitor monitor, IAdaptable info)
+ throws ExecutionException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.core.commands.operations.AbstractOperation#undo(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
+ */
+ @Override
+ public IStatus undo(IProgressMonitor monitor, IAdaptable info)
+ throws ExecutionException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+}