List of usage examples for org.eclipse.jface.viewers ComboViewer getCombo
public Combo getCombo()
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; }