/** * */ package org.csstudio.ui.util.dialogs; import java.util.ArrayList; import java.util.List; import org.csstudio.ui.util.widgets.StringListSelectionWidget; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.dialogs.IDialogConstants; 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.Control; import org.eclipse.swt.widgets.Shell; /** * @author shroffk * */ public class StringListSelectionDialog extends Dialog { protected Shell dialogShell; private StringListSelectionWidget stringListSelectionWidget; private List<String> initialPossibleValues = new ArrayList<String>(); private List<String> initialSelectedValues = new ArrayList<String>(); private final String title; /** * Create a string list selection dialog. * * @param parent * @param possibleValues - a List of Values * @param selectedValues - a List of selected Values * @param title */ public StringListSelectionDialog(Shell parent, List<String> possibleValues, List<String> selectedValues, String title) { super(parent); setShellStyle(SWT.RESIZE | SWT.DIALOG_TRIM); this.initialPossibleValues = possibleValues; this.initialSelectedValues = selectedValues; this.title = title; } @Override public void create() { super.create(); // Set the title } @Override protected Control createDialogArea(Composite parent) { getShell().setText(title); Composite container = (Composite) super.createDialogArea(parent); GridLayout gridLayout = (GridLayout) container.getLayout(); gridLayout.verticalSpacing = 0; gridLayout.marginWidth = 0; gridLayout.horizontalSpacing = 0; gridLayout.marginHeight = 0; stringListSelectionWidget = new StringListSelectionWidget(container, SWT.NONE); stringListSelectionWidget.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1)); populateInitialValues(); return container; } @Override protected void createButtonsForButtonBar(Composite parent) { createButton(parent, IDialogConstants.OK_ID, "Apply", true); createButton(parent, IDialogConstants.CANCEL_ID, "Cancel", false); } private void populateInitialValues() { setPossibleValues(initialPossibleValues); setSelectedValues(initialSelectedValues); } private void setSelectedValues(List<String> selectedValues) { stringListSelectionWidget.setSelectedValues(selectedValues); } public List<String> getSelectedValues() { return stringListSelectionWidget.getSelectedValues(); } private void setPossibleValues(List<String> possibleValues) { stringListSelectionWidget.setPossibleValues(possibleValues); } public List<String> getPossibleValues() { return stringListSelectionWidget.getPossibleValues(); } }