Example usage for org.eclipse.jface.viewers ComboViewer getCombo

List of usage examples for org.eclipse.jface.viewers ComboViewer getCombo

Introduction

In this page you can find the example usage for org.eclipse.jface.viewers ComboViewer getCombo.

Prototype

public Combo getCombo() 

Source Link

Document

Returns this list viewer's list control.

Usage

From source file:de.metadocks.lambdaui.snippets.swt.HelloWorld.java

License:Open Source License

public void createUIConventional(Composite parent) {
    parent.setLayout(GridLayoutFactory.swtDefaults().numColumns(3).create());

    Label label = new Label(parent, SWT.NONE);
    label.setText("Selection");

    ComboViewer viewer = new ComboViewer(parent, SWT.BORDER | SWT.SINGLE | SWT.READ_ONLY);
    customizeComboViewer(viewer);/*w w w. j a  v a  2 s .  c o  m*/
    viewer.getCombo().setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

    Button button = new Button(parent, SWT.NONE);
    button.setText("Apply");
    button.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            text.setText("Selection:  " + viewer.getCombo().getText());
        }
    });

    text = new Text(parent, SWT.READ_ONLY | SWT.BORDER);
    text.setLayoutData(
            GridDataFactory.swtDefaults().span(3, 1).grab(true, true).align(SWT.FILL, SWT.FILL).create());
}

From source file:de.metadocks.lambdaui.snippets.swt.HelloWorld.java

License:Open Source License

private void onButtonClick(Event evt) {
    Text tf = root.find("textField");
    ComboViewer viewer = root.findViewer("selectionCombo");
    tf.setText("Selection: " + viewer.getCombo().getText());
}

From source file:de.walware.statet.r.internal.ui.pkgmanager.RRepoPreferencePage.java

License:Open Source License

@Override
protected Control createDialogArea(final Composite parent) {
    final Composite area = new Composite(parent, SWT.NONE);
    area.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    area.setLayout(LayoutUtil.createDialogGrid(2));

    {/*from  w w w .  ja va2  s  . c om*/
        final Label label = new Label(area, SWT.NONE);
        label.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false));
        label.setText("Name:");
    }
    {
        final Text text = new Text(area, SWT.BORDER);
        text.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
        fNameControl = text;
    }
    {
        final Label label = new Label(area, SWT.NONE);
        label.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false));
        label.setText("URL:");
    }
    {
        final Text text = new Text(area, SWT.BORDER);
        final GridData gd = new GridData(SWT.FILL, SWT.CENTER, true, false);
        gd.widthHint = LayoutUtil.hintWidth(fNameControl, 60);
        text.setLayoutData(gd);
        fURLControl = text;
    }
    {
        final Label label = new Label(area, SWT.NONE);
        label.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false));
        label.setText("Type:");
    }
    {
        final ComboViewer viewer = new ComboViewer(area, SWT.READ_ONLY | SWT.BORDER | SWT.DROP_DOWN);
        final GridData gd = new GridData(SWT.LEFT, SWT.CENTER, true, false);
        gd.widthHint = LayoutUtil.hintWidth(viewer.getCombo(), 10);
        viewer.getCombo().setLayoutData(gd);
        viewer.setContentProvider(ArrayContentProvider.getInstance());
        viewer.setLabelProvider(new LabelProvider() {
            @Override
            public String getText(final Object element) {
                if (element instanceof RPkgType) {
                    return ((RPkgType) element).getLabel();
                }
                return super.getText(element);
            }
        });
        viewer.setInput(new Object[] { DEFAULT_TYPE, RPkgType.SOURCE, RPkgType.BINARY });
        viewer.setSelection(new StructuredSelection(DEFAULT_TYPE));
        fTypeControl = viewer;
    }

    LayoutUtil.addSmallFiller(area, true);

    applyDialogFont(area);

    return area;
}

From source file:eu.esdihumboldt.hale.io.csv.ui.DefaultSchemaTypePage.java

License:Open Source License

/**
 * Update all fields (should be called if page is initialized or the
 * selection of input (file or table) has been changed
 *//*from   w ww .j a v a2  s .c o  m*/
