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 edu.ualberta.med.biobank.SessionManager;
import edu.ualberta.med.biobank.common.permission.processingEvent.ProcessingEventCreatePermission;
import edu.ualberta.med.biobank.common.wrappers.ProcessingEventWrapper;
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 edu.ualberta.med.biobank.treeview.processing.ProcessingEventAdapter;
import edu.ualberta.med.biobank.views.ProcessingView;
import gov.nih.nci.system.applicationservice.ApplicationException;
public class ProcessingEventAddHandler extends LogoutSensitiveHandler {
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
SessionAdapter sessionAdapter = SessionManager.getInstance()
.getSession();
Assert.isNotNull(sessionAdapter);
ProcessingEventWrapper pe = new ProcessingEventWrapper(
SessionManager.getAppService());
pe.setCenter(SessionManager.getUser().getCurrentWorkingCenter());
ProcessingEventAdapter node = new ProcessingEventAdapter(ProcessingView
.getCurrent().getProcessingNode(), pe);
node.openEntryForm();
return null;
}
@Override
public boolean isEnabled() {
try {
if (allowed == null)
allowed =
SessionManager.getAppService().isAllowed(
new ProcessingEventCreatePermission(SessionManager
.getUser().getCurrentWorkingCenter().getId()));
} catch (ApplicationException e) {
BgcPlugin.openAsyncError(Messages.HandlerPermission_error,
Messages.HandlerPermission_message);
}
return allowed;
}
}