package edu.ualberta.med.biobank.widgets.infotables; import java.util.List; import org.eclipse.swt.widgets.Composite; import edu.ualberta.med.biobank.SessionManager; import edu.ualberta.med.biobank.common.action.info.StudyCountInfo; import edu.ualberta.med.biobank.common.formatters.NumberFormatter; 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.gui.common.widgets.BgcLabelProvider; import gov.nih.nci.system.applicationservice.ApplicationException; public class NewStudyInfoTable extends InfoTableWidget<StudyCountInfo> { private static final String[] HEADINGS = new String[] { Messages.StudyInfoTable_name_label, Messages.StudyInfoTable_nameshort_label, Messages.StudyInfoTable_status_label, Messages.StudyInfoTable_patients_label, Messages.StudyInfoTable_visits_label }; public NewStudyInfoTable(Composite parent, List<StudyCountInfo> studies) { super(parent, studies, HEADINGS, 10, null); } @Override protected BgcLabelProvider getLabelProvider() { return new BgcLabelProvider() { @Override public String getColumnText(Object element, int columnIndex) { StudyCountInfo info = (StudyCountInfo) ((BiobankCollectionModel) element).o; switch (columnIndex) { case 0: return info.getStudy().getName(); case 1: return info.getStudy().getNameShort(); case 2: return (info.getStudy().getActivityStatus() != null) ? info .getStudy().getActivityStatus().getName() : ""; //$NON-NLS-1$ case 3: return NumberFormatter.format(info.getPatientCount()); case 4: return NumberFormatter.format(info .getCollectionEventCount()); default: return ""; //$NON-NLS-1$ } } }; } @Override protected boolean isEditMode() { return false; } @Override public void reload() { } @Override public StudyCountInfo getSelection() { BiobankCollectionModel item = getSelectionInternal(); if (item == null) return null; return (StudyCountInfo) item.o; } @Override protected BiobankTableSorter getComparator() { return new BiobankTableSorter() { private static final long serialVersionUID = 1L; @Override public int compare(Object o1, Object o2) { if (o1 instanceof StudyCountInfo && o2 instanceof StudyCountInfo) { StudyCountInfo p1 = (StudyCountInfo) o1; StudyCountInfo p2 = (StudyCountInfo) o2; return p1.getStudy().getNameShort() .compareTo(p2.getStudy().getNameShort()); } return super.compare(01, o2); } }; } @Override protected String getCollectionModelObjectToString(Object o) { // TODO Auto-generated method stub return null; } @Override protected Boolean canEdit(StudyCountInfo target) throws ApplicationException { return SessionManager.getAppService().isAllowed( new StudyUpdatePermission(target.getStudy().getId())); } @Override protected Boolean canDelete(StudyCountInfo target) throws ApplicationException { return SessionManager.getAppService().isAllowed( new StudyDeletePermission(target.getStudy().getId())); } @Override protected Boolean canView(StudyCountInfo target) throws ApplicationException { return SessionManager.getAppService().isAllowed( new StudyReadPermission(target.getStudy().getId())); } }