package edu.ualberta.med.biobank.widgets; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import edu.ualberta.med.biobank.gui.common.widgets.BgcBaseWidget; public class SelectMultipleWidget extends BgcBaseWidget { private HashMap<String, Button> checkBoxes; public SelectMultipleWidget(Composite parent, int style, String[] values, SelectionListener listener) { super(parent, style | SWT.BORDER); if (values == null) return; GridLayout layout = new GridLayout(1, false); setLayout(layout); setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); checkBoxes = new HashMap<String, Button>(); for (String value : values) { Button b = new Button(this, SWT.CHECK); b.setText(value); b.addSelectionListener(listener); checkBoxes.put(value, b); } } public void setSelections(String[] values) { if (values == null) return; List<String> valuesToSelect = Arrays.asList(values); for (String value : checkBoxes.keySet()) { Button b = checkBoxes.get(value); if (b == null) continue; b.setSelection(valuesToSelect.contains(value)); } } public String[] getSelections() { ArrayList<String> al = new ArrayList<String>(); for (Button checkBox : checkBoxes.values()) { if (!checkBox.getSelection()) continue; al.add(checkBox.getText()); } return al.toArray(new String[0]); } }