From e9a587e77f574b72800b16b53a07d3ca4066d2da Mon Sep 17 00:00:00 2001
From: Patric Plitzner
Date: Mon, 16 Feb 2015 13:57:01 +0000
Subject: [PATCH] - added configurator settings to taxon deletion dialog
---
.gitattributes | 2 +
.../navigator/handler/DeleteHandler.java | 62 ++++++-------
.../ui/dialog/DeleteConfiguratorDialog.java | 86 +++++++++++++++++++
.../dialog/DeleteTaxonConfiguratorDialog.java | 77 +++++++++++++++++
4 files changed, 197 insertions(+), 30 deletions(-)
create mode 100644 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/DeleteConfiguratorDialog.java
create mode 100644 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/DeleteTaxonConfiguratorDialog.java
diff --git a/.gitattributes b/.gitattributes
index 95a3ad7ce..dc32f59a7 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1410,6 +1410,8 @@ 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/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/selection/AbstractFilteredCdmEnumSelectionDialog.java -text
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 cf7ae81e4..d492be604 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
@@ -17,7 +17,6 @@ import java.util.Set;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.commands.IHandler;
import org.eclipse.core.commands.common.NotDefinedException;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.TreeSelection;
@@ -34,13 +33,15 @@ 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;
-import eu.etaxonomy.cdm.persistence.dao.hibernate.taxon.TaxonNodeDaoHibernateImpl;
import eu.etaxonomy.taxeditor.editor.TaxonEditorInput;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
import eu.etaxonomy.taxeditor.model.MessagingUtils;
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;
/**
* DeleteTreeNodeHandler class.
@@ -49,7 +50,7 @@ import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
* @created 06.04.2009
* @version 1.0
*/
-public class DeleteHandler extends AbstractHandler implements IHandler{
+public class DeleteHandler extends AbstractHandler{
protected IWorkbenchPage activePage;
protected TaxonNavigator taxonNavigator;
@@ -64,11 +65,6 @@ public class DeleteHandler extends AbstractHandler implements IHandler{
TreeSelection selection = (TreeSelection) HandlerUtil.getCurrentSelection(event);
- String plural = selection.size() > 1 ? "s" : "";
- // Prompt user for confirmation
-
-
-
Iterator selectionIterator = selection.iterator();
Set treeNodes = new HashSet();
@@ -85,28 +81,34 @@ public class DeleteHandler extends AbstractHandler implements IHandler{
}
}
AbstractPostOperation operation = null;
+ TaxonDeletionConfigurator config = new TaxonDeletionConfigurator();
if (treeNodes.size() == 1 ){
try {
-
+
ITaxonTreeNode treeNode = treeNodes.iterator().next();
ITaxonTreeNode taxonNode =treeNode;
TaxonNodeDeletionConfigurator configNodes = new TaxonNodeDeletionConfigurator();
- TaxonDeletionConfigurator config = new TaxonDeletionConfigurator();
if (taxonNode instanceof Classification && taxonNode.hasChildNodes()){
- if(! MessageDialog.openConfirm(HandlerUtil.getActiveShell(event), "Confirm Deletion", "Do you really want to delete the classification? The tree has children, they will be deleted, too.")){
+ 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.")){
return null;
}
} else if (taxonNode instanceof Classification && !taxonNode.hasChildNodes()){
- if(! MessageDialog.openConfirm(HandlerUtil.getActiveShell(event), "Confirm Deletion", "Do you really want to delete the classification?")){
+ if(!DeleteTaxonConfiguratorDialog.openConfirmWithConfigurator(config, HandlerUtil.getActiveShell(event), "Confirm Deletion", "Do you really want to delete the classification?")){
return null;
}
} else {
+
if (taxonNode.hasChildNodes()){
- MessageDialog dialog = new MessageDialog(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);
+ DeleteConfiguratorDialog dialog = new DeleteTaxonConfiguratorDialog(
+ 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);
@@ -118,15 +120,15 @@ public class DeleteHandler extends AbstractHandler implements IHandler{
} else if (result == 2){
//skip
return null;
-
+
}
}else{
- if(! MessageDialog.openConfirm(HandlerUtil.getActiveShell(event), "Confirm Deletion", "Do you really want to delete the selected node?")){
+ if(!DeleteTaxonConfiguratorDialog.openConfirmWithConfigurator(config, HandlerUtil.getActiveShell(event), "Confirm Deletion", "Do you really want to delete the selected node?")){
return null;
}
}
}
-
+
if (allEditorsClosed){
/*if(! MessageDialog.openConfirm(HandlerUtil.getActiveShell(event), "Confirm Deletion", "Do you really want to delete the selected nodes?")){
return null;
@@ -134,27 +136,27 @@ public class DeleteHandler extends AbstractHandler implements IHandler{
operation = new DeleteOperation(
event.getCommand().getName(), NavigationUtil.getUndoContext(),
taxonNode, config, taxonNavigator, taxonNavigator);
-
- NavigationUtil.executeOperation(operation);
+
+ AbstractUtility.executeOperation(operation);
//}
}
-
-
-
+
+
+
} catch (NotDefinedException e) {
MessagingUtils.warn(getClass(), "Command name not set");
}
} else{
try{
- if(! MessageDialog.openConfirm(HandlerUtil.getActiveShell(event), "Confirm Deletion", "Do you really want to delete the selected nodes?")){
+ if(!DeleteTaxonConfiguratorDialog.openConfirmWithConfigurator(config, HandlerUtil.getActiveShell(event), "Confirm Deletion", "Do you really want to delete the selected nodes?")){
return null;
}
if (allEditorsClosed){
operation = new DeleteOperation(
event.getCommand().getName(), NavigationUtil.getUndoContext(),
treeNodes, new TaxonDeletionConfigurator(), taxonNavigator, taxonNavigator);
-
- NavigationUtil.executeOperation(operation);
+
+ AbstractUtility.executeOperation(operation);
}
}catch (NotDefinedException e) {
MessagingUtils.warn(getClass(), "Command name not set");
@@ -168,8 +170,8 @@ public class DeleteHandler extends AbstractHandler implements IHandler{
for (IEditorReference ref : activePage.getEditorReferences()) {
try {
String treeIndex = ((ITreeNode)taxonNode).treeIndex();
-
-
+
+
IEditorInput input = ref.getEditorInput();
if (input instanceof TaxonEditorInput) {
TaxonNode node = ((TaxonEditorInput) input).getTaxonNode();
@@ -177,7 +179,7 @@ public class DeleteHandler extends AbstractHandler implements IHandler{
if( ((ITreeNode) node).treeIndex().startsWith(treeIndex)){
//if (taxonNode.equals(node)) {
result &= activePage.closeEditor(ref.getEditor(false), true);
-
+
}
}
} catch (PartInitException 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
new file mode 100644
index 000000000..843ff14fb
--- /dev/null
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/DeleteConfiguratorDialog.java
@@ -0,0 +1,86 @@
+// $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.Listener;
+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 implements Listener{
+
+ 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);
+
+ createCheckBoxes(composite);
+
+ return composite;
+ }
+
+ protected abstract void createCheckBoxes(Composite parent);
+
+ /**
+ * @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
new file mode 100644
index 000000000..e7a822cf5
--- /dev/null
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/DeleteTaxonConfiguratorDialog.java
@@ -0,0 +1,77 @@
+// $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.SWT;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+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;
+ private Button btnDeleteName;
+
+ /**
+ * @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.swt.widgets.Listener#handleEvent(org.eclipse.swt.widgets.Event)
+ */
+ @Override
+ public void handleEvent(Event event) {
+ if(event.widget==btnDeleteName){
+ configurator.setDeleteNameIfPossible(btnDeleteName.getSelection());
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.taxeditor.ui.dialog.DeleteConfiguratorDialog#createCheckBoxes()
+ */
+ @Override
+ protected void createCheckBoxes(Composite parent) {
+ btnDeleteName = new Button(parent, SWT.CHECK);
+ btnDeleteName.setText("Delete taxon name if possible");
+ btnDeleteName.addListener(SWT.Selection, this);
+ btnDeleteName.setSelection(configurator.isDeleteNameIfPossible());
+ }
+
+ 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;
+ }
+
+}
--
2.34.1