diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/Dict.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/Dict.java index 1b5fe8f10b93caa56d6aa5b0c12757cd52b7baf5..fe3ba287f1f3913c0f3d5a7c493152d2c98fc6fb 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/Dict.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/Dict.java @@ -508,6 +508,12 @@ public abstract class Dict public static final String DELETE_PROGRESS_MESSAGE = "delete_progress_message"; + public static final String CANNOT_MODIFY_DELETED_ENTITY_TITLE = + "cannot_modify_deleted_entity_title"; + + public static final String CANNOT_MODIFY_DELETED_ENTITY_MSG = + "cannot_modify_deleted_entity_msg"; + // // Sample Viewer // 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 80a54771a85d2eb3518e85a8c324d3a9dd2b0970..c40c4a430f46c83969ce705b9813c08cb0c5f9be 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 @@ -103,6 +103,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.GridCustomColumnDefinition; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.BrowserGridPagingToolBar.PagingToolBarButtonKind; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.expressions.filter.FilterToolbar; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.listener.OpenEntityEditorTabClickListener; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.IDataRefreshCallback; import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.GWTUtils; import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.GWTUtils.DisplayInfoTime; @@ -387,6 +388,10 @@ public abstract class AbstractBrowserGrid<T/* Entity */, M extends BaseEntityMod protected void showEntityInformationHolderViewer(IEntityInformationHolderWithPermId entity, boolean editMode, boolean inBackground) { + if (OpenEntityEditorTabClickListener.forbidDeletedEntityModification(viewContext, entity)) + { + return; + } final EntityKind entityKind = entity.getEntityKind(); final AbstractTabItemFactory tabView; BasicEntityType entityType = entity.getEntityType(); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/listener/OpenEntityEditorTabClickListener.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/listener/OpenEntityEditorTabClickListener.java index 02f0e474187509deea481a1bab2076b66920612d..78930ee19c014990bef0a8db38d1af500cb4b5fb 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/listener/OpenEntityEditorTabClickListener.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/listener/OpenEntityEditorTabClickListener.java @@ -16,15 +16,19 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.listener; +import com.extjs.gxt.ui.client.widget.MessageBox; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict; import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.AbstractTabItemFactory; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DispatcherHelper; import ch.systemsx.cisd.openbis.generic.client.web.client.application.plugin.IClientPlugin; import ch.systemsx.cisd.openbis.generic.client.web.client.application.plugin.IClientPluginFactory; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IMessageProvider; import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.WidgetUtils; +import ch.systemsx.cisd.openbis.generic.shared.basic.DeletionUtils; import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolder; import ch.systemsx.cisd.openbis.generic.shared.basic.IIdAndCodeHolder; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.BasicEntityType; @@ -59,6 +63,10 @@ public final class OpenEntityEditorTabClickListener implements ClickHandler IEntityInformationHolder entity, boolean inBackground) { assert entity != null : "entity is not provided"; + if (forbidDeletedEntityModification(viewContext, entity)) + { + return; + } final AbstractTabItemFactory tabView; // NOTE: most plugins require a specific type class here! BasicEntityType entityType = entity.getEntityType(); @@ -72,4 +80,21 @@ public final class OpenEntityEditorTabClickListener implements ClickHandler tabView.setInBackground(inBackground); DispatcherHelper.dispatchNaviEvent(tabView); } + + public static boolean forbidDeletedEntityModification(IMessageProvider messageProvider, + IEntityInformationHolder entity) + { + if (DeletionUtils.isDeleted(entity)) + { + String title = + messageProvider.getMessage(Dict.CANNOT_MODIFY_DELETED_ENTITY_TITLE, entity + .getEntityKind().getDescription()); + String msg = + messageProvider.getMessage(Dict.CANNOT_MODIFY_DELETED_ENTITY_MSG, entity + .getEntityKind().getDescription(), entity.getCode()); + MessageBox.alert(title, msg, null); + return true; + } + return false; + } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/public/common-dictionary.js b/openbis/source/java/ch/systemsx/cisd/openbis/public/common-dictionary.js index ba0b829f204656f67ca205bb05fc9f67a250c5aa..169b3cc0c4d57e7fd65215c4370833aecb726067 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/public/common-dictionary.js +++ b/openbis/source/java/ch/systemsx/cisd/openbis/public/common-dictionary.js @@ -72,6 +72,8 @@ var common = { deleting: "Deleting", delete_permanently_progress_message: "Deleting {0}(s)...", delete_progress_message: "Moving {0}(s) to trash ...", + cannot_modify_deleted_entity_title: "Can't modify deleted {0}", + cannot_modify_deleted_entity_msg": "{0} '{1}' has been moved to trash and therefore can't be modified.', // // Table Modifications