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

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

Introduction

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

Prototype

public static <E> ListChangeEventTracker<E> observe(IObservableList<E> observable) 

Source Link

Document

Convenience method to register a new listener.

Usage

From source file:org.eclipse.core.tests.databinding.observable.list.ComputedListTest.java

License:Open Source License

public void testDependency_ListChangeEventFiresOnlyWhenNotDirty() {
    ListChangeEventTracker tracker = ListChangeEventTracker.observe(list);

    list.dependency.fireChange();//from  w w w .j  a  v a  2  s.  com
    assertEquals("ComputedList should fire list change event when its dependency changes", 1, tracker.count);

    list.dependency.fireChange();
    assertEquals("ComputedList should not fire list change events when dirty", 1, tracker.count);

    list.size(); // Force list to recompute.
    list.dependency.fireChange();
    assertEquals("ComputedList should fire list change event when its dependency changes", 2, tracker.count);
}

From source file:org.eclipse.core.tests.databinding.observable.list.MultiListTest.java

License:Open Source License

public void testModifySubList_FiresListChangeEventFromMultiList() {
    ListChangeEventTracker tracker = ListChangeEventTracker.observe(multiList);
    ListDiffEntry[] differences;//from www. j a v a 2 s  .  c  o m

    //

    Object element0 = new Object();
    multiList.subLists[0].add(element0);

    assertEquals(1, tracker.count);

    differences = tracker.event.diff.getDifferences();
    assertEquals(1, differences.length);
    assertEntry(differences[0], 0, true, element0);

    //

    Object element1 = new Object();
    multiList.subLists[1].add(element1);

    assertEquals(2, tracker.count);

    differences = tracker.event.diff.getDifferences();
    assertEquals(1, differences.length);
    assertEntry(differences[0], 1, true, element1);

    //

    Object element2 = new Object();
    multiList.subLists[0].add(element2);

    assertEquals(3, tracker.count);

    differences = tracker.event.diff.getDifferences();
    assertEquals(1, differences.length);
    assertEntry(differences[0], 1, true, element2);

}

From source file:org.eclipse.core.tests.internal.databinding.beans.JavaBeanObservableArrayBasedListTest.java

License:Open Source License

public void testSetBeanProperty_CorrectForNullOldAndNewValues() {
    // The java bean spec allows the old and new values in a
    // PropertyChangeEvent to be null, which indicates that an unknown
    // change occured.

    // This test ensures that JavaBeanObservableValue fires the correct
    // value diff even if the bean implementor is lazy :-P

    Bean bean = new AnnoyingBean();
    bean.setArray(new Object[] { "old" });
    IObservableList observable = BeansObservables.observeList(new CurrentRealm(true), bean, "array");
    ListChangeEventTracker tracker = ListChangeEventTracker.observe(observable);
    bean.setArray(new Object[] { "new" });
    assertEquals(1, tracker.count);//from w w  w .j a v  a 2  s. c o  m

    List list = new ArrayList();
    list.add("old");
    tracker.event.diff.applyTo(list);
    assertEquals(Collections.singletonList("new"), list);
}

From source file:org.eclipse.core.tests.internal.databinding.beans.JavaBeanObservableArrayBasedListTest.java

License:Open Source License

public void testModifyObservableList_FiresListChange() {
    Bean bean = new Bean(new Object[] { "old" });
    IObservableList observable = BeansObservables.observeList(bean, "array");
    ListChangeEventTracker tracker = ListChangeEventTracker.observe(observable);

    observable.set(0, "new");

    assertEquals(1, tracker.count);//from w w  w.  j  a v a  2 s  . c  om
    assertDiff(tracker.event.diff, Collections.singletonList("old"), Collections.singletonList("new"));
}

From source file:org.eclipse.core.tests.internal.databinding.beans.JavaBeanObservableArrayBasedListTest.java

License:Open Source License

public void testSetBeanPropertyOutsideRealm_FiresEventInsideRealm() {
    Bean bean = new Bean(new Object[0]);
    CurrentRealm realm = new CurrentRealm(true);
    IObservableList observable = BeansObservables.observeList(realm, bean, "array");
    ListChangeEventTracker tracker = ListChangeEventTracker.observe(observable);

    realm.setCurrent(false);/*w  ww  .  j  av a2  s .  com*/
    bean.setArray(new Object[] { "element" });
    assertEquals(0, tracker.count);

    realm.setCurrent(true);
    assertEquals(1, tracker.count);
    assertDiff(tracker.event.diff, Collections.EMPTY_LIST, Collections.singletonList("element"));
}