protected void update() {
    int length = 0;

    // the header is not valid so clear all content
    if (header == null || header.length == 0) {
        // clear properties
        clearPage();
        return;
    }

    if (secondRow == null || secondRow.length == 0) {
        secondRow = header;
    }

    if (header.length != 0) {
        length = header.length;
    }

    // dispose all property names if the read configuration has been changed
    if (lastSecondRow != null && !Arrays.equals(header, lastSecondRow)) {
        for (TypeNameField properties : fields) {
            properties.dispose();
            properties.getTextControl(group).dispose();
            properties.getLabelControl(group).dispose();
        }
        for (ComboViewer combViewer : comboFields) {
            combViewer.getCombo().dispose();
        }
        fields.clear();
        comboFields.clear();
    }

    if (!Arrays.equals(header, lastSecondRow)) {
        for (int i = 0; i < length; i++) {
            final TypeNameField propField;
            final ComboViewer cv;

            validSel.add(true);

            propField = new TypeNameField("properties", Integer.toString(i + 1), group);
            fields.add(propField);
            propField.setEmptyStringAllowed(false);
            propField.setErrorMessage("Please enter a valid Property Name");
            propField.setPropertyChangeListener(new IPropertyChangeListener() {

                @Override
                public void propertyChange(PropertyChangeEvent event) {

                    HashSet<String> hs = new HashSet<String>();

                    if (event.getProperty().equals(StringFieldEditor.VALUE)) {
                        for (TypeNameField field : fields) {
                            if (!hs.add(field.getStringValue())) {
                                valid = false;
                                break;
                            } else {
                                valid = true;
                            }

                        }

                    }

                    if (event.getProperty().equals(StringFieldEditor.IS_VALID)) {
                        isValid = (Boolean) event.getNewValue();
                    }

                    setPageComplete(isValid());

                }
            });
            propField.setStringValue(header[i].replace(" ", ""));

            cv = new ComboViewer(group);
            comboFields.add(cv);
            cv.addSelectionChangedListener(new ISelectionChangedListener() {

                @Override
                public void selectionChanged(SelectionChangedEvent event) {

                    int i = comboFields.indexOf(event.getSource());
                    PropertyTypeFactory actualSelection = ((PropertyTypeFactory) ((IStructuredSelection) cv
                            .getSelection()).getFirstElement());

                    try {
                        actualSelection.createExtensionObject().convertFromField(secondRow[i]);
                        validSel.set(i, true);

                    } catch (Exception e) {
                        validSel.set(i, false);
                    }
                    if (validSel.contains(false)) {
                        int j = validSel.indexOf(false) + 1;
                        setMessage("Your selection in field # " + j + " is not valid!", WARNING);
                    } else {
                        setMessage(null);
                    }

                }
            });
            cv.setContentProvider(ArrayContentProvider.getInstance());
            cv.setLabelProvider(new LabelProvider() {

                /**
                 * @see org.eclipse.jface.viewers.LabelProvider#getText(java.lang.Object)
                 */
                @Override
                public String getText(Object element) {
                    if (element instanceof PropertyTypeFactory) {
                        return ((PropertyTypeFactory) element).getDisplayName();
                    }
                    return super.getText(element);
                }
            });
            Collection<PropertyTypeFactory> elements = PropertyTypeExtension.getInstance().getFactories();
            cv.setInput(elements);

            PropertyTypeFactory defaultSelection = PropertyTypeExtension.getInstance()
                    .getFactory("java.lang.String");
            if (defaultSelection != null) {
                cv.setSelection(new StructuredSelection(defaultSelection));
            } else if (!elements.isEmpty()) {
                cv.setSelection(new StructuredSelection(elements.iterator().next()));
            }

        }
    }
    group.setLayout(new GridLayout(3, false));

    lastSecondRow = header;

    group.layout();
    sc.layout();
    //      setPageComplete(sfe.isValid() && isValid && valid);
}

From source file:eu.esdihumboldt.hale.io.csv.ui.DefaultSchemaTypePage.java

License:Open Source License

/**
 * Clear the page. Can be called when the content has changed. Set everthing
 * on an initial state/*from w w  w  .  ja va  2 s  .  com*/
 */
private void clearPage() {
    // clear properties
    for (TypeNameField properties : fields) {
        properties.dispose();
        properties.getTextControl(group).dispose();
        properties.getLabelControl(group).dispose();
    }
    for (ComboViewer combViewer : comboFields) {
        combViewer.getCombo().dispose();
    }
    validSel.clear();
    fields.clear();
    comboFields.clear();
    sfe.setStringValue("");
    group.layout();
    sc.layout();
    lastSecondRow = null;
}

From source file:eu.esdihumboldt.hale.io.csv.ui.SchemaTypePage.java

License:Open Source License

/**
 * @see HaleWizardPage#onShowPage(boolean)
 *//*from  ww  w .j a va2s.c om*/
