commit 3586a8820619be302f95ca3f153f9f41f1af8e76
Author: Patric Plitzner <p.plitzner@bgbm.org>
Date:   Mon Feb 23 09:43:49 2015 +0000

     - refactored delete configrator dialog
     - added dialog to derivate deletion

diff --git a/.gitattributes b/.gitattributes
index 4e918641b..0d1701f00 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1410,11 +1410,12 @@ eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/bar/Authent
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/combo/EnumComboElement.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/combo/TermComboElement.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/DefaultLanguageDialog.java -text
-eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/DeleteConfiguratorComposite.java -text
-eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/DeleteConfiguratorDialog.java -text
-eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/DeleteTaxonConfiguratorDialog.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/LoginDialog.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/UriDialog.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/deleteConfigurator/DeleteConfiguratorComposite.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/deleteConfigurator/DeleteConfiguratorDialog.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/deleteConfigurator/DeleteSpecimenConfiguratorComposite.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/deleteConfigurator/DeleteTaxonConfiguratorComposite.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/AbstractFilteredCdmEnumSelectionDialog.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/AbstractFilteredCdmResourceSelectionDialog.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/AgentSelectionDialog.java -text
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/operation/DeleteDerivateOperation.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/operation/DeleteDerivateOperation.java
index 8f65f7c96..b13c0cf35 100644
--- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/operation/DeleteDerivateOperation.java
+++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/operation/DeleteDerivateOperation.java
@@ -27,6 +27,7 @@ import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.ui.dialog.deleteConfigurator.DeleteConfiguratorDialog;
 
 /**
  *
@@ -66,7 +67,7 @@ public class DeleteDerivateOperation extends AbstractPostOperation<CdmBase> {
                 confirmationQuestion += " and its children";
             }
             confirmationQuestion += "?";
-            if(!MessagingUtils.confirmDialog("Confirm deletion", confirmationQuestion)){
+            if(!DeleteConfiguratorDialog.openConfirmWithConfigurator(deleteConfigurator, null, "Confirm Deletion", confirmationQuestion)){
                 return Status.CANCEL_STATUS;
             }
             if(((ISaveablePart) getPostOperationEnabled()).isDirty()){
diff --git a/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/handler/DeleteHandler.java b/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/handler/DeleteHandler.java
index d492be604..55df02ba2 100644
--- a/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/handler/DeleteHandler.java
+++ b/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/handler/DeleteHandler.java
@@ -40,8 +40,7 @@ import eu.etaxonomy.taxeditor.navigation.NavigationUtil;
 import eu.etaxonomy.taxeditor.navigation.navigator.TaxonNavigator;
 import eu.etaxonomy.taxeditor.navigation.navigator.operation.DeleteOperation;
 import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
-import eu.etaxonomy.taxeditor.ui.dialog.DeleteConfiguratorDialog;
-import eu.etaxonomy.taxeditor.ui.dialog.DeleteTaxonConfiguratorDialog;
+import eu.etaxonomy.taxeditor.ui.dialog.deleteConfigurator.DeleteConfiguratorDialog;
 
 /**
  * <p>DeleteTreeNodeHandler class.</p>
@@ -89,17 +88,17 @@ public class DeleteHandler extends AbstractHandler{
 				ITaxonTreeNode taxonNode =treeNode;
 				TaxonNodeDeletionConfigurator configNodes = new TaxonNodeDeletionConfigurator();
 				if (taxonNode instanceof Classification && taxonNode.hasChildNodes()){
-					if(!DeleteTaxonConfiguratorDialog.openConfirmWithConfigurator(config, HandlerUtil.getActiveShell(event), "Confirm Deletion", "Do you really want to delete the classification? The tree has children, they will be deleted, too.")){
+					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 null;
 					}
 				} else if (taxonNode instanceof Classification && !taxonNode.hasChildNodes()){
-					if(!DeleteTaxonConfiguratorDialog.openConfirmWithConfigurator(config, HandlerUtil.getActiveShell(event), "Confirm Deletion", "Do you really want to delete the classification?")){
+					if(!DeleteConfiguratorDialog.openConfirmWithConfigurator(config, HandlerUtil.getActiveShell(event), "Confirm Deletion", "Do you really want to delete the classification?")){
 						return null;
 					}
 				} else {
 
 					if (taxonNode.hasChildNodes()){
-                        DeleteConfiguratorDialog dialog = new DeleteTaxonConfiguratorDialog(
+                        DeleteConfiguratorDialog dialog = new DeleteConfiguratorDialog(
                                 config,
                                 HandlerUtil.getActiveShell(event),
                                 "Confirm Deletion",
@@ -123,7 +122,7 @@ public class DeleteHandler extends AbstractHandler{
 
 						}
 					}else{
-						if(!DeleteTaxonConfiguratorDialog.openConfirmWithConfigurator(config, HandlerUtil.getActiveShell(event), "Confirm Deletion", "Do you really want to delete the selected node?")){
+						if(!DeleteConfiguratorDialog.openConfirmWithConfigurator(config, HandlerUtil.getActiveShell(event), "Confirm Deletion", "Do you really want to delete the selected node?")){
 							return null;
 						}
 					}
@@ -148,7 +147,7 @@ public class DeleteHandler extends AbstractHandler{
 			}
 		} else{
 			try{
-				if(!DeleteTaxonConfiguratorDialog.openConfirmWithConfigurator(config, HandlerUtil.getActiveShell(event), "Confirm Deletion", "Do you really want to delete the selected nodes?")){
+				if(!DeleteConfiguratorDialog.openConfirmWithConfigurator(config, HandlerUtil.getActiveShell(event), "Confirm Deletion", "Do you really want to delete the selected nodes?")){
 					return null;
 				}
 				if (allEditorsClosed){
diff --git a/eu.etaxonomy.taxeditor.store/META-INF/MANIFEST.MF b/eu.etaxonomy.taxeditor.store/META-INF/MANIFEST.MF
index 7fdf17bb2..52922d025 100644
--- a/eu.etaxonomy.taxeditor.store/META-INF/MANIFEST.MF
+++ b/eu.etaxonomy.taxeditor.store/META-INF/MANIFEST.MF
@@ -32,6 +32,7 @@ Export-Package: eu.etaxonomy.cdm,
  eu.etaxonomy.taxeditor.ui.bar,
  eu.etaxonomy.taxeditor.ui.combo,
  eu.etaxonomy.taxeditor.ui.dialog,
+ eu.etaxonomy.taxeditor.ui.dialog.deleteConfigurator,
  eu.etaxonomy.taxeditor.ui.dialog.selection,
  eu.etaxonomy.taxeditor.ui.element,
  eu.etaxonomy.taxeditor.ui.group.grantedauthority,
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/DeleteConfiguratorComposite.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/DeleteConfiguratorComposite.java
deleted file mode 100644
index 5f78392b9..000000000
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/DeleteConfiguratorComposite.java
+++ /dev/null
@@ -1,93 +0,0 @@
-// $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.ui.dialog;
-
-import org.eclipse.core.databinding.DataBindingContext;
-import org.eclipse.core.databinding.beans.PojoProperties;
-import org.eclipse.core.databinding.observable.value.IObservableValue;
-import org.eclipse.jface.databinding.swt.WidgetProperties;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.layout.FillLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.forms.events.ExpansionEvent;
-import org.eclipse.ui.forms.events.IExpansionListener;
-import org.eclipse.ui.forms.widgets.FormToolkit;
-import org.eclipse.ui.forms.widgets.Section;
-
-import eu.etaxonomy.cdm.api.service.config.TaxonBaseDeletionConfigurator;
-
-/**
- * @author pplitzner
- * @date Feb 16, 2015
- *
- */
-public class DeleteConfiguratorComposite extends Composite implements IExpansionListener{
-    private final DataBindingContext m_bindingContext;
-
-    private final FormToolkit toolkit = new FormToolkit(Display.getCurrent());
-    private TaxonBaseDeletionConfigurator configurator = null;
-    private final Button btnDeleteTaxonName;
-
-    /**
-     * Create the composite.
-     * @param parent
-     * @param style
-     */
-    public DeleteConfiguratorComposite(TaxonBaseDeletionConfigurator configurator, final Composite parent, int style) {
-        super(parent, SWT.NONE);
-        this.configurator = configurator;
-
-        addDisposeListener(new DisposeListener() {
-            @Override
-            public void widgetDisposed(DisposeEvent e) {
-                toolkit.dispose();
-            }
-        });
-        toolkit.paintBordersFor(this);
-        setLayout(new FillLayout(SWT.HORIZONTAL));
-
-        Section sctnConfigure = toolkit.createSection(this, Section.CLIENT_INDENT | Section.TWISTIE);
-        sctnConfigure.addExpansionListener(this);
-        sctnConfigure.setBackground(getBackground());
-        toolkit.paintBordersFor(sctnConfigure);
-        sctnConfigure.setText("Configure");
-
-        btnDeleteTaxonName = new Button(sctnConfigure, SWT.CHECK);
-        sctnConfigure.setClient(btnDeleteTaxonName);
-        btnDeleteTaxonName.setText("Delete Taxon Name");
-        m_bindingContext = initDataBindings();
-
-    }
-    protected DataBindingContext initDataBindings() {
-        DataBindingContext bindingContext = new DataBindingContext();
-        //
-        IObservableValue observeSelectionBtnDeleteTaxonNameObserveWidget = WidgetProperties.selection().observe(btnDeleteTaxonName);
-        IObservableValue deleteNameIfPossibleConfiguratorObserveValue = PojoProperties.value("deleteNameIfPossible").observe(configurator);
-        bindingContext.bindValue(observeSelectionBtnDeleteTaxonNameObserveWidget, deleteNameIfPossibleConfiguratorObserveValue, null, null);
-        //
-        return bindingContext;
-    }
-
-    public Button getBtnDeleteTaxonName() {
-        return btnDeleteTaxonName;
-    }
-
-    @Override
-    public void expansionStateChanged(ExpansionEvent e) {
-        getShell().setSize(getShell().computeSize(SWT.DEFAULT, SWT.DEFAULT));
-    }
-    @Override
-    public void expansionStateChanging(ExpansionEvent e) {
-    }
-}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/DeleteConfiguratorDialog.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/DeleteConfiguratorDialog.java
deleted file mode 100644
index 3a8cbf46e..000000000
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/DeleteConfiguratorDialog.java
+++ /dev/null
@@ -1,81 +0,0 @@
-// $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.ui.dialog;
-
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Shell;
-
-import eu.etaxonomy.cdm.api.service.config.DeleteConfiguratorBase;
-
-/**
- * Abstract subclass of MessageDialog providing the functionality to configure
- * a {@link DeleteConfiguratorBase}
- * @author pplitzner
- * @date Jan 28, 2015
- *
- */
-public abstract class DeleteConfiguratorDialog extends MessageDialog{
-
-    public DeleteConfiguratorDialog(Shell parentShell, String dialogTitle,
-            Image dialogTitleImage, String dialogMessage, int dialogImageType, String[] dialogButtonLabels, int defaultIndex) {
-        super(parentShell, dialogTitle, dialogTitleImage, dialogMessage, dialogImageType, dialogButtonLabels, defaultIndex);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite)
-     */
-    @Override
-    protected Control createDialogArea(Composite parent) {
-        Composite composite = (Composite) super.createDialogArea(parent);
-
-        return composite;
-    }
-
-    /**
-     * @param kind
-     * @return
-     */
-    static String[] getButtonLabels(int kind) {
-        String[] dialogButtonLabels;
-        switch (kind) {
-        case ERROR:
-        case INFORMATION:
-        case WARNING: {
-            dialogButtonLabels = new String[] { IDialogConstants.OK_LABEL };
-            break;
-        }
-        case CONFIRM: {
-            dialogButtonLabels = new String[] { IDialogConstants.OK_LABEL,
-                    IDialogConstants.CANCEL_LABEL };
-            break;
-        }
-        case QUESTION: {
-            dialogButtonLabels = new String[] { IDialogConstants.YES_LABEL,
-                    IDialogConstants.NO_LABEL };
-            break;
-        }
-        case QUESTION_WITH_CANCEL: {
-            dialogButtonLabels = new String[] { IDialogConstants.YES_LABEL,
-                    IDialogConstants.NO_LABEL,
-                    IDialogConstants.CANCEL_LABEL };
-            break;
-        }
-        default: {
-            throw new IllegalArgumentException(
-                    "Illegal value for kind in MessageDialog.open()"); //$NON-NLS-1$
-        }
-        }
-        return dialogButtonLabels;
-    }
-}
\ No newline at end of file
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/DeleteTaxonConfiguratorDialog.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/DeleteTaxonConfiguratorDialog.java
deleted file mode 100644
index 9ad0e951c..000000000
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/DeleteTaxonConfiguratorDialog.java
+++ /dev/null
@@ -1,70 +0,0 @@
-// $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.ui.dialog;
-
-import org.apache.log4j.Logger;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Shell;
-
-import eu.etaxonomy.cdm.api.service.config.TaxonDeletionConfigurator;
-
-/**
- * @author pplitzner
- * @date Jan 28, 2015
- *
- */
-public class DeleteTaxonConfiguratorDialog extends DeleteConfiguratorDialog {
-
-    @SuppressWarnings("unused")
-    private final Logger logger = Logger.getLogger(DeleteTaxonConfiguratorDialog.class);
-
-    private final TaxonDeletionConfigurator configurator;
-
-    /**
-     * @param configurator
-     * @param parentShell
-     * @param dialogTitle
-     * @param dialogTitleImage
-     * @param dialogMessage
-     * @param dialogImageType
-     * @param dialogButtonLabels
-     * @param defaultIndex
-     */
-    public DeleteTaxonConfiguratorDialog(TaxonDeletionConfigurator configurator, Shell parentShell, String dialogTitle,
-            Image dialogTitleImage, String dialogMessage,int dialogImageType, String[] dialogButtonLabels, int defaultIndex) {
-        super(parentShell, dialogTitle, dialogTitleImage, dialogMessage, dialogImageType, dialogButtonLabels, defaultIndex);
-        this.configurator = configurator;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.dialogs.MessageDialog#createCustomArea(org.eclipse.swt.widgets.Composite)
-     */
-    @Override
-    protected Control createCustomArea(Composite parent) {
-        DeleteConfiguratorComposite composite = new DeleteConfiguratorComposite(configurator, parent, NONE);
-        return composite;
-    }
-
-    public static boolean openConfirmWithConfigurator(TaxonDeletionConfigurator configurator, Shell parent, String title, String message) {
-        DeleteTaxonConfiguratorDialog dialog = new DeleteTaxonConfiguratorDialog(configurator, parent, title, getDefaultImage(), message, QUESTION, getButtonLabels(QUESTION), 0);
-        return dialog.open() == 0;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.dialogs.Dialog#isResizable()
-     */
-    @Override
-    protected boolean isResizable() {
-        return true;
-    }
-
-}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/deleteConfigurator/DeleteConfiguratorComposite.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/deleteConfigurator/DeleteConfiguratorComposite.java
new file mode 100644
index 000000000..51368df14
--- /dev/null
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/deleteConfigurator/DeleteConfiguratorComposite.java
@@ -0,0 +1,74 @@
+// $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.ui.dialog.deleteConfigurator;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.DisposeEvent;
+import org.eclipse.swt.events.DisposeListener;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.forms.events.ExpansionEvent;
+import org.eclipse.ui.forms.events.IExpansionListener;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.eclipse.ui.forms.widgets.Section;
+
+/**
+ * @author pplitzner
+ * @date Feb 16, 2015
+ *
+ */
+public class DeleteConfiguratorComposite extends Composite implements IExpansionListener{
+
+    private final FormToolkit toolkit = new FormToolkit(Display.getCurrent());
+    private final Section sctnConfigure;
+    /**
+     * Create the composite.
+     * @param parent
+     * @param style
+     */
+    public DeleteConfiguratorComposite(final Composite parent, int style) {
+        super(parent, SWT.NONE);
+
+        addDisposeListener(new DisposeListener() {
+            @Override
+            public void widgetDisposed(DisposeEvent e) {
+                toolkit.dispose();
+            }
+        });
+        toolkit.paintBordersFor(this);
+        setLayout(new FillLayout(SWT.HORIZONTAL));
+
+        sctnConfigure = toolkit.createSection(this, Section.CLIENT_INDENT | Section.TWISTIE);
+        sctnConfigure.addExpansionListener(this);
+        sctnConfigure.setBackground(getBackground());
+        toolkit.paintBordersFor(sctnConfigure);
+        sctnConfigure.setText("Configure");
+
+
+    }
+
+
+    public void addConfiguratorComposite(Composite configuratorComposite){
+        toolkit.paintBordersFor(configuratorComposite);
+        sctnConfigure.setClient(configuratorComposite);
+    }
+
+    @Override
+    public void expansionStateChanged(ExpansionEvent e) {
+        getShell().setSize(getShell().computeSize(SWT.DEFAULT, SWT.DEFAULT));
+    }
+    @Override
+    public void expansionStateChanging(ExpansionEvent e) {
+    }
+    public Section getSectionConfigure() {
+        return sctnConfigure;
+    }
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/deleteConfigurator/DeleteConfiguratorDialog.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/deleteConfigurator/DeleteConfiguratorDialog.java
new file mode 100644
index 000000000..eb36edac2
--- /dev/null
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/deleteConfigurator/DeleteConfiguratorDialog.java
@@ -0,0 +1,106 @@
+// $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.ui.dialog.deleteConfigurator;
+
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Shell;
+
+import eu.etaxonomy.cdm.api.service.config.DeleteConfiguratorBase;
+import eu.etaxonomy.cdm.api.service.config.SpecimenDeleteConfigurator;
+import eu.etaxonomy.cdm.api.service.config.TaxonBaseDeletionConfigurator;
+
+/**
+ * Abstract subclass of MessageDialog providing the functionality to configure
+ * a {@link DeleteConfiguratorBase}
+ * @author pplitzner
+ * @date Jan 28, 2015
+ *
+ */
+public class DeleteConfiguratorDialog extends MessageDialog{
+
+    private final DeleteConfiguratorBase configurator;
+
+    public DeleteConfiguratorDialog(DeleteConfiguratorBase configurator, Shell parentShell, String dialogTitle,
+            Image dialogTitleImage, String dialogMessage, int dialogImageType, String[] dialogButtonLabels, int defaultIndex) {
+        super(parentShell, dialogTitle, dialogTitleImage, dialogMessage, dialogImageType, dialogButtonLabels, defaultIndex);
+        this.configurator = configurator;
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.jface.dialogs.MessageDialog#createCustomArea(org.eclipse.swt.widgets.Composite)
+     */
+    @Override
+    protected Control createCustomArea(Composite parent) {
+        DeleteConfiguratorComposite composite = new DeleteConfiguratorComposite(parent, NONE);
+        if(configurator instanceof TaxonBaseDeletionConfigurator){
+            composite.addConfiguratorComposite(new DeleteTaxonConfiguratorComposite((TaxonBaseDeletionConfigurator) configurator, composite.getSectionConfigure(), SWT.NONE));
+        }
+        else if(configurator instanceof SpecimenDeleteConfigurator){
+            composite.addConfiguratorComposite(new DeleteSpecimenConfiguratorComposite((SpecimenDeleteConfigurator) configurator, composite.getSectionConfigure(), SWT.NONE));
+        }
+        return composite;
+    }
+
+    public static boolean openConfirmWithConfigurator(DeleteConfiguratorBase configurator, Shell parent, String title, String message) {
+        DeleteConfiguratorDialog dialog = new DeleteConfiguratorDialog(configurator, parent, title, getDefaultImage(), message, QUESTION, getButtonLabels(QUESTION), 0);
+        return dialog.open() == 0;
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.jface.dialogs.Dialog#isResizable()
+     */
+    @Override
+    protected boolean isResizable() {
+        return true;
+    }
+
+
+    /**
+     * @param kind
+     * @return
+     */
+    protected static String[] getButtonLabels(int kind) {
+        String[] dialogButtonLabels;
+        switch (kind) {
+        case ERROR:
+        case INFORMATION:
+        case WARNING: {
+            dialogButtonLabels = new String[] { IDialogConstants.OK_LABEL };
+            break;
+        }
+        case CONFIRM: {
+            dialogButtonLabels = new String[] { IDialogConstants.OK_LABEL,
+                    IDialogConstants.CANCEL_LABEL };
+            break;
+        }
+        case QUESTION: {
+            dialogButtonLabels = new String[] { IDialogConstants.YES_LABEL,
+                    IDialogConstants.NO_LABEL };
+            break;
+        }
+        case QUESTION_WITH_CANCEL: {
+            dialogButtonLabels = new String[] { IDialogConstants.YES_LABEL,
+                    IDialogConstants.NO_LABEL,
+                    IDialogConstants.CANCEL_LABEL };
+            break;
+        }
+        default: {
+            throw new IllegalArgumentException(
+                    "Illegal value for kind in MessageDialog.open()"); //$NON-NLS-1$
+        }
+        }
+        return dialogButtonLabels;
+    }
+}
\ No newline at end of file
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/deleteConfigurator/DeleteSpecimenConfiguratorComposite.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/deleteConfigurator/DeleteSpecimenConfiguratorComposite.java
new file mode 100644
index 000000000..6d4e0b24d
--- /dev/null
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/deleteConfigurator/DeleteSpecimenConfiguratorComposite.java
@@ -0,0 +1,88 @@
+// $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.ui.dialog.deleteConfigurator;
+
+import org.eclipse.core.databinding.DataBindingContext;
+import org.eclipse.core.databinding.beans.PojoProperties;
+import org.eclipse.core.databinding.observable.value.IObservableValue;
+import org.eclipse.jface.databinding.swt.WidgetProperties;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.DisposeEvent;
+import org.eclipse.swt.events.DisposeListener;
+import org.eclipse.swt.layout.RowLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+
+import eu.etaxonomy.cdm.api.service.config.SpecimenDeleteConfigurator;
+
+/**
+ * @author pplitzner
+ * @date Feb 18, 2015
+ *
+ */
+public class DeleteSpecimenConfiguratorComposite extends Composite {
+    private final DataBindingContext m_bindingContext;
+
+    private final FormToolkit toolkit = new FormToolkit(Display.getCurrent());
+
+    private final SpecimenDeleteConfigurator configurator;
+    private final Button btnDeleteChildren;
+    private final Button btnDeleteFromTypeDesignation;
+    private final Button btnDeleteMolecularData;
+
+    /**
+     * Create the composite.
+     * @param parent
+     * @param style
+     */
+    public DeleteSpecimenConfiguratorComposite(SpecimenDeleteConfigurator configurator, Composite parent, int style) {
+        super(parent, style);
+        this.configurator = configurator;
+        addDisposeListener(new DisposeListener() {
+            @Override
+            public void widgetDisposed(DisposeEvent e) {
+                toolkit.dispose();
+            }
+        });
+        toolkit.paintBordersFor(this);
+        setLayout(new RowLayout(SWT.VERTICAL));
+
+        btnDeleteChildren = new Button(this, SWT.CHECK);
+        btnDeleteChildren.setText("Delete Children");
+
+        btnDeleteFromTypeDesignation = new Button(this, SWT.CHECK);
+        btnDeleteFromTypeDesignation.setText("Delete from type designation");
+
+        btnDeleteMolecularData = new Button(this, SWT.CHECK);
+        btnDeleteMolecularData.setText("Delete molecular data");
+        m_bindingContext = initDataBindings();
+
+    }
+
+    protected DataBindingContext initDataBindings() {
+        DataBindingContext bindingContext = new DataBindingContext();
+        //
+        IObservableValue observeSelectionBtnDeleteChildrenObserveWidget = WidgetProperties.selection().observe(btnDeleteChildren);
+        IObservableValue deleteChildrenConfiguratorObserveValue = PojoProperties.value("deleteChildren").observe(configurator);
+        bindingContext.bindValue(observeSelectionBtnDeleteChildrenObserveWidget, deleteChildrenConfiguratorObserveValue, null, null);
+        //
+        IObservableValue observeSelectionBtnDeleteFromTypeDesignationObserveWidget = WidgetProperties.selection().observe(btnDeleteFromTypeDesignation);
+        IObservableValue deleteFromTypeDesignationConfiguratorObserveValue = PojoProperties.value("deleteFromTypeDesignation").observe(configurator);
+        bindingContext.bindValue(observeSelectionBtnDeleteFromTypeDesignationObserveWidget, deleteFromTypeDesignationConfiguratorObserveValue, null, null);
+        //
+        IObservableValue observeSelectionBtnDeleteMolecularDataObserveWidget = WidgetProperties.selection().observe(btnDeleteMolecularData);
+        IObservableValue deleteMolecularDataConfiguratorObserveValue = PojoProperties.value("deleteMolecularData").observe(configurator);
+        bindingContext.bindValue(observeSelectionBtnDeleteMolecularDataObserveWidget, deleteMolecularDataConfiguratorObserveValue, null, null);
+        //
+        return bindingContext;
+    }
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/deleteConfigurator/DeleteTaxonConfiguratorComposite.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/deleteConfigurator/DeleteTaxonConfiguratorComposite.java
new file mode 100644
index 000000000..b2e21d4f3
--- /dev/null
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/deleteConfigurator/DeleteTaxonConfiguratorComposite.java
@@ -0,0 +1,72 @@
+// $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.ui.dialog.deleteConfigurator;
+
+import org.eclipse.core.databinding.DataBindingContext;
+import org.eclipse.core.databinding.beans.PojoProperties;
+import org.eclipse.core.databinding.observable.value.IObservableValue;
+import org.eclipse.jface.databinding.swt.WidgetProperties;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.DisposeEvent;
+import org.eclipse.swt.events.DisposeListener;
+import org.eclipse.swt.layout.RowLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+
+import eu.etaxonomy.cdm.api.service.config.TaxonBaseDeletionConfigurator;
+
+/**
+ * @author pplitzner
+ * @date Feb 18, 2015
+ *
+ */
+public class DeleteTaxonConfiguratorComposite extends Composite {
+    private final DataBindingContext m_bindingContext;
+
+    private final FormToolkit toolkit = new FormToolkit(Display.getCurrent());
+    private final TaxonBaseDeletionConfigurator configurator;
+    private final Button btnDeleteTaxonName;
+
+    /**
+     * Create the composite.
+     * @param parent
+     * @param style
+     */
+    public DeleteTaxonConfiguratorComposite(TaxonBaseDeletionConfigurator configurator, Composite parent, int style) {
+        super(parent, style);
+        this.configurator = configurator;
+        addDisposeListener(new DisposeListener() {
+            @Override
+            public void widgetDisposed(DisposeEvent e) {
+                toolkit.dispose();
+            }
+        });
+        toolkit.paintBordersFor(this);
+        setLayout(new RowLayout(SWT.VERTICAL));
+        setBackground(getBackground());
+
+        btnDeleteTaxonName = new Button(this, SWT.CHECK);
+        btnDeleteTaxonName.setText("Delete taxon name");
+        m_bindingContext = initDataBindings();
+
+    }
+
+    protected DataBindingContext initDataBindings() {
+        DataBindingContext bindingContext = new DataBindingContext();
+        //
+        IObservableValue observeSelectionBtnDeleteTaxonNameObserveWidget = WidgetProperties.selection().observe(btnDeleteTaxonName);
+        IObservableValue deleteNameIfPossibleConfiguratorObserveValue = PojoProperties.value("deleteNameIfPossible").observe(configurator);
+        bindingContext.bindValue(observeSelectionBtnDeleteTaxonNameObserveWidget, deleteNameIfPossibleConfiguratorObserveValue, null, null);
+        //
+        return bindingContext;
+    }
+}
