From 4693bb6ce17190f5e24c73cce8bd85a38c4f0c41 Mon Sep 17 00:00:00 2001 From: buczekp <buczekp> Date: Tue, 14 Jul 2009 09:15:00 +0000 Subject: [PATCH] [LMS-1032] cannot delete internally managed vocabularies SVN: 11739 --- .../ui/grid/AbstractBrowserGrid.java | 14 +++++++++++- .../ui/vocabulary/VocabularyGrid.java | 22 ++++++++++++++++--- 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractBrowserGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractBrowserGrid.java index 6aa41c8c81e..1df6d3e6c0a 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractBrowserGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractBrowserGrid.java @@ -1351,10 +1351,22 @@ public abstract class AbstractBrowserGrid<T/* Entity */, M extends BaseEntityMod if (data.isEmpty() == false) { IBrowserGridActionInvoker invoker = asActionInvoker(); - createDialog(data, invoker).show(); + if (validateSelectedData(data)) + { + createDialog(data, invoker).show(); + } } } + /** + * If specified data is valid returns true, otherwise returns false. Dialog will be shown + * only if this method returns true. Default implementation always returns true. + */ + protected boolean validateSelectedData(List<T> data) + { + return true; + } + protected abstract Dialog createDialog(List<T> data, IBrowserGridActionInvoker invoker); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/vocabulary/VocabularyGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/vocabulary/VocabularyGrid.java index 732e03b4a91..56679e76d31 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/vocabulary/VocabularyGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/vocabulary/VocabularyGrid.java @@ -107,8 +107,8 @@ public class VocabularyGrid extends AbstractSimpleBrowserGrid<Vocabulary> Vocabulary vocabulary = selectedItem.getBaseObject(); if (vocabulary.isManagedInternally()) { - MessageBox.alert("Error", - "Internally managed vocabulary cannot be edited.", null); + String errorMsg = "Internally managed vocabulary cannot be edited."; + MessageBox.alert("Error", errorMsg, null); } else { createEditEntityDialog(vocabulary).show(); @@ -116,10 +116,11 @@ public class VocabularyGrid extends AbstractSimpleBrowserGrid<Vocabulary> } })); - + addButton(createSelectedItemsButton(viewContext.getMessage(Dict.BUTTON_DELETE), new AbstractCreateDialogListener() { + @Override protected Dialog createDialog(List<Vocabulary> vocabularies, IBrowserGridActionInvoker invoker) @@ -127,6 +128,21 @@ public class VocabularyGrid extends AbstractSimpleBrowserGrid<Vocabulary> return new VocabularyListDeletionConfirmationDialog(viewContext, vocabularies, createDeletionCallback(invoker)); } + + @Override + protected boolean validateSelectedData(List<Vocabulary> data) + { + String errorMsg = "Internally managed vocabulary cannot be deleted."; + for (Vocabulary vocabulary : data) + { + if (vocabulary.isManagedInternally()) + { + MessageBox.alert("Error", errorMsg, null); + return false; + } + } + return true; + } })); allowMultipleSelection(); // we allow deletion of multiple attachments -- GitLab