package edu.ualberta.med.biobank.mvp.view.form; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.forms.widgets.Section; import edu.ualberta.med.biobank.SessionManager; import edu.ualberta.med.biobank.common.action.info.StudyCountInfo; import edu.ualberta.med.biobank.common.wrappers.SiteWrapper; import edu.ualberta.med.biobank.common.wrappers.StudyWrapper; import edu.ualberta.med.biobank.forms.Messages; import edu.ualberta.med.biobank.mvp.presenter.impl.SiteEntryPresenter; import edu.ualberta.med.biobank.mvp.user.ui.ListField; import edu.ualberta.med.biobank.mvp.user.ui.ValueField; import edu.ualberta.med.biobank.mvp.view.IView; import edu.ualberta.med.biobank.mvp.view.item.AdaptedListField; import edu.ualberta.med.biobank.mvp.view.item.Adapter; import edu.ualberta.med.biobank.mvp.view.item.TableItem; import edu.ualberta.med.biobank.mvp.view.item.TextBox; import edu.ualberta.med.biobank.mvp.view.util.InputTable; import edu.ualberta.med.biobank.widgets.infotables.entry.StudyAddInfoTable; import gov.nih.nci.system.applicationservice.WritableApplicationService; /** * * @author jferland * */ public class SiteEntryFormView extends AbstractEntryFormView implements SiteEntryPresenter.View { private final TextBox name = new TextBox(); private final TextBox nameShort = new TextBox(); private final TableItem<StudyWrapper> studyWrappers = new TableItem<StudyWrapper>(); private final AdaptedListField<StudyCountInfo, StudyWrapper> studies = new AdaptedListField<StudyCountInfo, StudyWrapper>(studyWrappers, STUDY_ADAPTER); private IView addressEntryView; private IView activityStatusComboView; private static final StudyAdapter STUDY_ADAPTER = new StudyAdapter(); private static class StudyAdapter implements Adapter<StudyCountInfo, StudyWrapper> { @Override public StudyCountInfo adapt(StudyWrapper unadapted) { return new StudyCountInfo(unadapted.getWrappedObject(), -1l, -1l); } @Override public StudyWrapper unadapt(StudyCountInfo adapted) { return new StudyWrapper(SessionManager.getAppService(), adapted.getStudy()); } } @Override public void setActivityStatusComboView(IView view) { this.activityStatusComboView = view; } @Override public void setAddressEditView(IView view) { this.addressEntryView = view; } @Override public ValueField<String> getName() { return name; } @Override public ValueField<String> getNameShort() { return nameShort; } @Override public ListField<StudyCountInfo> getStudies() { return studies; } @Override public void onCreate(BaseForm baseForm) { super.onCreate(baseForm); baseForm.setTitle(Messages.SiteEntryForm_main_title); InputTable table = new InputTable(baseForm.getPage()); name.setValidationControl(table.addLabel("name")); name.setText(table.addText()); nameShort.setValidationControl(table.addLabel("nameShort")); nameShort.setText(table.addText()); // TODO: what about ValidationControl? table.addLabel("activityStatus"); activityStatusComboView.create(table); Composite addressClient = baseForm.createSectionWithClient("Address"); addressEntryView.create(addressClient); Section studySection = baseForm.createSection("Studies"); WritableApplicationService appService = SessionManager.getAppService(); SiteWrapper siteWrapper = new SiteWrapper(appService); boolean superAdmin = SessionManager.getUser().isSuperAdmin(); final StudyAddInfoTable studiesTable = new StudyAddInfoTable(studySection, siteWrapper, superAdmin); studySection.setClient(studiesTable); if (superAdmin) { BaseForm.addSectionToolbar(studySection, Messages.SiteEntryForm_studies_add, new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { studiesTable.createStudyDlg(); } }, null); } studyWrappers.setTable(studiesTable); // TODO: fix comment section // comment.setText(widget.comment); } @Override public String getOkMessage() { return "Everything is A-Okay"; } }