@Override
protected void onShowPage(boolean firstShow) {

    LocatableInputSupplier<? extends InputStream> source = getWizard().getProvider().getSource();

    int indexStart = 0;
    int indexEnd = source.getLocation().getPath().length() - 1;

    if (source.getLocation().getPath() != null) {
        indexStart = source.getLocation().getPath().lastIndexOf("/") + 1;
        if (source.getLocation().getPath().lastIndexOf(".") >= 0) {
            indexEnd = source.getLocation().getPath().lastIndexOf(".");
        }

        defaultString = source.getLocation().getPath().substring(indexStart, indexEnd);
        sfe.setStringValue(defaultString);
        setPageComplete(sfe.isValid());
    }

    try {
        CSVReader reader = CSVUtil.readFirst(getWizard().getProvider());

        String[] firstLine = reader.readNext();
        final String[] nextLine = reader.readNext();

        int length = 0;
        if (firstLine.length != 0) {
            length = firstLine.length;
        }

        // disposes all property names if the read configuration has changed
        if (last_firstLine != null && !Arrays.equals(firstLine, last_firstLine)) {
            for (TypeNameField properties : fields) {
                properties.dispose();
                properties.getTextControl(group).dispose();
                properties.getLabelControl(group).dispose();
            }
            for (ComboViewer combViewer : comboFields) {
                combViewer.getCombo().dispose();
            }
            fields.clear();
            comboFields.clear();
        }

        if (!Arrays.equals(firstLine, last_firstLine)) {
            for (int i = 0; i < length; i++) {
                final TypeNameField propField;
                final ComboViewer cv;

                validSel.add(true);

                propField = new TypeNameField("properties", Integer.toString(i + 1), group);
                fields.add(propField);
                propField.setEmptyStringAllowed(false);
                propField.setErrorMessage("Please enter a valid Property Name");
                propField.setPropertyChangeListener(new IPropertyChangeListener() {

                    @Override
                    public void propertyChange(PropertyChangeEvent event) {

                        HashSet<String> hs = new HashSet<String>();

                        if (event.getProperty().equals(StringFieldEditor.VALUE)) {
                            for (TypeNameField field : fields) {
                                if (!hs.add(field.getStringValue())) {
                                    valid = false;
                                    break;
                                } else {
                                    valid = true;
                                }

                            }

                        }

                        if (event.getProperty().equals(StringFieldEditor.IS_VALID)) {
                            isValid = (Boolean) event.getNewValue();
                        }
                        setPageComplete(isValid && valid);

                    }
                });
                propField.setStringValue(firstLine[i]);
                cv = new ComboViewer(group);
                comboFields.add(cv);
                cv.addSelectionChangedListener(new ISelectionChangedListener() {

                    @Override
                    public void selectionChanged(SelectionChangedEvent event) {

                        int i = comboFields.indexOf(event.getSource());
                        PropertyTypeFactory actualSelection = ((PropertyTypeFactory) ((IStructuredSelection) cv
                                .getSelection()).getFirstElement());

                        try {
                            actualSelection.createExtensionObject().convertFromField(nextLine[i]);
                            validSel.set(i, true);

                        } catch (Exception e) {
                            log.warn("Selection invalid!", e);
                            validSel.set(i, false);
                        }
                        if (validSel.contains(false)) {
                            int j = validSel.indexOf(false) + 1;
                            setMessage("Your selection in field # " + j + " is not valid!", WARNING);
                        } else {
                            setMessage(null);
                        }

                    }
                });
                cv.setContentProvider(ArrayContentProvider.getInstance());
                cv.setLabelProvider(new LabelProvider() {

                    /**
                     * @see org.eclipse.jface.viewers.LabelProvider#getText(java.lang.Object)
                     */
                    @Override
                    public String getText(Object element) {
                        if (element instanceof PropertyTypeFactory) {
                            return ((PropertyTypeFactory) element).getDisplayName();
                        }
                        return super.getText(element);
                    }
                });
                Collection<PropertyTypeFactory> elements = PropertyTypeExtension.getInstance().getFactories();
                cv.setInput(elements);

                PropertyTypeFactory defaultSelection = PropertyTypeExtension.getInstance()
                        .getFactory("java.lang.String");
                if (defaultSelection != null) {
                    cv.setSelection(new StructuredSelection(defaultSelection));
                } else if (!elements.isEmpty()) {
                    cv.setSelection(new StructuredSelection(elements.iterator().next()));
                }

            }
        }
        group.setLayout(new GridLayout(3, false));

        last_firstLine = firstLine;

    } catch (IOException e) {
        setErrorMessage("File could not be read");
        setPageComplete(false);
        e.printStackTrace();
    }

    group.layout();
    sc.layout();

    super.onShowPage(firstShow);
}

