package edu.ualberta.med.biobank.treeview.admin;
import java.util.Map;
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.info.ResearchGroupAdapterInfo;
import edu.ualberta.med.biobank.common.permission.researchGroup.ResearchGroupDeletePermission;
import edu.ualberta.med.biobank.common.permission.researchGroup.ResearchGroupReadPermission;
import edu.ualberta.med.biobank.common.permission.researchGroup.ResearchGroupUpdatePermission;
import edu.ualberta.med.biobank.forms.ResearchGroupEntryForm;
import edu.ualberta.med.biobank.forms.ResearchGroupViewForm;
import edu.ualberta.med.biobank.gui.common.BgcPlugin;
import edu.ualberta.med.biobank.treeview.AbstractAdapterBase;
import edu.ualberta.med.biobank.treeview.AbstractNewAdapterBase;
import edu.ualberta.med.biobank.treeview.AdapterBase;
import gov.nih.nci.system.applicationservice.ApplicationException;
public class ResearchGroupAdapter extends AbstractNewAdapterBase {
ResearchGroupAdapterInfo rg;
public ResearchGroupAdapter(AbstractNewAdapterBase parent,
ResearchGroupAdapterInfo rg) {
super(parent, rg.id, rg.nameShort, null, false);
this.rg = rg;
if (rg.id == null) init();
}
@Override
public void setValue(Object value) {
this.rg = (ResearchGroupAdapterInfo) value;
setId(rg.id);
if (rg.id != null) init();
}
@Override
public void init() {
try {
this.isDeletable =
SessionManager.getAppService().isAllowed(
new ResearchGroupDeletePermission(rg.id));
this.isReadable =
SessionManager.getAppService().isAllowed(
new ResearchGroupReadPermission(rg.id));
this.isEditable =
SessionManager.getAppService().isAllowed(
new ResearchGroupUpdatePermission(rg.id));
} catch (ApplicationException e) {
BgcPlugin.openAsyncError("Permission Error",
"Unable to retrieve user permissions");
}
}
@Override
protected String getLabelInternal() {
return rg.nameShort;
}
@Override
public Integer getId() {
return rg.id;
}
@Override
public String getTooltipTextInternal() {
return getTooltipText(Messages.ResearchGroupAdapter_tooltip);
}
@Override
public void popupMenu(TreeViewer tv, Tree tree, Menu menu) {
addEditMenu(menu, Messages.ResearchGroupAdapter_menu_label);
addViewMenu(menu, Messages.ResearchGroupAdapter_menu_label);
addDeleteMenu(menu, Messages.ResearchGroupAdapter_menu_label);
}
@Override
protected String getConfirmDeleteMessage() {
return Messages.ResearchGroupAdapter_delete_confirm_msg;
}
@Override
protected AdapterBase createChildNode() {
return null;
}
@Override
protected AbstractNewAdapterBase createChildNode(Object child) {
return null;
}
@Override
public String getEntryFormId() {
return ResearchGroupEntryForm.ID;
}
@Override
public String getViewFormId() {
return ResearchGroupViewForm.ID;
}
@Override
public int compareTo(AbstractAdapterBase o) {
if (o instanceof ResearchGroupAdapter)
return rg.id.compareTo(
((ResearchGroupAdapter) o).rg.id);
return 0;
}
@Override
protected void runDelete() throws Exception {
// TODO: implement delete
}
@Override
protected Map<Integer, ?> getChildrenObjects() throws Exception {
return null;
}
}