package edu.ualberta.med.biobank.treeview.admin; import java.util.List; 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.clinic.ClinicGetAllAction; import edu.ualberta.med.biobank.common.action.clinic.ClinicGetAllAction.ClinicsInfo; import edu.ualberta.med.biobank.common.permission.clinic.ClinicCreatePermission; import edu.ualberta.med.biobank.common.wrappers.ClinicWrapper; import edu.ualberta.med.biobank.common.wrappers.ModelWrapper; import edu.ualberta.med.biobank.gui.common.BgcLogger; import edu.ualberta.med.biobank.gui.common.BgcPlugin; import edu.ualberta.med.biobank.treeview.AbstractAdapterBase; import edu.ualberta.med.biobank.treeview.AbstractClinicGroup; import gov.nih.nci.system.applicationservice.ApplicationException; public class ClinicMasterGroup extends AbstractClinicGroup { @SuppressWarnings("unused") private static BgcLogger LOGGER = BgcLogger .getLogger(ClinicMasterGroup.class.getName()); private ClinicsInfo clinicsInfo = null; private boolean createAllowed; public ClinicMasterGroup(SessionAdapter sessionAdapter, int id) { super(sessionAdapter, id, Messages.ClinicMasterGroup_clinics_node_label); try { this.createAllowed = SessionManager.getAppService().isAllowed( new ClinicCreatePermission()); } 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.ClinicMasterGroup_add_label); mi.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent event) { addClinic(); } }); } } @Override protected List<? extends ModelWrapper<?>> getWrapperChildren() throws Exception { clinicsInfo = SessionManager.getAppService().doAction( new ClinicGetAllAction()); return ModelWrapper.wrapModelCollection(SessionManager.getAppService(), clinicsInfo.getClinics(), ClinicWrapper.class); } public void addClinic() { ClinicWrapper clinic = new ClinicWrapper(SessionManager.getAppService()); ClinicAdapter adapter = new ClinicAdapter(this, clinic); adapter.openEntryForm(); } @Override public int compareTo(AbstractAdapterBase o) { return 0; } }