package edu.ualberta.med.biobank.dialogs.startup; import java.util.ArrayList; import java.util.List; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Shell; import edu.ualberta.med.biobank.common.wrappers.CenterWrapper; import edu.ualberta.med.biobank.common.wrappers.UserWrapper; import edu.ualberta.med.biobank.gui.common.dialogs.BgcBaseDialog; import edu.ualberta.med.biobank.gui.common.widgets.utils.ComboSelectionUpdate; import edu.ualberta.med.biobank.widgets.BiobankLabelProvider; public class WorkingCenterSelectDialog extends BgcBaseDialog { private UserWrapper user; private CenterWrapper<?> currentCenter; private List<CenterWrapper<?>> availableCenters; public WorkingCenterSelectDialog(Shell parentShell, UserWrapper user, List<CenterWrapper<?>> availableCenters) { super(parentShell); this.user = user; this.availableCenters = availableCenters; } @Override protected String getTitleAreaMessage() { return "Choose the center you will work with."; } @Override protected String getTitleAreaTitle() { return "Working center selection"; } @Override protected String getDialogShellTitle() { return "Working center selection"; } @Override protected void createDialogAreaInternal(Composite parent) throws Exception { Composite contents = new Composite(parent, SWT.NONE); GridLayout layout = new GridLayout(2, false); contents.setLayout(layout); contents.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); List<Object> objectList = new ArrayList<Object>(availableCenters); String noCenterString = "-- " + "no center selection" + " --"; if (user.isSuperAdmin()) objectList.add(noCenterString); widgetCreator.createComboViewer(contents, "Available centers", objectList, noCenterString, null, new ComboSelectionUpdate() { @Override public void doSelection(Object selectedObject) { if (selectedObject instanceof CenterWrapper<?>) currentCenter = (CenterWrapper<?>) selectedObject; else currentCenter = null; } }, new BiobankLabelProvider() { @Override public String getText(Object element) { if (element instanceof CenterWrapper) { return ((CenterWrapper<?>) element).getNameShort(); } return super.getText(element); } }); } @Override protected void okPressed() { user.setCurrentWorkingCenter(currentCenter); super.okPressed(); } }