package edu.ualberta.med.biobank.handlers;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import edu.ualberta.med.biobank.SessionManager;
import edu.ualberta.med.biobank.common.permission.containerType.ContainerTypeCreatePermission;
import edu.ualberta.med.biobank.common.wrappers.ContainerTypeWrapper;
import edu.ualberta.med.biobank.gui.common.BgcPlugin;
import edu.ualberta.med.biobank.gui.common.handlers.LogoutSensitiveHandler;
import edu.ualberta.med.biobank.treeview.admin.ContainerTypeAdapter;
import gov.nih.nci.system.applicationservice.ApplicationException;
public class ContainerTypeAddHandler extends LogoutSensitiveHandler {
public static final String ID =
"edu.ualberta.med.biobank.commands.containerTypeAdd"; //$NON-NLS-1$
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
ContainerTypeAdapter containerTypeAdapter = new ContainerTypeAdapter(
null, new ContainerTypeWrapper(SessionManager.getAppService()));
((ContainerTypeWrapper) containerTypeAdapter.getModelObject())
.setSite(SessionManager.getUser().getCurrentWorkingSite());
containerTypeAdapter.openEntryForm(false);
return null;
}
@Override
public boolean isEnabled() {
try {
if (allowed == null) {
Integer centerId =
SessionManager.getUser()
.getCurrentWorkingCenter() != null ? SessionManager
.getUser()
.getCurrentWorkingCenter().getId() : null;
allowed =
SessionManager.getAppService().isAllowed(
new ContainerTypeCreatePermission(centerId));
}
return SessionManager.getInstance().getSession() != null &&
allowed;
} catch (ApplicationException e) {
BgcPlugin.openAsyncError(Messages.HandlerPermission_error,
Messages.HandlerPermission_message);
return false;
}
}
}