List of usage examples for org.eclipse.jface.internal.databinding.provisional.swt ControlUpdater ControlUpdater
public ControlUpdater(Control toUpdate)
From source file:org.eclipse.e4.xwt.tests.snipppets.Snippet015DelayTextModifyEvents.java
License:Open Source License
private static void createControls(Shell shell) { final Label field1 = createLabel(shell, SWT.NONE, "Field 1 "); Text text1 = new Text(shell, SWT.BORDER); GridDataFactory.fillDefaults().grab(true, false).hint(200, SWT.DEFAULT).applyTo(text1); createLabel(shell, SWT.NONE, "200ms delay"); final Label field2 = createLabel(shell, SWT.NONE, "Field 2 "); Text text2 = new Text(shell, SWT.BORDER); GridDataFactory.fillDefaults().grab(true, false).hint(200, SWT.DEFAULT).applyTo(text2); createLabel(shell, SWT.NONE, "1000ms delay"); final ISWTObservableValue delayed1 = WidgetProperties.text(SWT.Modify).observeDelayed(200, text1); final ISWTObservableValue delayed2 = WidgetProperties.text(SWT.Modify).observeDelayed(1000, text2); // (In a real application,you would want to dispose the resource manager // when you are done with it) ResourceManager resourceManager = new LocalResourceManager(JFaceResources.getResources()); final Font shellFont = shell.getFont(); final Font italicFont = resourceManager .createFont(FontDescriptor.createFrom(shellFont).setStyle(SWT.ITALIC)); final IObservableValue stale1 = Observables.observeStale(delayed1); new ControlUpdater(field2) { protected void updateControl() { boolean stale = ((Boolean) stale1.getValue()).booleanValue(); field2.setFont(stale ? italicFont : shellFont); }//from w w w . j a v a 2 s . c om }; final IObservableValue stale2 = Observables.observeStale(delayed2); new ControlUpdater(field1) { protected void updateControl() { boolean stale = ((Boolean) stale2.getValue()).booleanValue(); field1.setFont(stale ? italicFont : shellFont); } }; String info = "Pending changes are applied immediately if the observed control loses focus"; GridDataFactory.fillDefaults().span(3, 1).applyTo(createLabel(shell, SWT.WRAP, info)); DataBindingContext dbc = new DataBindingContext(); dbc.bindValue(delayed1, delayed2); }
From source file:org.eclipse.jface.examples.databinding.snippets.Snippet015DelayTextModifyEvents.java
License:Open Source License
private static void createControls(Shell shell) { final Label field1 = createLabel(shell, SWT.NONE, "Field 1 "); Text text1 = new Text(shell, SWT.BORDER); GridDataFactory.fillDefaults().grab(true, false).hint(200, SWT.DEFAULT).applyTo(text1); createLabel(shell, SWT.NONE, "200 ms delay"); final Label field2 = createLabel(shell, SWT.NONE, "Field 2 "); Text text2 = new Text(shell, SWT.BORDER); GridDataFactory.fillDefaults().grab(true, false).hint(200, SWT.DEFAULT).applyTo(text2); createLabel(shell, SWT.NONE, "2000 ms delay"); final ISWTObservableValue<String> delayed1 = WidgetProperties.text(SWT.Modify).observeDelayed(200, text1); final ISWTObservableValue<String> delayed2 = WidgetProperties.text(SWT.Modify).observeDelayed(2000, text2); // (In a real application,you would want to dispose the resource manager // when you are done with it) ResourceManager resourceManager = new LocalResourceManager(JFaceResources.getResources()); final Font shellFont = shell.getFont(); final Font italicFont = resourceManager .createFont(FontDescriptor.createFrom(shellFont).setStyle(SWT.ITALIC)); final IObservableValue<Boolean> stale1 = Observables.observeStale(delayed1); new ControlUpdater(field2) { @Override// w w w.j a v a 2 s. c o m protected void updateControl() { field2.setFont(stale1.getValue() ? italicFont : shellFont); } }; final IObservableValue<Boolean> stale2 = Observables.observeStale(delayed2); new ControlUpdater(field1) { @Override protected void updateControl() { field1.setFont(stale2.getValue() ? italicFont : shellFont); } }; String info = "Pending changes are applied immediately if the observed control loses focus."; GridDataFactory.fillDefaults().span(3, 1).hint(300, SWT.DEFAULT) .applyTo(createLabel(shell, SWT.WRAP, info)); DataBindingContext dbc = new DataBindingContext(); dbc.bindValue(delayed1, delayed2); // Sometimes it is useful to do a manual value flush when of the delayed // observables. This can be done in the following two ways. text2.addTraverseListener(e -> { if (e.detail == SWT.TRAVERSE_RETURN) { // The DataBindingContext update methods can also be used to update // observables in bulk dbc.updateTargets(); } }); text1.addTraverseListener(e -> { if (e.detail == SWT.TRAVERSE_RETURN) { // When the setValue method is called on a delayed observable // the change is immediately propagated to its listeners without // any delay. All other pending changes are cancelled. delayed1.setValue(text1.getText()); } }); }
From source file:org.eclipse.jface.examples.databinding.snippets.Snippet023ConditionalVisibility.java
License:Open Source License
/** * @param shell// www .ja v a2s . co m */ private void createControls(Shell shell) { Composite composite = new Composite(shell, SWT.NONE); Group radioGroup = new Group(composite, SWT.NONE); radioGroup.setText("Type"); Button textButton = new Button(radioGroup, SWT.RADIO); textButton.setText("Text"); Button rangeButton = new Button(radioGroup, SWT.RADIO); rangeButton.setText("Range"); GridLayoutFactory.swtDefaults().generateLayout(radioGroup); final Composite oneOfTwo = new Composite(composite, SWT.NONE); final StackLayout stackLayout = new StackLayout(); oneOfTwo.setLayout(stackLayout); final Group rangeGroup = new Group(oneOfTwo, SWT.NONE); rangeGroup.setText("Range"); Label fromLabel = new Label(rangeGroup, SWT.NONE); fromLabel.setText("From:"); fromText = new Text(rangeGroup, SWT.SINGLE | SWT.LEAD | SWT.BORDER); Label toLabel = new Label(rangeGroup, SWT.NONE); toLabel.setText("To:"); toText = new Text(rangeGroup, SWT.SINGLE | SWT.LEAD | SWT.BORDER); GridLayoutFactory.swtDefaults().numColumns(2).generateLayout(rangeGroup); final Group textGroup = new Group(oneOfTwo, SWT.NONE); textGroup.setText("Text"); Label label = new Label(textGroup, SWT.NONE); label.setText("Text:"); text = new Text(textGroup, SWT.SINGLE | SWT.LEAD | SWT.BORDER); GridLayoutFactory.swtDefaults().numColumns(2).generateLayout(textGroup); GridLayoutFactory.swtDefaults().numColumns(2).generateLayout(composite); final IObservableValue<Boolean> rangeSelected = WidgetProperties.buttonSelection().observe(rangeButton); final IObservableValue<Boolean> textSelected = WidgetProperties.buttonSelection().observe(textButton); // Note that ControlUpdater is not API. new ControlUpdater(oneOfTwo) { @Override protected void updateControl() { if (rangeSelected.getValue()) { stackLayout.topControl = rangeGroup; oneOfTwo.layout(); } else if (textSelected.getValue()) { stackLayout.topControl = textGroup; oneOfTwo.layout(); } } }; }
From source file:org.eclipse.ui.tests.manual.ViewWithSaveables.java
License:Open Source License
public void createPartControl(Composite parent) { viewer = new TableViewer(parent, SWT.BORDER); GridDataFactory.fillDefaults().grab(true, true).span(4, 1).applyTo(viewer.getControl()); ObservableListContentProvider observableListContentProvider = new ObservableListContentProvider(); viewer.setContentProvider(observableListContentProvider); viewer.setLabelProvider(new ObservableMapLabelProvider( new DirtyObservableMap(observableListContentProvider.getKnownElements())) { public String getColumnText(Object element, int columnIndex) { return getText(element); }//from w ww. j a va 2s. c om public String getText(Object element) { MySaveable saveable = (MySaveable) element; return (saveable.isDirty() ? "*" : "") + saveable.toString(); } }); viewer.setInput(saveables); { Button button = new Button(parent, SWT.PUSH); button.setText("Add"); button.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { addSaveable(); } }); } selection = ViewersObservables.observeSingleSelection(viewer); { final Button button = new Button(parent, SWT.PUSH); button.setText("Remove"); button.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { removeSaveable(); } }); new ControlUpdater(button) { protected void updateControl() { button.setEnabled(selection.getValue() != null); } }; } { final Button button = new Button(parent, SWT.CHECK); button.setText("dirty"); button.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { MySaveable saveable = (MySaveable) selection.getValue(); saveable.setDirty(button.getSelection()); } }); new ControlUpdater(button) { protected void updateControl() { MySaveable saveable = (MySaveable) selection.getValue(); if (saveable == null) { button.setEnabled(false); button.setSelection(false); } else { button.setEnabled(true); // we know that isDirty is implemented using a // WritableValue, // and thus a dependency on that writable value will // result from // calling isDirty(). button.setSelection(saveable.isDirty()); } } }; } getSite().setSelectionProvider(viewer); dirty.addValueChangeListener(new IValueChangeListener() { public void handleValueChange(ValueChangeEvent event) { firePropertyChange(ISaveablePart.PROP_DIRTY); } }); GridLayoutFactory.fillDefaults().numColumns(4).equalWidth(false).generateLayout(parent); }