From source file:gov.redhawk.ide.codegen.frontend.ui.wizard.FrontEndTunerOptionsWizardPage.java

License:Open Source License

private Composite createDigitalIn(Composite parent) {
    Composite digitalIn = new Composite(parent, SWT.SHADOW_NONE);
    digitalIn.setLayout(new GridLayout(2, false));

    Label digitalInputTypeLabel = new Label(digitalIn, SWT.None);
    digitalInputTypeLabel.setText("Digital Input Type: ");

    ComboViewer digitalInputCombo = new ComboViewer(digitalIn, SWT.READ_ONLY);
    digitalInputCombo.setContentProvider(new ArrayContentProvider());
    digitalInputCombo.setLabelProvider(definitionComboViewerLabelProvider);
    digitalInputCombo.setInput(propertyTypes);
    ctx.bindValue(ViewersObservables.observeSingleSelection(digitalInputCombo), EMFObservables
            .observeValue(this.feiDevice, FrontendPackage.Literals.FEI_DEVICE__DIGITAL_INPUT_TYPE));

    ctx.bindValue(WidgetProperties.enabled().observe(digitalInputCombo.getCombo()), EMFObservables
            .observeValue(this.feiDevice, FrontendPackage.Literals.FEI_DEVICE__HAS_DIGITAL_INPUT));
    return digitalIn;
}

From source file:gov.redhawk.ide.codegen.frontend.ui.wizard.FrontEndTunerOptionsWizardPage.java

License:Open Source License

private Composite createDigitalOut(Composite parent) {
    Composite digitalOut = new Composite(parent, SWT.SHADOW_NONE);
    digitalOut.setLayout(new GridLayout(2, false));
    digitalOut.setLayoutData(GridDataFactory.fillDefaults().grab(true, false).indent(30, 0)
            .align(SWT.CENTER, SWT.CENTER).create());

    Label digitalOutputTypeLabel = new Label(digitalOut, SWT.None);
    digitalOutputTypeLabel.setText("Digital Output Type: ");

    ComboViewer digitalOutputCombo = new ComboViewer(digitalOut, SWT.READ_ONLY);
    digitalOutputCombo.setContentProvider(new ArrayContentProvider());
    digitalOutputCombo.setLabelProvider(definitionComboViewerLabelProvider);
    digitalOutputCombo.setInput(propertyTypes);
    ctx.bindValue(ViewersObservables.observeSingleSelection(digitalOutputCombo), EMFObservables
            .observeValue(this.feiDevice, FrontendPackage.Literals.FEI_DEVICE__DIGITAL_OUTPUT_TYPE));
    ctx.bindValue(WidgetProperties.enabled().observe(digitalOutputCombo.getCombo()), EMFObservables
            .observeValue(this.feiDevice, FrontendPackage.Literals.FEI_DEVICE__HAS_DIGITAL_OUTPUT));

    Button multiOutCheck = new Button(digitalOut, SWT.CHECK);
    multiOutCheck.setText("Multi-out");
    ctx.bindValue(WidgetProperties.selection().observe(multiOutCheck),
            EMFObservables.observeValue(this.feiDevice, FrontendPackage.Literals.FEI_DEVICE__MULTI_OUT));
    ctx.bindValue(WidgetProperties.enabled().observe(multiOutCheck), EMFObservables.observeValue(this.feiDevice,
            FrontendPackage.Literals.FEI_DEVICE__HAS_DIGITAL_OUTPUT));
    return digitalOut;
}

From source file:gov.redhawk.internal.ui.port.nxmplot.FftParameterEntryDialog.java

License:Open Source License

