diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/AppView.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/AppView.java index eb27b14d55d672e4c0445dd1508457d0312cd322..f49b7fa0b62ab028b766242c54c3abcb0d93dcfd 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/AppView.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/AppView.java @@ -84,6 +84,7 @@ final class AppView extends View private final void createCenter() { center = new MainTabPanel(viewContext); + componentProvider.setMainTabPanel(center); final BorderLayoutData data = new BorderLayoutData(LayoutRegion.CENTER); data.setMargins(new Margins(5)); viewport.add(center, data); @@ -116,7 +117,6 @@ final class AppView extends View } else if (event.getType() == AppEvents.NAVI_EVENT) { activateTab(getData(event)); - } } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/ComponentProvider.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/ComponentProvider.java index 3223f339c5d582cffcdb2640112af342a612926c..5e057251e94a0db78486822c8cf75a935f872722 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/ComponentProvider.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/ComponentProvider.java @@ -63,6 +63,8 @@ public final class ComponentProvider { private final IViewContext<ICommonClientServiceAsync> viewContext; + private MainTabPanel mainTabPanelOrNull; + public ComponentProvider(final IViewContext<ICommonClientServiceAsync> viewContext) { this.viewContext = viewContext; @@ -609,4 +611,14 @@ public final class ComponentProvider } }; } + + public MainTabPanel tryGetMainTabPanel() + { + return mainTabPanelOrNull; + } + + public void setMainTabPanel(MainTabPanel mainTabPanel) + { + this.mainTabPanelOrNull = mainTabPanel; + } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/MainTabPanel.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/MainTabPanel.java index 86367d7f336aa220f240fdef67f21dfce58eca48..86696e82c33459bb6c53f4789c7a3ac27432dbb3 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/MainTabPanel.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/MainTabPanel.java @@ -16,6 +16,7 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.framework; +import java.util.ArrayList; import java.util.HashMap; import java.util.Map; @@ -125,6 +126,15 @@ public class MainTabPanel extends TabPanel } } + /** closes all opened tabs */ + public final void reset() + { + for (TabItem openTab : new ArrayList<TabItem>(openTabs.values())) + { + openTab.close(); + } + } + @Override protected void onItemContextMenu(TabItem item, int x, int y) { diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/menu/TopMenu.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/menu/TopMenu.java index 10f14cf3e0b4ba08cee95349886de3c396292bd6..e40a3e026f3a379eb536357e473697021b8c7957 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/menu/TopMenu.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/menu/TopMenu.java @@ -122,7 +122,7 @@ public class TopMenu extends LayoutContainer toolBar.add(new FillToolItem()); toolBar.add(new SearchWidget(viewContext)); toolBar.add(new SeparatorToolItem()); - toolBar.add(new LoggedUserMenu(viewContext)); + toolBar.add(new LoggedUserMenu(viewContext, componentProvider)); } @Override diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/menu/user/LoggedUserMenu.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/menu/user/LoggedUserMenu.java index 42a779419a0d48cfbf12414437e4dca29921bd3e..65f642f2ea649697dc4da1f85cf990f98c45efda 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/menu/user/LoggedUserMenu.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/menu/user/LoggedUserMenu.java @@ -21,11 +21,14 @@ import com.extjs.gxt.ui.client.widget.menu.Menu; import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync; 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.ComponentProvider; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.MainTabPanel; import ch.systemsx.cisd.openbis.generic.client.web.client.application.menu.ActionMenu; import ch.systemsx.cisd.openbis.generic.client.web.client.application.menu.TopMenu; import ch.systemsx.cisd.openbis.generic.client.web.client.application.menu.TopMenuItem; import ch.systemsx.cisd.openbis.generic.client.web.client.application.menu.user.action.ChangeUserSettingsAction; import ch.systemsx.cisd.openbis.generic.client.web.client.application.menu.user.action.LogoutAction; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IDelegatedAction; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SessionContext; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.User; @@ -39,14 +42,16 @@ public final class LoggedUserMenu extends TopMenuItem private final IViewContext<ICommonClientServiceAsync> viewContext; - public LoggedUserMenu(final IViewContext<ICommonClientServiceAsync> viewContext) + public LoggedUserMenu(final IViewContext<ICommonClientServiceAsync> viewContext, + ComponentProvider componentProvider) { super(null); // menu title is set later this.viewContext = viewContext; Menu submenu = new Menu(); submenu.add(new ActionMenu(TopMenu.ActionMenuKind.USER_MENU_CHANGE_SETTINGS, viewContext, - new ChangeUserSettingsAction(viewContext, this))); + new ChangeUserSettingsAction(viewContext, this, + createOnDisplaySettingsResetAction(componentProvider)))); submenu.add(new ActionMenu(TopMenu.ActionMenuKind.USER_MENU_LOGOUT, viewContext, new LogoutAction(viewContext))); setMenu(submenu); @@ -75,4 +80,23 @@ public final class LoggedUserMenu extends TopMenuItem return info; } + public IDelegatedAction createOnDisplaySettingsResetAction( + final ComponentProvider componentProvider) + { + // all tabs will be closed after reset of display settings + return new IDelegatedAction() + { + public void execute() + { + final MainTabPanel tabPanelOrNull = componentProvider.tryGetMainTabPanel(); + if (tabPanelOrNull == null) + { + // ignore + } else + { + tabPanelOrNull.reset(); + } + } + }; + } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/menu/user/action/ChangeUserSettingsAction.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/menu/user/action/ChangeUserSettingsAction.java index 9206553d3908f686b9ebdec0b81123ecc04265f8..6c44f2df8b34a0c778a936c02048c28484427e94 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/menu/user/action/ChangeUserSettingsAction.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/menu/user/action/ChangeUserSettingsAction.java @@ -32,22 +32,35 @@ public class ChangeUserSettingsAction implements IDelegatedAction private final LoggedUserMenu menu; - public ChangeUserSettingsAction(final IViewContext<?> viewContext, LoggedUserMenu menu) + private final IDelegatedAction onDisplaySettingsResetAction; + + public ChangeUserSettingsAction(final IViewContext<?> viewContext, LoggedUserMenu menu, + IDelegatedAction onDisplaySettingsResetAction) { this.viewContext = viewContext; this.menu = menu; + this.onDisplaySettingsResetAction = onDisplaySettingsResetAction; } public void execute() { + IDelegatedAction saveCallback = new IDelegatedAction() + { + public void execute() + { + menu.refreshTitle(); + } + }; + IDelegatedAction resetCallback = new IDelegatedAction() + { + public void execute() + { + onDisplaySettingsResetAction.execute(); + } + }; + ChangeUserSettingsDialog dialog = - new ChangeUserSettingsDialog(viewContext, new IDelegatedAction() - { - public void execute() - { - menu.refreshTitle(); - } - }); + new ChangeUserSettingsDialog(viewContext, saveCallback, resetCallback); dialog.show(); } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/user/ChangeUserSettingsDialog.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/user/ChangeUserSettingsDialog.java index 4b82e87f14da43c09898aa938cb5f5d4a0dd55e3..e7c19164bbdefb80421693dca8d2acb3a83becd1 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/user/ChangeUserSettingsDialog.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/user/ChangeUserSettingsDialog.java @@ -57,12 +57,15 @@ public class ChangeUserSettingsDialog extends AbstractSaveDialog private final CheckBoxField useWildcardSearchModeCheckbox; + private final IDelegatedAction resetCallback; + public ChangeUserSettingsDialog(final IViewContext<?> viewContext, - final IDelegatedAction saveCallback) + final IDelegatedAction saveCallback, final IDelegatedAction resetCallback) { super(viewContext, viewContext.getMessage(Dict.CHANGE_USER_SETTINGS_DIALOG_TITLE), saveCallback); this.viewContext = viewContext; + this.resetCallback = resetCallback; form.setLabelWidth(150); form.setFieldWidth(400); @@ -158,6 +161,7 @@ public class ChangeUserSettingsDialog extends AbstractSaveDialog // reinitialize DisplaySettingsManager with updated SessionContext viewContext.getModel().getSessionContext().setDisplaySettings(defaultDisplaySettings); viewContext.initDisplaySettingsManager(); + resetCallback.execute(); hide(); } } 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 c2e958aebfb592c624eb22f3ef585b2d6d10a8e4..54649c9e961eb0e45f5b89e573f60c910ac09859 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 @@ -339,7 +339,7 @@ var common = { use_wildcard_search_mode_label: "Search with Wildcards", use_wildcard_search_mode_tooltip: "Check to treat '*' and '?' as wildcards in searched text. Note, that only whole words will match if you don't add '*' at the beginning and at the end of the text.", reset_user_settings_button: "Restore Default", - reset_user_settings_confirmation_msg: "Are you sure that you want to restore default settings?<br><br>Every setting you changed in this application apart from home group, e.g. hiding/showing certain columns in a browser, will be lost.", + reset_user_settings_confirmation_msg: "Are you sure that you want to restore default settings?<br><br><b>Note that:</b><li>Every setting you changed in this application apart from home group, e.g. hiding/showing certain columns in a browser, will be lost.<li>All currently opened tabs will be closed.", // // Role View