Example usage for org.eclipse.jface.databinding.conformance.util StaleEventTracker observe

List of usage examples for org.eclipse.jface.databinding.conformance.util StaleEventTracker observe

Introduction

In this page you can find the example usage for org.eclipse.jface.databinding.conformance.util StaleEventTracker observe.

Prototype

public static StaleEventTracker observe(IObservable observable) 

Source Link

Document

Convenience method to register a new listener.

Usage

From source file:org.eclipse.core.tests.databinding.validation.MultiValidatorTest.java

License:Open Source License

public void testValidationStaleness() {
    ValueChangeEventTracker validationChangeCounter = ValueChangeEventTracker.observe(validationStatus);

    StaleEventTracker validationStaleCounter = StaleEventTracker.observe(validationStatus);

    // Assert initial state.
    assertFalse(validationStatus.isStale());
    assertEquals(0, validationChangeCounter.count);
    assertEquals(0, validationStaleCounter.count);

    // Change to a stale state.
    dependency.setStale(true);/*from  w  w w  .j  a  v  a 2  s.c  o m*/
    assertTrue(validationStatus.isStale());
    assertEquals(0, validationChangeCounter.count);
    assertEquals(1, validationStaleCounter.count); // +1

    // The validation status is already stale so even if it gets another
    // stale event from its dependencies, it should not propagate that
    // event.
    dependency.fireStale();
    assertTrue(validationStatus.isStale());
    assertEquals(0, validationChangeCounter.count);
    assertEquals(1, validationStaleCounter.count);

    // Change the validation status while remaining stale.
    dependency.setValue(ValidationStatus.error("e1"));
    assertTrue(validationStatus.isStale());
    assertEquals(1, validationChangeCounter.count); // +1
    assertEquals(1, validationStaleCounter.count);

    // Move back to a non-stale state.
    dependency.setStale(false);
    assertFalse(dependency.isStale());
    assertFalse(validationStatus.isStale());
    assertEquals(2, validationChangeCounter.count); // +1
    assertEquals(1, validationStaleCounter.count);
}

From source file:org.eclipse.core.tests.databinding.validation.MultiValidatorTest.java

License:Open Source License

public void testValidationStatusBecomesStaleThroughNewDependency() {
    final DependencyObservableValue nonStaleDependency = new DependencyObservableValue(ValidationStatus.ok(),
            IStatus.class);
    nonStaleDependency.setStale(false);/*from   w w w . j a  v  a  2s.  c o m*/

    final DependencyObservableValue staleDependency = new DependencyObservableValue(ValidationStatus.ok(),
            IStatus.class);
    staleDependency.setStale(true);

    validator = new MultiValidator() {
        protected IStatus validate() {
            if (nonStaleDependency.getValue() != null) {
                return (IStatus) nonStaleDependency.getValue();
            }
            return (IStatus) staleDependency.getValue();
        }
    };
    validationStatus = validator.getValidationStatus();

    assertFalse(validationStatus.isStale());

    StaleEventTracker validationStaleCounter = StaleEventTracker.observe(validationStatus);
    assertEquals(0, validationStaleCounter.count);

    // Setting the status of the non-stale dependency to null leads to the
    // new stale dependency being accessed which in turn should trigger a
    // stale event.
    nonStaleDependency.setValue(null);
    assertTrue(validationStatus.isStale());
    assertEquals(1, validationStaleCounter.count);
}