package edu.ualberta.med.biobank.treeview.admin; import java.util.Map; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.MenuItem; 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.action.researchGroup.ResearchGroupGetAllAction; import edu.ualberta.med.biobank.common.permission.researchGroup.ResearchGroupCreatePermission; import edu.ualberta.med.biobank.gui.common.BgcPlugin; import edu.ualberta.med.biobank.treeview.AbstractAdapterBase; import edu.ualberta.med.biobank.treeview.AbstractNewAdapterBase; import gov.nih.nci.system.applicationservice.ApplicationException; public class ResearchGroupMasterGroup extends AbstractNewAdapterBase { private Boolean createAllowed; private Map<Integer, ResearchGroupAdapterInfo> rgs; public ResearchGroupMasterGroup(SessionAdapter sessionAdapter, int id) { super(sessionAdapter, id, Messages.ResearchGroupMasterGroup_all_rgroups_label, null, false); try { this.createAllowed = SessionManager.getAppService().isAllowed( new ResearchGroupCreatePermission()); } catch (ApplicationException e) { BgcPlugin.openAsyncError("Error", "Unable to retrieve permissions"); } } @Override public void popupMenu(TreeViewer tv, Tree tree, Menu menu) { if (createAllowed) { MenuItem mi = new MenuItem(menu, SWT.PUSH); mi.setText(Messages.ResearchGroupMasterGroup_add_rgroup_menu); mi.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent event) { addResearchGroup(); } }); } } public void addResearchGroup() { ResearchGroupAdapter adapter = new ResearchGroupAdapter(this, new ResearchGroupAdapterInfo(null, null)); adapter.openEntryForm(); } @Override protected String getLabelInternal() { return null; } @Override public String getTooltipTextInternal() { return null; } @Override protected void runDelete() throws Exception { } @Override protected AbstractNewAdapterBase createChildNode() { return new ResearchGroupAdapter(this, null); } @Override protected AbstractAdapterBase createChildNode(Object child) { return new ResearchGroupAdapter(this, (ResearchGroupAdapterInfo) child); } @Override protected Map<Integer, ?> getChildrenObjects() throws Exception { if (rgs == null) rgs = SessionManager.getAppService() .doAction( new ResearchGroupGetAllAction()).getMap(); return rgs; } @Override public String getViewFormId() { return null; } @Override public String getEntryFormId() { return null; } @SuppressWarnings("unchecked") @Override public void setValue(Object value) { this.rgs = (Map<Integer, ResearchGroupAdapterInfo>) value; } @Override public int compareTo(AbstractAdapterBase o) { // TODO Auto-generated method stub return 0; } }