From source file:org.eclipse.core.tests.internal.databinding.beans.JavaBeanObservableListTest.java

License:Open Source License

public void testSetListChangeEvent() throws Exception {
    String oldElement = "old";
    String newElement = "new";
    list.add(oldElement);//from  w  ww .  j  a  v a 2  s . c o m

    ListChangeEventTracker listener = ListChangeEventTracker.observe(list);
    assertEquals(0, listener.count);

    list.set(0, newElement);

    assertEquals(1, listener.count);
    ListChangeEvent event = listener.event;
    assertSame(list, event.getObservableList());

    assertDiff(event.diff, Collections.singletonList(oldElement), Collections.singletonList(newElement));
}

From source file:org.eclipse.core.tests.internal.databinding.beans.JavaBeanObservableListTest.java

License:Open Source License

public void testSetBeanProperty_CorrectForNullOldAndNewValues() {
    // The java bean spec allows the old and new values in a
    // PropertyChangeEvent to be null, which indicates that an unknown
    // change occured.

    // This test ensures that JavaBeanObservableValue fires the correct
    // value diff even if the bean implementor is lazy :-P

    Bean bean = new AnnoyingBean();
    bean.setList(Collections.singletonList("old"));
    IObservableList observable = BeansObservables.observeList(new CurrentRealm(true), bean, "list");
    ListChangeEventTracker tracker = ListChangeEventTracker.observe(observable);
    bean.setList(Collections.singletonList("new"));

    assertEquals(1, tracker.count);/*from   ww  w . j a v  a  2  s. c  o  m*/

    List list = new ArrayList();
    list.add("old");
    tracker.event.diff.applyTo(list);
    assertEquals(Collections.singletonList("new"), list);
}

From source file:org.eclipse.core.tests.internal.databinding.beans.JavaBeanObservableListTest.java

License:Open Source License

public void testModifyObservableList_FiresListChange() {
    Bean bean = new Bean(new ArrayList());
    IObservableList observable = BeansObservables.observeList(bean, "list");
    ListChangeEventTracker tracker = ListChangeEventTracker.observe(observable);

    Object element = new Object();
    observable.add(element);//w w  w . j  av a  2  s .co m

    assertEquals(1, tracker.count);
    assertDiff(tracker.event.diff, Collections.EMPTY_LIST, Collections.singletonList(element));
}

From source file:org.eclipse.core.tests.internal.databinding.beans.JavaBeanObservableListTest.java

License:Open Source License

public void testSetBeanPropertyOutsideRealm_FiresEventInsideRealm() {
    Bean bean = new Bean(Collections.EMPTY_LIST);
    CurrentRealm realm = new CurrentRealm(true);
    IObservableList observable = BeansObservables.observeList(realm, bean, "list");
    ListChangeEventTracker tracker = ListChangeEventTracker.observe(observable);

    realm.setCurrent(false);//from   w  ww.  j a  v  a2  s. co m
    bean.setList(Collections.singletonList("element"));
    assertEquals(0, tracker.count);

    realm.setCurrent(true);
    assertEquals(1, tracker.count);
    assertDiff(tracker.event.diff, Collections.EMPTY_LIST, Collections.singletonList("element"));
}

From source file:org.eclipse.core.tests.internal.databinding.observable.masterdetail.ListDetailValueObservableListTest.java

License:Open Source License

public void testDuplicateMasterElements() {
    WritableList masterList = new WritableList();
    ListDetailValueObservableList ldol = new ListDetailValueObservableList(masterList,
            BeansObservables.valueFactory("name"), String.class);

    SimplePerson master = new SimplePerson();
    master.setName("name1");

    // Add the same master twice.
    masterList.add(master);//from w  w w . j  a  v  a 2  s  .  co  m
    masterList.add(master);

    // Attach the change listener to the detail list.
    ListChangeEventTracker changeTracker = ListChangeEventTracker.observe(ldol);

    // Setting the name on master should trigger an event on both
    // occurrences of in the master list.
    master.setName("name2");

    // We should have 2 replace diffs, i.e. 4 diff entries.
    assertEquals(1, changeTracker.count);
    assertEquals(4, changeTracker.event.diff.getDifferences().length);
    assertReplaceDiffAt(changeTracker.event.diff, 0, 0, "name1", "name2");
    assertReplaceDiffAt(changeTracker.event.diff, 2, 0, "name1", "name2");

    // Remove one instance of the master (one will remain).
    masterList.remove(master);

    // It should still be possible to work on the remaining master instance.
    ldol.set(0, "name3");
    assertEquals("name3", master.getName());
}