Skip to content
Snippets Groups Projects
Commit 1e5bde6e authored by buczekp's avatar buczekp
Browse files

[LMS-1302] implemented restore of default display settings (without currently opened tab refresh)

SVN: 14220
parent cb901304
No related branches found
No related tags found
No related merge requests found
Showing
with 134 additions and 6 deletions
......@@ -51,15 +51,25 @@ public interface IClientService extends RemoteService
public SessionContext tryToLogin(String userID, String password) throws UserFailureException;
/**
* Sets the base URL that the client uses to connect the web server.
* Sets the base URL that the client uses to connect the web server.
*/
public void setBaseURL(String baseURL);
/**
* Updates display settings on the server.
*/
public void updateDisplaySettings(DisplaySettings displaySettings);
/**
* Resets display settings of the logged user to the default settings.
* <p>
* NOTE: this changes user display settings only on the DB level. Old settings are still in the
* session and needs to be updated with the settings returned by this function.
*
* @return default display settings
*/
public DisplaySettings resetDisplaySettings();
/**
* Changes logged user home group on the server.
*/
......
......@@ -40,10 +40,13 @@ public interface IClientServiceAsync
/** @see IClientService#setBaseURL(String) */
public void setBaseURL(String baseURL, AsyncCallback<SessionContext> callback);
/** @see IClientService#updateDisplaySettings(DisplaySettings) */
public void updateDisplaySettings(DisplaySettings displaySettings, AsyncCallback<Void> callback);
/** @see IClientService#resetDisplaySettings() */
public void resetDisplaySettings(AsyncCallback<DisplaySettings> resetUserSettingsCallback);
/** @see IClientService#changeUserHomeGroup(TechId) */
public void changeUserHomeGroup(TechId groupIdOrNull, AsyncCallback<Void> callback);
......
......@@ -81,7 +81,9 @@ public final class CommonViewContext implements IViewContext<ICommonClientServic
public void initDisplaySettingsManager()
{
displaySettingsManager = createDisplaySettingsManager();
final DisplaySettings loggedUserDisplaySettings =
viewModel.getSessionContext().getDisplaySettings();
displaySettingsManager = createDisplaySettingsManager(loggedUserDisplaySettings);
}
public DisplaySettingsManager getDisplaySettingsManager()
......@@ -90,9 +92,9 @@ public final class CommonViewContext implements IViewContext<ICommonClientServic
return displaySettingsManager;
}
private DisplaySettingsManager createDisplaySettingsManager()
private DisplaySettingsManager createDisplaySettingsManager(
final DisplaySettings displaySettings)
{
final DisplaySettings displaySettings = viewModel.getSessionContext().getDisplaySettings();
IDelegatedAction settingsUpdater = new IDelegatedAction()
{
public void execute()
......
......@@ -732,6 +732,11 @@ public abstract class Dict
public static final String USE_WILDCARD_SEARCH_MODE_TOOLTIP =
"use_wildcard_search_mode_tooltip";
public static final String RESET_USER_SETTINGS_BUTTON = "reset_user_settings_button";
public static final String RESET_USER_SETTINGS_CONFIRMATION_MSG =
"reset_user_settings_confirmation_msg";
//
// Unclassified
//
......
......@@ -16,9 +16,17 @@
package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.user;
import com.extjs.gxt.ui.client.event.ButtonEvent;
import com.extjs.gxt.ui.client.event.Listener;
import com.extjs.gxt.ui.client.event.MessageBoxEvent;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.widget.Dialog;
import com.extjs.gxt.ui.client.widget.MessageBox;
import com.extjs.gxt.ui.client.widget.Window;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.google.gwt.user.client.rpc.AsyncCallback;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericConstants;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext;
......@@ -28,6 +36,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.
import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.FieldUtil;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IDelegatedAction;
import ch.systemsx.cisd.openbis.generic.shared.basic.TechId;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DisplaySettings;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Group;
/**
......@@ -59,8 +68,13 @@ public class ChangeUserSettingsDialog extends AbstractSaveDialog
addField(homeGroupField = createHomeGroupField());
addField(useWildcardSearchModeCheckbox = createUseWildcardSearchModeField());
fbar.insert(createResetButton(), 1); // inserting Reset button in between Save and Cancel
}
//
// Change
//
private final GroupSelectionWidget createHomeGroupField()
{
GroupSelectionWidget field = new GroupSelectionWidget(viewContext, GROUP_FIELD_ID, false);
......@@ -95,4 +109,56 @@ public class ChangeUserSettingsDialog extends AbstractSaveDialog
{
return useWildcardSearchModeCheckbox.getValue();
}
//
// Reset
//
private Button createResetButton()
{
final String buttonTitle = viewContext.getMessage(Dict.RESET_USER_SETTINGS_BUTTON);
final Button button = new Button(buttonTitle, new SelectionListener<ButtonEvent>()
{
@Override
public final void componentSelected(ButtonEvent ce)
{
final String title = viewContext.getMessage(Dict.CONFIRM_TITLE);
final String msg =
viewContext.getMessage(Dict.RESET_USER_SETTINGS_CONFIRMATION_MSG);
MessageBox.confirm(title, msg, new Listener<MessageBoxEvent>()
{
public void handleEvent(MessageBoxEvent messageEvent)
{
if (messageEvent.getButtonClicked().getItemId().equals(Dialog.YES))
{
resetUserSettings();
}
}
});
}
});
return button;
}
private void resetUserSettings()
{
viewContext.getService().resetDisplaySettings(new ResetUserSettingsCallback(viewContext));
}
public final class ResetUserSettingsCallback extends AbstractAsyncCallback<DisplaySettings>
{
private ResetUserSettingsCallback(IViewContext<?> viewContext)
{
super(viewContext);
}
@Override
public final void process(final DisplaySettings defaultDisplaySettings)
{
// reinitialize DisplaySettingsManager with updated SessionContext
viewContext.getModel().getSessionContext().setDisplaySettings(defaultDisplaySettings);
viewContext.initDisplaySettingsManager();
hide();
}
}
}
......@@ -399,6 +399,25 @@ public abstract class AbstractClientService implements IClientService,
}
}
public DisplaySettings resetDisplaySettings()
{
try
{
final String sessionToken = getSessionToken();
IServer server = getServer();
final DisplaySettings defaultSettings = server.getDefaultDisplaySettings(sessionToken);
updateDisplaySettings(defaultSettings);
return defaultSettings;
} catch (InvalidSessionException e)
{
// ignored
} catch (final ch.systemsx.cisd.common.exceptions.UserFailureException e)
{
throw UserFailureExceptionTranslator.translate(e);
}
return null;
}
public void changeUserHomeGroup(TechId groupIdOrNull)
{
try
......
......@@ -313,6 +313,18 @@ public abstract class AbstractServer<T extends IServer> extends AbstractServiceW
}
}
public DisplaySettings getDefaultDisplaySettings(String sessionToken)
{
PersonPE systemUser =
getDAOFactory().getPersonDAO().tryFindPersonByUserId(PersonPE.SYSTEM_USER_ID);
if (systemUser == null)
{
throw new UserFailureException(
"Couldn't find system user with default settings in the DB.");
}
return systemUser.getDisplaySettings();
}
public void changeUserHomeGroup(String sessionToken, TechId groupIdOrNull)
{
final Session session = getSessionManager().getSession(sessionToken);
......
......@@ -167,6 +167,12 @@ public abstract class AbstractServerLogger implements IServer
logTracking(sessionToken, "save_display_settings", "");
}
public DisplaySettings getDefaultDisplaySettings(String sessionToken)
{
logTracking(sessionToken, "get_default_display_settings", "");
return null;
}
public void changeUserHomeGroup(String sessionToken, TechId groupIdOrNull)
{
String groupId = groupIdOrNull == null ? "null" : groupIdOrNull.toString();
......
......@@ -64,6 +64,9 @@ public interface IServer extends ISessionProvider
@Transactional
public void setBaseIndexURL(String sessionToken, String baseIndexURL);
@Transactional
public DisplaySettings getDefaultDisplaySettings(String sessionToken);
@Transactional
public void saveDisplaySettings(String sessionToken, DisplaySettings displaySettings);
......
......@@ -338,6 +338,8 @@ var common = {
home_group_label: "Home Group",
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.",
//
// Role View
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment