package edu.ualberta.med.biobank.treeview.admin;
import java.util.List;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.Tree;
import edu.ualberta.med.biobank.SessionManager;
import edu.ualberta.med.biobank.common.action.study.StudyDeleteAction;
import edu.ualberta.med.biobank.common.permission.study.StudyDeletePermission;
import edu.ualberta.med.biobank.common.permission.study.StudyReadPermission;
import edu.ualberta.med.biobank.common.permission.study.StudyUpdatePermission;
import edu.ualberta.med.biobank.common.wrappers.ModelWrapper;
import edu.ualberta.med.biobank.common.wrappers.StudyWrapper;
import edu.ualberta.med.biobank.forms.StudyEntryForm;
import edu.ualberta.med.biobank.forms.StudyViewForm;
import edu.ualberta.med.biobank.gui.common.BgcPlugin;
import edu.ualberta.med.biobank.model.Study;
import edu.ualberta.med.biobank.treeview.AbstractAdapterBase;
import edu.ualberta.med.biobank.treeview.AdapterBase;
import gov.nih.nci.system.applicationservice.ApplicationException;
public class StudyAdapter extends AdapterBase {
public StudyAdapter(AdapterBase parent, StudyWrapper study) {
super(parent, study);
}
@Override
public void init() {
try {
Integer id = ((StudyWrapper) getModelObject()).getId();
this.isDeletable =
SessionManager.getAppService().isAllowed(
new StudyDeletePermission(id));
this.isReadable =
SessionManager.getAppService().isAllowed(
new StudyReadPermission(id));
this.isEditable =
SessionManager.getAppService().isAllowed(
new StudyUpdatePermission(id));
} catch (ApplicationException e) {
BgcPlugin.openAsyncError("Permission Error",
"Unable to retrieve user permissions");
}
}
@Override
protected void setModelObject(Object modelObject) {
super.setModelObject(modelObject);
}
@Override
protected String getLabelInternal() {
StudyWrapper study = (StudyWrapper) getModelObject();
return study.getNameShort();
}
@Override
public String getTooltipTextInternal() {
return getTooltipText(Messages.StudyAdapter_study_label);
}
@Override
public void popupMenu(TreeViewer tv, Tree tree, Menu menu) {
addEditMenu(menu, Messages.StudyAdapter_study_label);
addViewMenu(menu, Messages.StudyAdapter_study_label);
addDeleteMenu(menu, Messages.StudyAdapter_study_label);
}
@Override
protected String getConfirmDeleteMessage() {
return Messages.StudyAdapter_delete_confirm_msg;
}
@Override
protected AdapterBase createChildNode() {
return null;
}
@Override
protected AdapterBase createChildNode(Object child) {
return null;
}
@Override
protected List<? extends ModelWrapper<?>> getWrapperChildren()
throws Exception {
return null;
}
@Override
public String getEntryFormId() {
return StudyEntryForm.ID;
}
@Override
public String getViewFormId() {
return StudyViewForm.ID;
}
@Override
public int compareTo(AbstractAdapterBase o) {
if (o instanceof StudyAdapter)
return internalCompareTo(o);
return 0;
}
@Override
protected void runDelete() throws Exception {
SessionManager.getAppService().doAction(
new StudyDeleteAction((Study) getModelObject().getWrappedObject()));
SessionManager.updateAllSimilarNodes(getParent(), true);
}
// Uncomment when we start using MVP again
//
// public IEditorPart openEntryForm(boolean hasPreviousForm) {
// eventBus.fireEvent(new StudyEditEvent(study.getId()));
// return null; // TODO: problem !?
// }
//
// @Override
// public void openViewForm() {
// super.openViewForm();
// @Override
// // eventBus.fireEvent(new StudyViewEvent(study.getId()));
// }
}