Example usage for org.eclipse.jface.internal.databinding.provisional.swt ControlUpdater ControlUpdater

List of usage examples for org.eclipse.jface.internal.databinding.provisional.swt ControlUpdater ControlUpdater

Introduction

In this page you can find the example usage for org.eclipse.jface.internal.databinding.provisional.swt ControlUpdater ControlUpdater.

Prototype

public ControlUpdater(Control toUpdate) 

Source Link

Document

Creates an updater for the given control.

Usage

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);
}