package edu.ualberta.med.biobank.wizards.pages; import java.util.ArrayList; import java.util.List; import org.eclipse.core.databinding.UpdateValueStrategy; import org.eclipse.core.databinding.observable.value.IObservableValue; import org.eclipse.core.databinding.observable.value.WritableValue; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import edu.ualberta.med.biobank.common.wrappers.CollectionEventWrapper; import edu.ualberta.med.biobank.gui.common.dialogs.BgcWizardPage; import edu.ualberta.med.biobank.validators.NotNullValidator; import edu.ualberta.med.biobank.widgets.infotables.CollectionEventInfoTable; public class SelectCollectionEventPage extends BgcWizardPage { public static final String PAGE_NAME = SelectCollectionEventPage.class .getCanonicalName(); private static final String CEVENT_REQUIRED = Messages.SelectCollectionEventPage_required_msg; private CollectionEventInfoTable ceventsTable; public SelectCollectionEventPage() { super(PAGE_NAME, Messages.SelectCollectionEventPage_description, null); } public void setCollectionEventList(List<CollectionEventWrapper> cevents) { ceventsTable.setList(cevents); } public CollectionEventWrapper getCollectionEvent() { return ceventsTable.getSelection(); } @Override protected void createDialogAreaInternal(Composite parent) throws Exception { Composite content = new Composite(parent, SWT.NONE); content.setLayout(new GridLayout(1, false)); content.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); final IObservableValue selection = new WritableValue(null, Object.class); ceventsTable = new CollectionEventInfoTable(content, new ArrayList<CollectionEventWrapper>()) { @Override public boolean isEditMode() { return true; } }; ceventsTable.addSelectionListener(new SelectionListener() { @Override public void widgetSelected(SelectionEvent e) { selection.setValue(getCollectionEvent()); } @Override public void widgetDefaultSelected(SelectionEvent e) { selection.setValue(getCollectionEvent()); } }); UpdateValueStrategy uvs = new UpdateValueStrategy(); uvs.setAfterGetValidator(new NotNullValidator(CEVENT_REQUIRED)); getWidgetCreator().bindValue(selection, new WritableValue(), uvs, null); setControl(content); } }