package edu.ualberta.med.biobank.handlers;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.commands.IHandler;
import org.eclipse.ui.PlatformUI;
import edu.ualberta.med.biobank.SessionManager;
import edu.ualberta.med.biobank.common.action.security.ManagerContext;
import edu.ualberta.med.biobank.common.action.security.ManagerContextGetAction;
import edu.ualberta.med.biobank.common.action.security.ManagerContextGetInput;
import edu.ualberta.med.biobank.common.permission.security.UserManagerPermission;
import edu.ualberta.med.biobank.dialogs.user.UserManagementDialog;
import edu.ualberta.med.biobank.gui.common.BgcPlugin;
import edu.ualberta.med.biobank.gui.common.handlers.LogoutSensitiveHandler;
import edu.ualberta.med.biobank.server.applicationservice.BiobankApplicationService;
import gov.nih.nci.system.applicationservice.ApplicationException;
public class UserManagementHandler extends LogoutSensitiveHandler implements
IHandler {
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
try {
BiobankApplicationService service = SessionManager.getAppService();
ManagerContext context = service.doAction(
new ManagerContextGetAction(
new ManagerContextGetInput())).getContext();
new UserManagementDialog(PlatformUI.getWorkbench()
.getActiveWorkbenchWindow().getShell(), context).open();
} catch (ApplicationException e) {
BgcPlugin.openAsyncError(
"Unable to Load User Management Data", e.getMessage());
}
return null;
}
@Override
public boolean isEnabled() {
if (allowed == null)
try {
allowed = SessionManager.getAppService().isAllowed(
new UserManagerPermission());
} catch (ApplicationException e) {
BgcPlugin.openAsyncError(
"Unable to Load User Management Data", e.getMessage());
}
return allowed;
}
}