@Override
protected Control createDialogArea(final Composite parent) {
    final Composite container = (Composite) super.createDialogArea(parent);
    final GridLayout gridLayout = new GridLayout(2, false);
    container.setLayout(gridLayout);//www.  j  a va  2 s  .  com

    this.errorMessageText = new Text(container, SWT.READ_ONLY | SWT.WRAP);
    this.errorMessageText.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false, 2, 1));
    this.errorMessageText
            .setBackground(this.errorMessageText.getDisplay().getSystemColor(SWT.COLOR_WIDGET_BACKGROUND));
    this.errorMessageText.setForeground(this.errorMessageText.getDisplay().getSystemColor(SWT.COLOR_RED));
    // Set the error message text
    // See https://bugs.eclipse.org/bugs/show_bug.cgi?id=66292
    setErrorMessage(this.errorMessage);

    final Label transformSizeLabel = new Label(container, SWT.NONE);
    transformSizeLabel.setLayoutData(new GridData(GridData.BEGINNING, GridData.CENTER, false, false));
    transformSizeLabel.setText("Transform Size:");

    this.transformSizeField = new Text(container, SWT.BORDER);
    this.transformSizeField.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
    this.transformSizeField.setText(String.valueOf(this.fftSettings.getTransformSize()));
    this.transformSizeField.setToolTipText("Performance is best if factorable by 2, 3, 4 and 5.");
    this.transformSizeField.addModifyListener(new ModifyListener() {
        @Override
        public void modifyText(final ModifyEvent e) {
            String transformSizeString = FftParameterEntryDialog.this.transformSizeField.getText().trim();
            Integer transformSize = null;
            try {
                transformSize = Integer.parseInt(transformSizeString);
            } catch (NumberFormatException ex) {
                // PASS
            }
            if (transformSize != null) {
                FftParameterEntryDialog.this.fftSettings.setTransformSize(transformSize);
            }
            validateInputs();
        }
    });

    final Label percentOverlapLabel = new Label(container, SWT.NONE);
    percentOverlapLabel.setLayoutData(new GridData(GridData.BEGINNING, GridData.CENTER, false, false));
    percentOverlapLabel.setText("Percent Overlap:");

    this.overlapField = new Text(container, SWT.BORDER);
    this.overlapField.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
    this.overlapField.setText(String.valueOf(this.fftSettings.getOverlap()));
    this.overlapField.addModifyListener(new ModifyListener() {
        @Override
        public void modifyText(final ModifyEvent e) {
            final String newText = FftParameterEntryDialog.this.overlapField.getText();
            Integer overlap = null;
            try {
                overlap = Integer.parseInt(newText.trim());
            } catch (NumberFormatException ex) {
                // PASS
            }
            if (overlap != null) {
                FftParameterEntryDialog.this.fftSettings.setOverlap(overlap);
            }
            validateInputs();
        }
    });

    final Label numAveragesLabel = new Label(container, SWT.NONE);
    numAveragesLabel.setLayoutData(new GridData(GridData.BEGINNING, GridData.CENTER, false, false));
    numAveragesLabel.setText("Num Averages:");

    this.numAveragesField = new Text(container, SWT.BORDER);
    this.numAveragesField.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false, 1, 1));
    this.numAveragesField.setText(String.valueOf(this.fftSettings.getNumAverages()));
    this.numAveragesField
            .setToolTipText("Avoid using large value as it will cause highlighted energy to remain longer.");
    this.numAveragesField.addModifyListener(new ModifyListener() {
        @Override
        public void modifyText(final ModifyEvent e) {
            Integer numAverages = null;
            try {
                numAverages = Integer.parseInt(FftParameterEntryDialog.this.numAveragesField.getText().trim());
            } catch (NumberFormatException ex) {
                //PASS
            }
            if (numAverages != null) {
                FftParameterEntryDialog.this.fftSettings.setNumAverages(numAverages);
            }
            validateInputs();
        }
    });

    final Label typeLabel = new Label(container, SWT.NONE);
    typeLabel.setLayoutData(new GridData(GridData.BEGINNING, GridData.CENTER, false, false));
    typeLabel.setText("FFT Output Type:");

    final ComboViewer type = new ComboViewer(container, SWT.READ_ONLY);
    type.getCombo().setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false, 1, 1));
    type.setContentProvider(ArrayContentProvider.getInstance()); // ArrayContentProvider does not store any state, therefore can re-use instances
    type.setLabelProvider(new LabelProvider() {
        @Override
        public String getText(Object element) {
            return ((FftNxmBlockSettings.OutputType) element).getLabel();
        }
    });
    OutputType currentOutputType = this.fftSettings.getOutputType();
    if (currentOutputType == null) {
        currentOutputType = FftNxmBlockSettings.OutputType.PSD; // default to PSD
    }
    type.setInput(FftNxmBlockSettings.OutputType.values());
    type.setSelection(new StructuredSelection(currentOutputType));
    if (disableChangeOutputType) {
        type.getCombo().setEnabled(false); // disable changing output type
    } else {
        type.addSelectionChangedListener(new ISelectionChangedListener() {
            @Override
            public void selectionChanged(final SelectionChangedEvent event) {
                FftParameterEntryDialog.this.fftSettings.setOutputType(
                        (FftNxmBlockSettings.OutputType) ((IStructuredSelection) event.getSelection())
                                .getFirstElement());
            }
        });
    }

    final Label windowLabel = new Label(container, SWT.NONE);
    windowLabel.setLayoutData(new GridData(GridData.BEGINNING, GridData.CENTER, false, false));
    windowLabel.setText("Window:");

    final ComboViewer window = new ComboViewer(container, SWT.READ_ONLY);
    window.getCombo().setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false, 1, 1));
    window.setContentProvider(ArrayContentProvider.getInstance()); // ArrayContentProvider does not store any state, therefore can re-use instances
    window.setLabelProvider(new LabelProvider() {
        @Override
        public String getText(Object element) {
            return ((FftNxmBlockSettings.WindowType) element).getLabel();
        }
    });
    window.setInput(FftNxmBlockSettings.WindowType.values());
    WindowType currentWindowType = this.fftSettings.getWindow();
    if (currentWindowType == null) {
        currentWindowType = FftNxmBlockSettings.WindowType.HANNING;
    }
    window.setSelection(new StructuredSelection(currentWindowType));
    window.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(final SelectionChangedEvent event) {
            FftParameterEntryDialog.this.fftSettings
                    .setWindow((FftNxmBlockSettings.WindowType) ((IStructuredSelection) event.getSelection())
                            .getFirstElement());
        }
    });

    Dialog.applyDialogFont(container);

    return container;
}

