package edu.ualberta.med.biobank.handlers;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.runtime.Assert;
import org.eclipse.ui.PlatformUI;
import edu.ualberta.med.biobank.SessionManager;
import edu.ualberta.med.biobank.common.permission.specimenType.SpecimenTypeCreatePermission;
import edu.ualberta.med.biobank.forms.SpecimenTypesViewForm;
import edu.ualberta.med.biobank.forms.input.FormInput;
import edu.ualberta.med.biobank.gui.common.BgcPlugin;
import edu.ualberta.med.biobank.gui.common.handlers.LogoutSensitiveHandler;
import edu.ualberta.med.biobank.treeview.admin.SessionAdapter;
import gov.nih.nci.system.applicationservice.ApplicationException;
public class EditSpecimenTypesHandler extends LogoutSensitiveHandler {
public static final String ID =
"edu.ualberta.med.biobank.commands.editSpecimenTypes"; //$NON-NLS-1$
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
SessionAdapter sessionAdapter = SessionManager.getInstance()
.getSession();
Assert.isNotNull(sessionAdapter);
try {
PlatformUI
.getWorkbench()
.getActiveWorkbenchWindow()
.getActivePage()
.openEditor(new FormInput(sessionAdapter),
SpecimenTypesViewForm.ID, false, 0);
} catch (Exception e) {
throw new ExecutionException(
Messages.EditSpecimenTypesHandler_handler_error_msg, e);
}
return null;
}
@Override
public boolean isEnabled() {
try {
if (allowed == null)
allowed = SessionManager.getAppService().isAllowed(
new SpecimenTypeCreatePermission());
return SessionManager.getUser().isSuperAdmin()
&& allowed
&& (SessionManager.getInstance().getSession() != null);
} catch (ApplicationException e) {
BgcPlugin.openAsyncError("Error", "Unable to retrieve permissions");
return false;
}
}
}