package edu.ualberta.med.biobank.treeview.admin; import java.util.List; import org.eclipse.core.runtime.Assert; 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.clinic.ClinicDeleteAction; import edu.ualberta.med.biobank.common.permission.clinic.ClinicDeletePermission; import edu.ualberta.med.biobank.common.permission.clinic.ClinicReadPermission; import edu.ualberta.med.biobank.common.permission.clinic.ClinicUpdatePermission; import edu.ualberta.med.biobank.common.wrappers.ClinicWrapper; import edu.ualberta.med.biobank.common.wrappers.ModelWrapper; import edu.ualberta.med.biobank.forms.ClinicEntryForm; import edu.ualberta.med.biobank.forms.ClinicViewForm; import edu.ualberta.med.biobank.gui.common.BgcPlugin; import edu.ualberta.med.biobank.model.Clinic; import edu.ualberta.med.biobank.treeview.AbstractAdapterBase; import edu.ualberta.med.biobank.treeview.AdapterBase; import gov.nih.nci.system.applicationservice.ApplicationException; public class ClinicAdapter extends AdapterBase { public ClinicAdapter(AdapterBase parent, ClinicWrapper clinicWrapper) { super(parent, clinicWrapper); } @Override public void init() { try { Integer id = ((ClinicWrapper) getModelObject()).getId(); this.isDeletable = SessionManager.getAppService().isAllowed( new ClinicDeletePermission(id)); this.isReadable = SessionManager.getAppService().isAllowed( new ClinicReadPermission(id)); this.isEditable = SessionManager.getAppService().isAllowed( new ClinicUpdatePermission(id)); } catch (ApplicationException e) { BgcPlugin.openAsyncError("Permission Error", "Unable to retrieve user permissions"); } } @Override protected String getLabelInternal() { ClinicWrapper wrapper = (ClinicWrapper) getModelObject(); Assert.isNotNull(wrapper, "client is null"); //$NON-NLS-1$ return wrapper.getNameShort(); } @Override public String getTooltipTextInternal() { return getTooltipText(Messages.ClinicAdapter_clinic_label); } @Override public void popupMenu(TreeViewer tv, Tree tree, Menu menu) { addEditMenu(menu, Messages.ClinicAdapter_clinic_label); addViewMenu(menu, Messages.ClinicAdapter_clinic_label); addDeleteMenu(menu, Messages.ClinicAdapter_clinic_label); } @Override protected String getConfirmDeleteMessage() { return Messages.ClinicAdapter_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 ClinicEntryForm.ID; } @Override public String getViewFormId() { return ClinicViewForm.ID; } @Override public int compareTo(AbstractAdapterBase o) { if (o instanceof ClinicAdapter) return internalCompareTo(o); return 0; } @Override protected void runDelete() throws Exception { SessionManager.getAppService() .doAction( new ClinicDeleteAction((Clinic) getModelObject() .getWrappedObject())); SessionManager.updateAllSimilarNodes(getParent(), true); } }