From source file:gov.redhawk.internal.ui.port.nxmplot.PlotSettingsDialog.java

License:Open Source License

@SuppressWarnings("deprecation")
@Override/*from w w w . java  2s .  c o m*/
protected Control createDialogArea(final Composite parent) {
    final Composite container = (Composite) super.createDialogArea(parent);
    final GridLayout gridLayout = new GridLayout(2, false);
    container.setLayout(gridLayout);
    Label label;

    // === error message ===
    this.errorMessageText = new Text(container, SWT.READ_ONLY | SWT.WRAP);
    this.errorMessageText.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, true, 2, 4));
    this.errorMessageText
            .setBackground(this.errorMessageText.getDisplay().getSystemColor(SWT.COLOR_WIDGET_BACKGROUND));
    this.errorMessageText.setForeground(this.errorMessageText.getDisplay().getSystemColor(SWT.COLOR_RED));
    setErrorMessage(this.errorMessage); // Set the error message text - see https://bugs.eclipse.org/bugs/show_bug.cgi?id=66292

    // === frame size ===
    final Label frameSizeLabel = new Label(container, SWT.NONE);
    frameSizeLabel.setLayoutData(new GridData(GridData.BEGINNING, GridData.CENTER, false, false));
    frameSizeLabel.setText("Frame Size:");
    this.frameSizeField = new ComboViewer(container, SWT.BORDER); // writable
    this.frameSizeField.getCombo()
            .setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false, 1, 1));
    this.frameSizeField.setContentProvider(ArrayContentProvider.getInstance()); // ArrayContentProvider does not store any state, therefore can re-use instances
    this.frameSizeField.setLabelProvider(new LabelProvider());
    final String otherValidFSValue = FRAME_SIZE_VALIDATOR.getOtherAllowedValue();
    Assert.isTrue(otherValidFSValue != null);
    Object currentFS = otherValidFSValue;
    final Object[] fsComboInputs;
    final Integer fs = this.plotSettings.getFrameSize();
    if (fs != null) {
        currentFS = fs;
        fsComboInputs = new Object[] { currentFS, otherValidFSValue, 512, 1024, 2048, 4096, 8192 };
    } else {
        fsComboInputs = new Object[] { otherValidFSValue, 512, 1024, 2048, 4096, 8192 };
    }
    this.frameSizeField.setInput(fsComboInputs);
    this.frameSizeField.setSelection(new StructuredSelection(currentFS));
    final Combo fsCombo = this.frameSizeField.getCombo();
    fsCombo.addModifyListener(new ComboVerifyAndSetListener(fsCombo, FRAME_SIZE_VALIDATOR, this) {
        @Override
        void updateSettings(Double newValue) {
            Integer newIntValue = (newValue == null) ? null : newValue.intValue();
            PlotSettingsDialog.this.plotSettings.setFrameSize(newIntValue);
        }
    });
    this.frameSizeField.addSelectionChangedListener(new SelectComboTextListener(fsCombo));

    // === sample rate ===
    final Label sampleRateValueLabel = new Label(container, SWT.NONE);
    sampleRateValueLabel.setLayoutData(new GridData(GridData.BEGINNING, GridData.CENTER, false, false));
    sampleRateValueLabel.setText("Sample rate:");
    this.sampleRateField = new ComboViewer(container, SWT.BORDER); // writable
    this.sampleRateField.getCombo()
            .setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false, 1, 1));
    this.sampleRateField.setContentProvider(ArrayContentProvider.getInstance()); // ArrayContentProvider does not store any state, therefore can re-use instances
    this.sampleRateField.setLabelProvider(new LabelProvider());
    final String otherValidSRateValue = SAMPLE_RATE_VALIDATOR.getOtherAllowedValue();
    Assert.isTrue(otherValidSRateValue != null);
    Object currentSRate = otherValidSRateValue;
    final Object[] srateComboInputs;
    final Double srate = this.plotSettings.getSampleRate();
    if (srate != null) {
        currentSRate = srate;
        srateComboInputs = new Object[] { currentSRate, otherValidSRateValue };
    } else {
        srateComboInputs = new Object[] { otherValidSRateValue };
    }
    this.sampleRateField.setInput(srateComboInputs);
    this.sampleRateField.setSelection(new StructuredSelection(currentSRate));
    final Combo sRateCombo = this.sampleRateField.getCombo();
    sRateCombo.addModifyListener(new ComboVerifyAndSetListener(sRateCombo, SAMPLE_RATE_VALIDATOR, this) {
        @Override
        void updateSettings(Double newValue) {
            PlotSettingsDialog.this.plotSettings.setSampleRate(newValue);
        }
    });
    this.sampleRateField.addSelectionChangedListener(new SelectComboTextListener(sRateCombo));

    // === Min Value ===
    final Label minValueLabel = new Label(container, SWT.NONE);
    minValueLabel.setLayoutData(new GridData(GridData.BEGINNING, GridData.CENTER, false, false));
    minValueLabel.setText("Min value:");
    this.minField = new ComboViewer(container, SWT.BORDER); // writable
    this.minField.getCombo().setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false, 1, 1));
    this.minField.setContentProvider(ArrayContentProvider.getInstance()); // ArrayContentProvider does not store any state, therefore can re-use instances
    this.minField.setLabelProvider(new LabelProvider());
    final String otherValidMinValue = MIN_VALUE_VALIDATOR.getOtherAllowedValue();
    Assert.isTrue(otherValidMinValue != null);
    Object currentMinVal = otherValidMinValue;
    final Object[] minValComboInputs;
    final Double minVal = this.plotSettings.getMinValue();
    if (minVal != null) {
        currentMinVal = minVal;
        minValComboInputs = new Object[] { currentMinVal, otherValidMinValue };
    } else {
        minValComboInputs = new Object[] { otherValidMinValue };
    }
    this.minField.setInput(minValComboInputs);
    this.minField.setSelection(new StructuredSelection(currentMinVal));
    final Combo minValCombo = this.minField.getCombo();
    minValCombo.addModifyListener(new ComboVerifyAndSetListener(minValCombo, MIN_VALUE_VALIDATOR, this) {
        @Override
        void updateSettings(Double newValue) {
            PlotSettingsDialog.this.plotSettings.setMinValue(newValue);
        }
    });
    this.minField.addSelectionChangedListener(new SelectComboTextListener(minValCombo));

    // === Max Value ===
    final Label maxValueLabel = new Label(container, SWT.NONE);
    maxValueLabel.setLayoutData(new GridData(GridData.BEGINNING, GridData.CENTER, false, false));
    maxValueLabel.setText("Max value:");
    this.maxField = new ComboViewer(container, SWT.BORDER); // writable
    this.maxField.getCombo().setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false, 1, 1));
    this.maxField.setContentProvider(ArrayContentProvider.getInstance()); // ArrayContentProvider does not store any state, therefore can re-use instances
    this.maxField.setLabelProvider(new LabelProvider());
    final String otherValidMaxValue = MAX_VALUE_VALIDATOR.getOtherAllowedValue();
    Assert.isTrue(otherValidMaxValue != null);
    Object currentMaxVal = otherValidMaxValue;
    final Object[] maxValComboInputs;
    final Double maxVal = this.plotSettings.getMaxValue();
    if (maxVal != null) {
        currentMaxVal = maxVal;
        maxValComboInputs = new Object[] { currentMaxVal, otherValidMaxValue };
    } else {
        maxValComboInputs = new Object[] { otherValidMaxValue };
    }
    this.maxField.setInput(maxValComboInputs);
    this.maxField.setSelection(new StructuredSelection(currentMaxVal));
    final Combo maxValCombo = this.maxField.getCombo();
    maxValCombo.addModifyListener(new ComboVerifyAndSetListener(maxValCombo, MAX_VALUE_VALIDATOR, this) {
        @Override
        void updateSettings(Double newValue) {
            PlotSettingsDialog.this.plotSettings.setMaxValue(newValue);
        }
    });
    this.maxField.addSelectionChangedListener(new SelectComboTextListener(maxValCombo));

    // === plot type ===
    final Label typeLabel = new Label(container, SWT.NONE);
    typeLabel.setLayoutData(new GridData(GridData.BEGINNING, GridData.CENTER, false, false));
    typeLabel.setText("Plot Type:");
    this.plotTypeField = new ComboViewer(container, SWT.READ_ONLY);
    this.plotTypeField.getCombo()
            .setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false, 1, 1));
    this.plotTypeField.setContentProvider(ArrayContentProvider.getInstance()); // ArrayContentProvider does not store any state, therefore can re-use instances
    this.plotTypeField.setLabelProvider(new LabelProvider());
    this.plotTypeField.addFilter(new ViewerFilter() {
        @Override
        public boolean select(Viewer viewer, Object parentElement, Object element) {
            switch ((PlotType) element) {
            case CONTOUR:
            case MESH:
                return false;
            default:
                return true;
            }
        }
    });
    this.plotTypeField.setInput(PlotType.values());
    this.plotTypeField.setSelection(new StructuredSelection(this.plotSettings.getPlotType()));
    this.plotTypeField.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(final SelectionChangedEvent event) {
            Object newVal = ((IStructuredSelection) event.getSelection()).getFirstElement();
            if (newVal instanceof PlotType) {
                PlotSettingsDialog.this.plotSettings.setPlotType((PlotType) newVal);
            }
        }
    });

    // === blocking option ===
    final Button blockingButton = new Button(container, SWT.CHECK);
    blockingButton.setText("Blocking");
    blockingButton.setLayoutData(GridDataFactory.fillDefaults().grab(true, false).span(2, 1).create());
    blockingButton.setToolTipText(
            "On/checked to block pushPacket when Plot is not able to keep up; Off to drop packets in this scenario.");
    dataBindingContext.bindValue(WidgetProperties.selection().observe(blockingButton),
            PojoProperties.value("blockingOption").observe(this.plotSettings));

    // === plot mode / complex mode ===
    label = new Label(container, SWT.NONE);
    label.setLayoutData(new GridData(GridData.BEGINNING, GridData.CENTER, false, false));
    label.setText("Plot Mode:");
    final ComboViewer complexModeWidget = new ComboViewer(container, SWT.READ_ONLY);
    complexModeWidget.getCombo().setLayoutData(GridDataFactory.fillDefaults().grab(true, false).create());
    complexModeWidget.getCombo().setToolTipText("Custom plot mode / complex mode.");
    complexModeWidget.setContentProvider(ArrayContentProvider.getInstance()); // ArrayContentProvider does not store any state, therefore can re-use instances
    complexModeWidget.setLabelProvider(new LabelProvider());
    complexModeWidget.setInput(PlotMode.values());
    dataBindingContext.bindValue(ViewerProperties.singleSelection().observe(complexModeWidget),
            PojoProperties.value("plotMode").observe(this.plotSettings));

    // === enable Plot configure menu ===
    final Button enablePlotMenuButton = new Button(parent, SWT.CHECK);
    enablePlotMenuButton.setText("Enable Plot Configure Menu");
    enablePlotMenuButton.setLayoutData(GridDataFactory.fillDefaults().grab(true, false).span(2, 1).create());
    dataBindingContext.bindValue(WidgetProperties.selection().observe(enablePlotMenuButton),
            PojoProperties.value("enablePlotMenu").observe(this.plotSettings));

    // === enable quick access control widgets ===
    final Button enableQuickControlsButton = new Button(parent, SWT.CHECK);
    enableQuickControlsButton.setText("Enable Quick Access Controls");
    enableQuickControlsButton
            .setLayoutData(GridDataFactory.fillDefaults().grab(true, false).span(2, 1).create());
    dataBindingContext.bindValue(WidgetProperties.selection().observe(enableQuickControlsButton),
            PojoProperties.value("enablePageBookQuickControls").observe(this));

    Dialog.applyDialogFont(container);

    return container;
}