Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.debug.tests/src/org/eclipse/debug/tests/viewer/model/StateTests.java')
-rw-r--r--org.eclipse.debug.tests/src/org/eclipse/debug/tests/viewer/model/StateTests.java1266
1 files changed, 633 insertions, 633 deletions
diff --git a/org.eclipse.debug.tests/src/org/eclipse/debug/tests/viewer/model/StateTests.java b/org.eclipse.debug.tests/src/org/eclipse/debug/tests/viewer/model/StateTests.java
index aed68f6ad..5e858848f 100644
--- a/org.eclipse.debug.tests/src/org/eclipse/debug/tests/viewer/model/StateTests.java
+++ b/org.eclipse.debug.tests/src/org/eclipse/debug/tests/viewer/model/StateTests.java
@@ -35,208 +35,208 @@ import org.eclipse.jface.viewers.TreeSelection;
*/
abstract public class StateTests extends AbstractViewerModelTest implements ITestModelUpdatesListenerConstants {
- public StateTests(String name) {
- super(name);
- }
+ public StateTests(String name) {
+ super(name);
+ }
- @Override
+ @Override
protected TestModelUpdatesListener createListener(IInternalTreeModelViewer viewer) {
return new TestModelUpdatesListener(viewer, false, false);
}
- protected IInternalTreeModelViewer getInternalViewer() {
- return fViewer;
- }
+ protected IInternalTreeModelViewer getInternalViewer() {
+ return fViewer;
+ }
public void testUpdateViewer() throws Exception {
- //TreeModelViewerAutopopulateAgent autopopulateAgent = new TreeModelViewerAutopopulateAgent(fViewer);
+ //TreeModelViewerAutopopulateAgent autopopulateAgent = new TreeModelViewerAutopopulateAgent(fViewer);
- TestModel model = TestModel.simpleMultiLevel();
+ TestModel model = TestModel.simpleMultiLevel();
- // Create the listener
- fListener.reset();
- fListener.addChildreUpdate(TreePath.EMPTY, 0);
- fListener.addChildreUpdate(TreePath.EMPTY, 1);
- fListener.addChildreUpdate(TreePath.EMPTY, 2);
+ // Create the listener
+ fListener.reset();
+ fListener.addChildreUpdate(TreePath.EMPTY, 0);
+ fListener.addChildreUpdate(TreePath.EMPTY, 1);
+ fListener.addChildreUpdate(TreePath.EMPTY, 2);
- // Set the input into the view and update the view.
- fViewer.setInput(model.getRootElement());
+ // Set the input into the view and update the view.
+ fViewer.setInput(model.getRootElement());
waitWhile(t -> !fListener.isFinished(), createListenerErrorMessage());
- model.validateData(fViewer, TreePath.EMPTY, true);
-
- // Create the update delta
- TestElement element = model.getRootElement();
- TreePath path0 = TreePath.EMPTY;
- ModelDelta delta = new ModelDelta(model.getRootElement(), -1, IModelDelta.EXPAND, element.getChildren().length);
- ModelDelta updateDelta = delta;
- element = element.getChildren()[2];
- TreePath path1 = path0.createChildPath(element);
- delta = delta.addNode(element, 2, IModelDelta.EXPAND, element.fChildren.length);
- element = element.getChildren()[1];
- TreePath path2 = path1.createChildPath(element);
- delta = delta.addNode(element, 1, IModelDelta.EXPAND, element.fChildren.length);
- element = element.getChildren()[1];
- TreePath path3 = path2.createChildPath(element);
- delta = delta.addNode(element, 1, IModelDelta.SELECT);
-
- fListener.reset(false, false);
-
- fListener.addChildreUpdate(path0, 2);
- fListener.addHasChildrenUpdate(path1);
- fListener.addChildreCountUpdate(path1);
- fListener.addLabelUpdate(path1);
- fListener.addChildreUpdate(path1, 1);
- fListener.addHasChildrenUpdate(path2);
- fListener.addChildreCountUpdate(path2);
- fListener.addLabelUpdate(path2);
- fListener.addHasChildrenUpdate(path2);
- fListener.addChildreCountUpdate(path2);
- fListener.addChildreUpdate(path2, 1);
- fListener.addHasChildrenUpdate(path3);
- fListener.addLabelUpdate(path3);
-
- fViewer.updateViewer(updateDelta);
+ model.validateData(fViewer, TreePath.EMPTY, true);
+
+ // Create the update delta
+ TestElement element = model.getRootElement();
+ TreePath path0 = TreePath.EMPTY;
+ ModelDelta delta = new ModelDelta(model.getRootElement(), -1, IModelDelta.EXPAND, element.getChildren().length);
+ ModelDelta updateDelta = delta;
+ element = element.getChildren()[2];
+ TreePath path1 = path0.createChildPath(element);
+ delta = delta.addNode(element, 2, IModelDelta.EXPAND, element.fChildren.length);
+ element = element.getChildren()[1];
+ TreePath path2 = path1.createChildPath(element);
+ delta = delta.addNode(element, 1, IModelDelta.EXPAND, element.fChildren.length);
+ element = element.getChildren()[1];
+ TreePath path3 = path2.createChildPath(element);
+ delta = delta.addNode(element, 1, IModelDelta.SELECT);
+
+ fListener.reset(false, false);
+
+ fListener.addChildreUpdate(path0, 2);
+ fListener.addHasChildrenUpdate(path1);
+ fListener.addChildreCountUpdate(path1);
+ fListener.addLabelUpdate(path1);
+ fListener.addChildreUpdate(path1, 1);
+ fListener.addHasChildrenUpdate(path2);
+ fListener.addChildreCountUpdate(path2);
+ fListener.addLabelUpdate(path2);
+ fListener.addHasChildrenUpdate(path2);
+ fListener.addChildreCountUpdate(path2);
+ fListener.addChildreUpdate(path2, 1);
+ fListener.addHasChildrenUpdate(path3);
+ fListener.addLabelUpdate(path3);
+
+ fViewer.updateViewer(updateDelta);
waitWhile(t -> !fListener.isFinished(CONTENT_SEQUENCE_COMPLETE | LABEL_UPDATES), createListenerErrorMessage());
- // Extract the new state from viewer
- ModelDelta savedDelta = new ModelDelta(model.getRootElement(), IModelDelta.NO_CHANGE);
- fViewer.saveElementState(path0, savedDelta, IModelDelta.EXPAND | IModelDelta.SELECT);
+ // Extract the new state from viewer
+ ModelDelta savedDelta = new ModelDelta(model.getRootElement(), IModelDelta.NO_CHANGE);
+ fViewer.saveElementState(path0, savedDelta, IModelDelta.EXPAND | IModelDelta.SELECT);
- if (!deltaMatches(updateDelta, savedDelta) ) {
+ if (!deltaMatches(updateDelta, savedDelta) ) {
fail("Expected:\n" + updateDelta.toString() + "\nGot:\n" + savedDelta); //$NON-NLS-1$ //$NON-NLS-2$
- }
- }
-
- boolean deltaMatches(ModelDelta requested, ModelDelta received) {
- if ( requested.getElement().equals(received.getElement()) &&
- requested.getFlags() == received.getFlags() &&
- ( requested.getChildCount() == -1 || requested.getChildCount() == received.getChildCount() )&&
- ( requested.getIndex() == -1 || requested.getIndex() == received.getIndex()) &&
- ((requested.getReplacementElement() != null && requested.getReplacementElement().equals(received.getReplacementElement())) ||
- (requested.getReplacementElement() == null && received.getReplacementElement() == null)) &&
- requested.getChildDeltas().length == received.getChildDeltas().length)
- {
- for (int i = 0; i < requested.getChildDeltas().length; i++) {
- ModelDelta requestedChildDelta = (ModelDelta)requested.getChildDeltas()[i];
- ModelDelta receivedChildDelta = received.getChildDelta(requestedChildDelta.getElement());
- if ( receivedChildDelta == null || !deltaMatches(requestedChildDelta, receivedChildDelta) ) {
- return false;
- }
- }
- return true;
- }
- return false;
- }
-
- /**
- * Creates a model in the pattern of:
- *
- * root
- * 1
- * 1.1
- * 1.1.1
- * 2
- * 2.1
- * 2.1.1
- * 3
- * 3.1
- * 3.1.1
- * ...
- * (size)
- * (size).1
- * (size).1.1
- */
- static TestModel alternatingSubsreesModel(int size) {
- TestModel model = new TestModel();
-
- TestElement[] elements = new TestElement[size];
- for (int i = 0; i < size; i++) {
- String text = Integer.toString(i + 1);
- elements[i] =
- new TestElement(model, text, new TestElement[] {
+ }
+ }
+
+ boolean deltaMatches(ModelDelta requested, ModelDelta received) {
+ if ( requested.getElement().equals(received.getElement()) &&
+ requested.getFlags() == received.getFlags() &&
+ ( requested.getChildCount() == -1 || requested.getChildCount() == received.getChildCount() )&&
+ ( requested.getIndex() == -1 || requested.getIndex() == received.getIndex()) &&
+ ((requested.getReplacementElement() != null && requested.getReplacementElement().equals(received.getReplacementElement())) ||
+ (requested.getReplacementElement() == null && received.getReplacementElement() == null)) &&
+ requested.getChildDeltas().length == received.getChildDeltas().length)
+ {
+ for (int i = 0; i < requested.getChildDeltas().length; i++) {
+ ModelDelta requestedChildDelta = (ModelDelta)requested.getChildDeltas()[i];
+ ModelDelta receivedChildDelta = received.getChildDelta(requestedChildDelta.getElement());
+ if ( receivedChildDelta == null || !deltaMatches(requestedChildDelta, receivedChildDelta) ) {
+ return false;
+ }
+ }
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * Creates a model in the pattern of:
+ *
+ * root
+ * 1
+ * 1.1
+ * 1.1.1
+ * 2
+ * 2.1
+ * 2.1.1
+ * 3
+ * 3.1
+ * 3.1.1
+ * ...
+ * (size)
+ * (size).1
+ * (size).1.1
+ */
+ static TestModel alternatingSubsreesModel(int size) {
+ TestModel model = new TestModel();
+
+ TestElement[] elements = new TestElement[size];
+ for (int i = 0; i < size; i++) {
+ String text = Integer.toString(i + 1);
+ elements[i] =
+ new TestElement(model, text, new TestElement[] {
new TestElement(model, text + ".1", new TestElement[] { //$NON-NLS-1$
new TestElement(model, text + ".1.1", new TestElement[0]) //$NON-NLS-1$
- })
- });
- }
+ })
+ });
+ }
model.setRoot(new TestElement(model, "root", elements)); //$NON-NLS-1$
- return model;
- }
+ return model;
+ }
- static boolean areTreeSelectionsEqual(ITreeSelection sel1, ITreeSelection sel2) {
+ static boolean areTreeSelectionsEqual(ITreeSelection sel1, ITreeSelection sel2) {
Set<TreePath> sel1Set = new HashSet<>();
- sel1Set.addAll( Arrays.asList(sel1.getPaths()) );
+ sel1Set.addAll( Arrays.asList(sel1.getPaths()) );
Set<TreePath> sel2Set = new HashSet<>();
- sel2Set.addAll( Arrays.asList(sel2.getPaths()) );
+ sel2Set.addAll( Arrays.asList(sel2.getPaths()) );
- return sel1Set.equals(sel2Set);
- }
+ return sel1Set.equals(sel2Set);
+ }
static void expandAlternateElements(TestModelUpdatesListener listener, TestModel model, boolean waitForAllUpdates) throws Exception {
- listener.reset();
- listener.setFailOnRedundantUpdates(false);
-
- TestElement rootElement = model.getRootElement();
- TestElement[] children = rootElement.getChildren();
- ModelDelta rootDelta = new ModelDelta(rootElement, IModelDelta.NO_CHANGE);
- ModelDelta expandDelta = model.getBaseDelta(rootDelta);
- for (int i = 0; i < children.length; i++) {
- // Expand only odd children
- if (i % 2 == 1) {
- continue;
- }
-
- // Expand the element and the first child of each sub-element
- TestElement element = children[i];
- ModelDelta delta = expandDelta;
- int index = i;
- while (element.getChildren().length != 0) {
- TreePath elementPath = model.findElement(element.getLabel());
- listener.addUpdates(
- elementPath, element, 1,
- CHILD_COUNT_UPDATES | (waitForAllUpdates ? CHILDREN_UPDATES : 0) );
- delta = delta.addNode(element, index, IModelDelta.EXPAND, element.getChildren().length);
- element = element.getChildren()[0];
- index = 0;
- }
- }
- model.postDelta(rootDelta);
+ listener.reset();
+ listener.setFailOnRedundantUpdates(false);
+
+ TestElement rootElement = model.getRootElement();
+ TestElement[] children = rootElement.getChildren();
+ ModelDelta rootDelta = new ModelDelta(rootElement, IModelDelta.NO_CHANGE);
+ ModelDelta expandDelta = model.getBaseDelta(rootDelta);
+ for (int i = 0; i < children.length; i++) {
+ // Expand only odd children
+ if (i % 2 == 1) {
+ continue;
+ }
+
+ // Expand the element and the first child of each sub-element
+ TestElement element = children[i];
+ ModelDelta delta = expandDelta;
+ int index = i;
+ while (element.getChildren().length != 0) {
+ TreePath elementPath = model.findElement(element.getLabel());
+ listener.addUpdates(
+ elementPath, element, 1,
+ CHILD_COUNT_UPDATES | (waitForAllUpdates ? CHILDREN_UPDATES : 0) );
+ delta = delta.addNode(element, index, IModelDelta.EXPAND, element.getChildren().length);
+ element = element.getChildren()[0];
+ index = 0;
+ }
+ }
+ model.postDelta(rootDelta);
TestUtil.waitWhile(t -> !listener.isFinished(CONTENT_SEQUENCE_COMPLETE | MODEL_CHANGED_COMPLETE), null, 30000, t -> "Listener not finished: " + listener);
- }
+ }
public void testPreserveExpandedOnRemove() throws Exception {
- //TreeModelViewerAutopopulateAgent autopopulateAgent = new TreeModelViewerAutopopulateAgent(fViewer);
- TestModel model = alternatingSubsreesModel(6);
+ //TreeModelViewerAutopopulateAgent autopopulateAgent = new TreeModelViewerAutopopulateAgent(fViewer);
+ TestModel model = alternatingSubsreesModel(6);
- // NOTE: WE ARE NOT EXPANDING ANY CHILDREN
+ // NOTE: WE ARE NOT EXPANDING ANY CHILDREN
- // Create the listener, only check the first level
- fListener.reset(TreePath.EMPTY, model.getRootElement(), 1, true, false);
+ // Create the listener, only check the first level
+ fListener.reset(TreePath.EMPTY, model.getRootElement(), 1, true, false);
- // Set the input into the view and update the view.
- fViewer.setInput(model.getRootElement());
+ // Set the input into the view and update the view.
+ fViewer.setInput(model.getRootElement());
waitWhile(t -> !fListener.isFinished(), createListenerErrorMessage());
- model.validateData(fViewer, TreePath.EMPTY, true);
+ model.validateData(fViewer, TreePath.EMPTY, true);
- expandAlternateElements(fListener, model, true);
+ expandAlternateElements(fListener, model, true);
- // Set a selection in view
+ // Set a selection in view
TreeSelection originalSelection = new TreeSelection(model.findElement("5.1")); //$NON-NLS-1$
- fViewer.setSelection(originalSelection);
+ fViewer.setSelection(originalSelection);
- // Update the model
- ModelDelta delta = model.removeElementChild(TreePath.EMPTY, 0);
+ // Update the model
+ ModelDelta delta = model.removeElementChild(TreePath.EMPTY, 0);
- // Remove delta should not generate any new updates
- fListener.reset();
- model.postDelta(delta);
+ // Remove delta should not generate any new updates
+ fListener.reset();
+ model.postDelta(delta);
waitWhile(t -> !fListener.isFinished(MODEL_CHANGED_COMPLETE), createListenerErrorMessage());
- // Validate data
- model.validateData(fViewer, TreePath.EMPTY, true);
+ // Validate data
+ model.validateData(fViewer, TreePath.EMPTY, true);
assertTrue(getInternalViewer().getExpandedState(model.findElement("2")) == false); //$NON-NLS-1$
assertTrue(getInternalViewer().getExpandedState(model.findElement("3")) == true); //$NON-NLS-1$
assertTrue(getInternalViewer().getExpandedState(model.findElement("3.1")) == true); //$NON-NLS-1$
@@ -244,42 +244,42 @@ abstract public class StateTests extends AbstractViewerModelTest implements ITes
assertTrue(getInternalViewer().getExpandedState(model.findElement("5")) == true); //$NON-NLS-1$
assertTrue(getInternalViewer().getExpandedState(model.findElement("5.1")) == true); //$NON-NLS-1$
assertTrue(getInternalViewer().getExpandedState(model.findElement("6")) == false); //$NON-NLS-1$
- assertTrue( areTreeSelectionsEqual(originalSelection, (ITreeSelection)fViewer.getSelection()) );
- }
+ assertTrue( areTreeSelectionsEqual(originalSelection, (ITreeSelection)fViewer.getSelection()) );
+ }
public void testPreserveExpandedOnInsert() throws Exception {
- //TreeModelViewerAutopopulateAgent autopopulateAgent = new TreeModelViewerAutopopulateAgent(fViewer);
- TestModel model = alternatingSubsreesModel(6);
+ //TreeModelViewerAutopopulateAgent autopopulateAgent = new TreeModelViewerAutopopulateAgent(fViewer);
+ TestModel model = alternatingSubsreesModel(6);
- // NOTE: WE ARE NOT EXPANDING ANY CHILDREN
+ // NOTE: WE ARE NOT EXPANDING ANY CHILDREN
- // Create the listener, only check the first level
- fListener.reset(TreePath.EMPTY, model.getRootElement(), 1, true, false);
+ // Create the listener, only check the first level
+ fListener.reset(TreePath.EMPTY, model.getRootElement(), 1, true, false);
- // Set the input into the view and update the view.
- fViewer.setInput(model.getRootElement());
+ // Set the input into the view and update the view.
+ fViewer.setInput(model.getRootElement());
waitWhile(t -> !fListener.isFinished(), createListenerErrorMessage());
- model.validateData(fViewer, TreePath.EMPTY, true);
+ model.validateData(fViewer, TreePath.EMPTY, true);
- expandAlternateElements(fListener, model, true);
+ expandAlternateElements(fListener, model, true);
- // Set a selection in view
+ // Set a selection in view
TreeSelection originalSelection = new TreeSelection(model.findElement("5.1")); //$NON-NLS-1$
- fViewer.setSelection(originalSelection);
+ fViewer.setSelection(originalSelection);
- // Update the model
+ // Update the model
ModelDelta delta = model.insertElementChild(TreePath.EMPTY, 0, new TestElement(model, "0 - new", new TestElement[0])); //$NON-NLS-1$
- // Insert delta should generate updates only for the new element
+ // Insert delta should generate updates only for the new element
TreePath path = model.findElement("0 - new"); //$NON-NLS-1$
- // Note: redundant label updates on insert.
- fListener.reset(path, (TestElement)path.getLastSegment(), 0, false, false);
- fListener.addChildreUpdate(TreePath.EMPTY, 0);
- model.postDelta(delta);
+ // Note: redundant label updates on insert.
+ fListener.reset(path, (TestElement)path.getLastSegment(), 0, false, false);
+ fListener.addChildreUpdate(TreePath.EMPTY, 0);
+ model.postDelta(delta);
waitWhile(t -> !fListener.isFinished(MODEL_CHANGED_COMPLETE | ALL_UPDATES_COMPLETE), createListenerErrorMessage());
- // Validate data
- model.validateData(fViewer, TreePath.EMPTY, true);
+ // Validate data
+ model.validateData(fViewer, TreePath.EMPTY, true);
assertTrue(getInternalViewer().getExpandedState(model.findElement("1")) == true); //$NON-NLS-1$
assertTrue(getInternalViewer().getExpandedState(model.findElement("1.1")) == true); //$NON-NLS-1$
assertTrue(getInternalViewer().getExpandedState(model.findElement("2")) == false); //$NON-NLS-1$
@@ -289,50 +289,50 @@ abstract public class StateTests extends AbstractViewerModelTest implements ITes
assertTrue(getInternalViewer().getExpandedState(model.findElement("5")) == true); //$NON-NLS-1$
assertTrue(getInternalViewer().getExpandedState(model.findElement("5.1")) == true); //$NON-NLS-1$
assertTrue(getInternalViewer().getExpandedState(model.findElement("6")) == false); //$NON-NLS-1$
- assertTrue( areTreeSelectionsEqual(originalSelection, (ITreeSelection)fViewer.getSelection()) );
- }
+ assertTrue( areTreeSelectionsEqual(originalSelection, (ITreeSelection)fViewer.getSelection()) );
+ }
public void testPreserveExpandedOnMultLevelContent() throws Exception {
- //TreeModelViewerAutopopulateAgent autopopulateAgent = new TreeModelViewerAutopopulateAgent(fViewer);
- TestModel model = alternatingSubsreesModel(6);
+ //TreeModelViewerAutopopulateAgent autopopulateAgent = new TreeModelViewerAutopopulateAgent(fViewer);
+ TestModel model = alternatingSubsreesModel(6);
- // NOTE: WE ARE NOT EXPANDING ANY CHILDREN
+ // NOTE: WE ARE NOT EXPANDING ANY CHILDREN
- // Create the listener, only check the first level
- fListener.reset(TreePath.EMPTY, model.getRootElement(), 1, true, false);
+ // Create the listener, only check the first level
+ fListener.reset(TreePath.EMPTY, model.getRootElement(), 1, true, false);
- // Set the input into the view and update the view.
- fViewer.setInput(model.getRootElement());
+ // Set the input into the view and update the view.
+ fViewer.setInput(model.getRootElement());
waitWhile(t -> !fListener.isFinished(), createListenerErrorMessage());
- model.validateData(fViewer, TreePath.EMPTY, true);
+ model.validateData(fViewer, TreePath.EMPTY, true);
- expandAlternateElements(fListener, model, true);
+ expandAlternateElements(fListener, model, true);
- // Set a selection in view
- // Set a selection in view
- TreeSelection originalSelection = new TreeSelection(
+ // Set a selection in view
+ // Set a selection in view
+ TreeSelection originalSelection = new TreeSelection(
new TreePath[] { model.findElement("5"), model.findElement("5.1"), model.findElement("6") }); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- fViewer.setSelection(originalSelection);
- assertTrue( areTreeSelectionsEqual(originalSelection, (ITreeSelection)fViewer.getSelection()) );
+ fViewer.setSelection(originalSelection);
+ assertTrue( areTreeSelectionsEqual(originalSelection, (ITreeSelection)fViewer.getSelection()) );
- // Update the model
- model.removeElementChild(TreePath.EMPTY, 0);
+ // Update the model
+ model.removeElementChild(TreePath.EMPTY, 0);
- // Note: Re-expanding nodes causes redundant updates.
- fListener.reset(false, false);
- fListener.addUpdates(getInternalViewer(), TreePath.EMPTY, model.getRootElement(), -1, ALL_UPDATES_COMPLETE);
+ // Note: Re-expanding nodes causes redundant updates.
+ fListener.reset(false, false);
+ fListener.addUpdates(getInternalViewer(), TreePath.EMPTY, model.getRootElement(), -1, ALL_UPDATES_COMPLETE);
- // Create the delta which has nodes with CONTENT flag set at multiple levels.
- ModelDelta rootDelta = new ModelDelta(model.getRootElement(), IModelDelta.CONTENT);
+ // Create the delta which has nodes with CONTENT flag set at multiple levels.
+ ModelDelta rootDelta = new ModelDelta(model.getRootElement(), IModelDelta.CONTENT);
ModelDelta elementDelta = model.getElementDelta(rootDelta, model.findElement("3.1.1"), true); //$NON-NLS-1$
- elementDelta.setFlags(IModelDelta.CONTENT);
+ elementDelta.setFlags(IModelDelta.CONTENT);
- // Post the multi-content update delta
- model.postDelta(rootDelta);
+ // Post the multi-content update delta
+ model.postDelta(rootDelta);
waitWhile(t -> !fListener.isFinished(ALL_UPDATES_COMPLETE | STATE_RESTORE_COMPLETE), createListenerErrorMessage());
- // Validate data
- model.validateData(fViewer, TreePath.EMPTY, true);
+ // Validate data
+ model.validateData(fViewer, TreePath.EMPTY, true);
assertTrue(getInternalViewer().getExpandedState(model.findElement("2")) == false); //$NON-NLS-1$
assertTrue(getInternalViewer().getExpandedState(model.findElement("3")) == true); //$NON-NLS-1$
assertTrue(getInternalViewer().getExpandedState(model.findElement("3.1")) == true); //$NON-NLS-1$
@@ -340,101 +340,101 @@ new TreePath[] { model.findElement("5"), model.findElement("5.1"), model.findEle
assertTrue(getInternalViewer().getExpandedState(model.findElement("5")) == true); //$NON-NLS-1$
assertTrue(getInternalViewer().getExpandedState(model.findElement("5.1")) == true); //$NON-NLS-1$
assertTrue(getInternalViewer().getExpandedState(model.findElement("6")) == false); //$NON-NLS-1$
- assertTrue( areTreeSelectionsEqual(originalSelection, (ITreeSelection)fViewer.getSelection()) );
+ assertTrue( areTreeSelectionsEqual(originalSelection, (ITreeSelection)fViewer.getSelection()) );
- // Note: in past it was observed sub-optimal coalescing in this test due
- // to scattered update requests from viewer.
- assertTrue( fListener.checkCoalesced(TreePath.EMPTY, 0, 5) );
- }
+ // Note: in past it was observed sub-optimal coalescing in this test due
+ // to scattered update requests from viewer.
+ assertTrue( fListener.checkCoalesced(TreePath.EMPTY, 0, 5) );
+ }
public void testPreserveExpandedOnSubTreeContent() throws Exception {
- //TreeModelViewerAutopopulateAgent autopopulateAgent = new TreeModelViewerAutopopulateAgent(fViewer);
- TestModel model = TestModel.simpleMultiLevel();
+ //TreeModelViewerAutopopulateAgent autopopulateAgent = new TreeModelViewerAutopopulateAgent(fViewer);
+ TestModel model = TestModel.simpleMultiLevel();
- // Expand all
- fViewer.setAutoExpandLevel(-1);
+ // Expand all
+ fViewer.setAutoExpandLevel(-1);
- // Create the listener,
- fListener.reset(TreePath.EMPTY, model.getRootElement(), -1, true, false);
+ // Create the listener,
+ fListener.reset(TreePath.EMPTY, model.getRootElement(), -1, true, false);
- // Set the input into the view and update the view.
- fViewer.setInput(model.getRootElement());
+ // Set the input into the view and update the view.
+ fViewer.setInput(model.getRootElement());
waitWhile(t -> !fListener.isFinished(), createListenerErrorMessage());
- model.validateData(fViewer, TreePath.EMPTY, true);
+ model.validateData(fViewer, TreePath.EMPTY, true);
- // Turn off auto-expansion
- fViewer.setAutoExpandLevel(0);
+ // Turn off auto-expansion
+ fViewer.setAutoExpandLevel(0);
- // Set a selection in view
+ // Set a selection in view
TreeSelection originalSelection = new TreeSelection(model.findElement("3.3.1")); //$NON-NLS-1$
- fViewer.setSelection(originalSelection);
+ fViewer.setSelection(originalSelection);
- // Update the model
+ // Update the model
model.addElementChild(model.findElement("3"), null, 0, new TestElement(model, "3.0 - new", new TestElement[0])); //$NON-NLS-1$ //$NON-NLS-2$
- // Create the delta for element "3" with content update.
+ // Create the delta for element "3" with content update.
TreePath elementPath = model.findElement("3"); //$NON-NLS-1$
- ModelDelta rootDelta = new ModelDelta(model.getRootElement(), IModelDelta.NO_CHANGE);
- ModelDelta elementDelta = model.getElementDelta(rootDelta, elementPath, true);
- elementDelta.setFlags(IModelDelta.CONTENT);
+ ModelDelta rootDelta = new ModelDelta(model.getRootElement(), IModelDelta.NO_CHANGE);
+ ModelDelta elementDelta = model.getElementDelta(rootDelta, elementPath, true);
+ elementDelta.setFlags(IModelDelta.CONTENT);
- // Note: Re-expanding nodes causes redundant updates.
- fListener.reset(false, false);
- fListener.addUpdates(getInternalViewer(), elementPath, model.getElement(elementPath), -1, ALL_UPDATES_COMPLETE);
+ // Note: Re-expanding nodes causes redundant updates.
+ fListener.reset(false, false);
+ fListener.addUpdates(getInternalViewer(), elementPath, model.getElement(elementPath), -1, ALL_UPDATES_COMPLETE);
- // Post the sub-tree update
- model.postDelta(rootDelta);
+ // Post the sub-tree update
+ model.postDelta(rootDelta);
waitWhile(t -> !fListener.isFinished(ALL_UPDATES_COMPLETE | STATE_RESTORE_COMPLETE), createListenerErrorMessage());
- // Validate data
- model.validateData(fViewer, TreePath.EMPTY, true);
+ // Validate data
+ model.validateData(fViewer, TreePath.EMPTY, true);
assertTrue(getInternalViewer().getExpandedState(model.findElement("3")) == true); //$NON-NLS-1$
- // On windows, getExpandedState() may return true for an element with no children:
- // assertTrue(getCTargetViewer().getExpandedState(model.findElement("3.0 - new")) == false);
+ // On windows, getExpandedState() may return true for an element with no children:
+ // assertTrue(getCTargetViewer().getExpandedState(model.findElement("3.0 - new")) == false);
assertTrue(getInternalViewer().getExpandedState(model.findElement("3.1")) == true); //$NON-NLS-1$
assertTrue(getInternalViewer().getExpandedState(model.findElement("3.2")) == true); //$NON-NLS-1$
assertTrue(getInternalViewer().getExpandedState(model.findElement("3.3")) == true); //$NON-NLS-1$
- assertTrue( areTreeSelectionsEqual(originalSelection, (ITreeSelection)fViewer.getSelection()) );
- }
+ assertTrue( areTreeSelectionsEqual(originalSelection, (ITreeSelection)fViewer.getSelection()) );
+ }
public void testPreserveExpandedOnContentStress() throws Exception {
- //TreeModelViewerAutopopulateAgent autopopulateAgent = new TreeModelViewerAutopopulateAgent(fViewer);
- TestModel model = alternatingSubsreesModel(6);
+ //TreeModelViewerAutopopulateAgent autopopulateAgent = new TreeModelViewerAutopopulateAgent(fViewer);
+ TestModel model = alternatingSubsreesModel(6);
- // NOTE: WE ARE NOT EXPANDING ANY CHILDREN
+ // NOTE: WE ARE NOT EXPANDING ANY CHILDREN
- // Create the listener, only check the first level
- fListener.reset(TreePath.EMPTY, model.getRootElement(), 1, true, false);
+ // Create the listener, only check the first level
+ fListener.reset(TreePath.EMPTY, model.getRootElement(), 1, true, false);
- // Set the input into the view and update the view.
- fViewer.setInput(model.getRootElement());
+ // Set the input into the view and update the view.
+ fViewer.setInput(model.getRootElement());
waitWhile(t -> !fListener.isFinished(), createListenerErrorMessage());
- model.validateData(fViewer, TreePath.EMPTY, true);
+ model.validateData(fViewer, TreePath.EMPTY, true);
- expandAlternateElements(fListener, model, true);
+ expandAlternateElements(fListener, model, true);
- // Set a selection in view
+ // Set a selection in view
// TreeSelection originalSelection = new TreeSelection(
// new TreePath[] { model.findElement("5"), model.findElement("5.1"), model.findElement("6") });
TreeSelection originalSelection = new TreeSelection(model.findElement("5.1.1")); //$NON-NLS-1$
- fViewer.setSelection(originalSelection);
- assertTrue( areTreeSelectionsEqual(originalSelection, (ITreeSelection)fViewer.getSelection()) );
-
- // Run this test ten times as we've seen intermittent failures related
- // to timing in it.
- for (int i = 0; i < 10; i++) {
- // Update the model
- model.removeElementChild(TreePath.EMPTY, 0);
-
- // Note: Re-expanding nodes causes redundant updates.
- fListener.reset(false, false);
- fListener.addUpdates(getInternalViewer(), TreePath.EMPTY, model.getRootElement(), -1, ALL_UPDATES_COMPLETE);
- model.postDelta(new ModelDelta(model.getRootElement(), IModelDelta.CONTENT));
+ fViewer.setSelection(originalSelection);
+ assertTrue( areTreeSelectionsEqual(originalSelection, (ITreeSelection)fViewer.getSelection()) );
+
+ // Run this test ten times as we've seen intermittent failures related
+ // to timing in it.
+ for (int i = 0; i < 10; i++) {
+ // Update the model
+ model.removeElementChild(TreePath.EMPTY, 0);
+
+ // Note: Re-expanding nodes causes redundant updates.
+ fListener.reset(false, false);
+ fListener.addUpdates(getInternalViewer(), TreePath.EMPTY, model.getRootElement(), -1, ALL_UPDATES_COMPLETE);
+ model.postDelta(new ModelDelta(model.getRootElement(), IModelDelta.CONTENT));
waitWhile(t -> !fListener.isFinished(ALL_UPDATES_COMPLETE | STATE_RESTORE_COMPLETE), createListenerErrorMessage());
- // Validate data
- model.validateData(fViewer, TreePath.EMPTY, true);
+ // Validate data
+ model.validateData(fViewer, TreePath.EMPTY, true);
assertTrue(getInternalViewer().getExpandedState(model.findElement("2")) == false); //$NON-NLS-1$
assertTrue(getInternalViewer().getExpandedState(model.findElement("3")) == true); //$NON-NLS-1$
assertTrue(getInternalViewer().getExpandedState(model.findElement("3.1")) == true); //$NON-NLS-1$
@@ -442,19 +442,19 @@ new TreePath[] { model.findElement("5"), model.findElement("5.1"), model.findEle
assertTrue(getInternalViewer().getExpandedState(model.findElement("5")) == true); //$NON-NLS-1$
assertTrue(getInternalViewer().getExpandedState(model.findElement("5.1")) == true); //$NON-NLS-1$
assertTrue(getInternalViewer().getExpandedState(model.findElement("6")) == false); //$NON-NLS-1$
- assertTrue( areTreeSelectionsEqual(originalSelection, (ITreeSelection)fViewer.getSelection()) );
+ assertTrue( areTreeSelectionsEqual(originalSelection, (ITreeSelection)fViewer.getSelection()) );
- // Update the model again
+ // Update the model again
model.addElementChild(TreePath.EMPTY, null, 0, new TestElement(model, "1", new TestElement[0])); //$NON-NLS-1$
- // Note: Re-expanding nodes causes redundant updates.
- fListener.reset(false, false);
- fListener.addUpdates(getInternalViewer(), TreePath.EMPTY, model.getRootElement(), -1, ALL_UPDATES_COMPLETE);
- model.postDelta(new ModelDelta(model.getRootElement(), IModelDelta.CONTENT));
+ // Note: Re-expanding nodes causes redundant updates.
+ fListener.reset(false, false);
+ fListener.addUpdates(getInternalViewer(), TreePath.EMPTY, model.getRootElement(), -1, ALL_UPDATES_COMPLETE);
+ model.postDelta(new ModelDelta(model.getRootElement(), IModelDelta.CONTENT));
waitWhile(t -> !fListener.isFinished(ALL_UPDATES_COMPLETE | STATE_RESTORE_COMPLETE), createListenerErrorMessage());
- // Validate data
- model.validateData(fViewer, TreePath.EMPTY, true);
+ // Validate data
+ model.validateData(fViewer, TreePath.EMPTY, true);
assertTrue(getInternalViewer().getExpandedState(model.findElement("2")) == false); //$NON-NLS-1$
assertTrue(getInternalViewer().getExpandedState(model.findElement("3")) == true); //$NON-NLS-1$
assertTrue(getInternalViewer().getExpandedState(model.findElement("3.1")) == true); //$NON-NLS-1$
@@ -462,40 +462,40 @@ new TreePath[] { model.findElement("5"), model.findElement("5.1"), model.findEle
assertTrue(getInternalViewer().getExpandedState(model.findElement("5")) == true); //$NON-NLS-1$
assertTrue(getInternalViewer().getExpandedState(model.findElement("5.1")) == true); //$NON-NLS-1$
assertTrue(getInternalViewer().getExpandedState(model.findElement("6")) == false); //$NON-NLS-1$
- assertTrue( areTreeSelectionsEqual(originalSelection, (ITreeSelection)fViewer.getSelection()) );
- }
- }
+ assertTrue( areTreeSelectionsEqual(originalSelection, (ITreeSelection)fViewer.getSelection()) );
+ }
+ }
public void testPreserveLargeModelOnContent() throws Exception {
- //TreeModelViewerAutopopulateAgent autopopulateAgent = new TreeModelViewerAutopopulateAgent(fViewer);
- TestModel model = alternatingSubsreesModel(100);
+ //TreeModelViewerAutopopulateAgent autopopulateAgent = new TreeModelViewerAutopopulateAgent(fViewer);
+ TestModel model = alternatingSubsreesModel(100);
- // NOTE: WE ARE NOT EXPANDING ANY CHILDREN
+ // NOTE: WE ARE NOT EXPANDING ANY CHILDREN
- // Create the listener, only check the first level
- fListener.reset();
+ // Create the listener, only check the first level
+ fListener.reset();
- // Set the input into the view and update the view.
- fViewer.setInput(model.getRootElement());
+ // Set the input into the view and update the view.
+ fViewer.setInput(model.getRootElement());
TestUtil.waitForJobs(getName(), 300, 5000);
waitWhile(t -> !fListener.isFinished(CONTENT_SEQUENCE_COMPLETE), createListenerErrorMessage());
- expandAlternateElements(fListener, model, false);
+ expandAlternateElements(fListener, model, false);
- // Set a selection in view
+ // Set a selection in view
TreeSelection originalSelection = new TreeSelection(model.findElement("5.1.1")); //$NON-NLS-1$
- fViewer.setSelection(originalSelection);
- assertTrue( areTreeSelectionsEqual(originalSelection, (ITreeSelection)fViewer.getSelection()) );
+ fViewer.setSelection(originalSelection);
+ assertTrue( areTreeSelectionsEqual(originalSelection, (ITreeSelection)fViewer.getSelection()) );
- // Update the model
- model.removeElementChild(TreePath.EMPTY, 0);
+ // Update the model
+ model.removeElementChild(TreePath.EMPTY, 0);
- // Note: Re-expanding nodes causes redundant updates.
- fListener.reset(false, false);
- model.postDelta(new ModelDelta(model.getRootElement(), IModelDelta.CONTENT));
+ // Note: Re-expanding nodes causes redundant updates.
+ fListener.reset(false, false);
+ model.postDelta(new ModelDelta(model.getRootElement(), IModelDelta.CONTENT));
waitWhile(t -> !fListener.isFinished(CONTENT_SEQUENCE_COMPLETE), createListenerErrorMessage());
- // Validate data
+ // Validate data
assertTrue(getInternalViewer().getExpandedState(model.findElement("2")) == false); //$NON-NLS-1$
assertTrue(getInternalViewer().getExpandedState(model.findElement("3")) == true); //$NON-NLS-1$
assertTrue(getInternalViewer().getExpandedState(model.findElement("3.1")) == true); //$NON-NLS-1$
@@ -503,17 +503,17 @@ new TreePath[] { model.findElement("5"), model.findElement("5.1"), model.findEle
assertTrue(getInternalViewer().getExpandedState(model.findElement("5")) == true); //$NON-NLS-1$
assertTrue(getInternalViewer().getExpandedState(model.findElement("5.1")) == true); //$NON-NLS-1$
assertTrue(getInternalViewer().getExpandedState(model.findElement("6")) == false); //$NON-NLS-1$
- assertTrue( areTreeSelectionsEqual(originalSelection, (ITreeSelection)fViewer.getSelection()) );
+ assertTrue( areTreeSelectionsEqual(originalSelection, (ITreeSelection)fViewer.getSelection()) );
- // Update the model again
+ // Update the model again
model.addElementChild(TreePath.EMPTY, null, 0, new TestElement(model, "1", new TestElement[0])); //$NON-NLS-1$
- // Note: Re-expanding nodes causes redundant updates.
- fListener.reset(false, false);
- model.postDelta(new ModelDelta(model.getRootElement(), IModelDelta.CONTENT));
+ // Note: Re-expanding nodes causes redundant updates.
+ fListener.reset(false, false);
+ model.postDelta(new ModelDelta(model.getRootElement(), IModelDelta.CONTENT));
waitWhile(t -> !fListener.isFinished(CONTENT_SEQUENCE_COMPLETE), createListenerErrorMessage());
- // Validate data
+ // Validate data
assertTrue(getInternalViewer().getExpandedState(model.findElement("2")) == false); //$NON-NLS-1$
assertTrue(getInternalViewer().getExpandedState(model.findElement("3")) == true); //$NON-NLS-1$
assertTrue(getInternalViewer().getExpandedState(model.findElement("3.1")) == true); //$NON-NLS-1$
@@ -521,88 +521,88 @@ new TreePath[] { model.findElement("5"), model.findElement("5.1"), model.findEle
assertTrue(getInternalViewer().getExpandedState(model.findElement("5")) == true); //$NON-NLS-1$
assertTrue(getInternalViewer().getExpandedState(model.findElement("5.1")) == true); //$NON-NLS-1$
assertTrue(getInternalViewer().getExpandedState(model.findElement("6")) == false); //$NON-NLS-1$
- assertTrue( areTreeSelectionsEqual(originalSelection, (ITreeSelection)fViewer.getSelection()) );
- }
-
- /**
- * This test verifies that if the model selects a new element
- * following a content refresh, the state restore logic will
- * not override the selection requested by the model.
- */
+ assertTrue( areTreeSelectionsEqual(originalSelection, (ITreeSelection)fViewer.getSelection()) );
+ }
+
+ /**
+ * This test verifies that if the model selects a new element
+ * following a content refresh, the state restore logic will
+ * not override the selection requested by the model.
+ */
public void testPreserveSelectionDeltaAfterContent() throws Exception {
- //TreeModelViewerAutopopulateAgent autopopulateAgent = new TreeModelViewerAutopopulateAgent(fViewer);
- TestModel model = TestModel.simpleMultiLevel();
+ //TreeModelViewerAutopopulateAgent autopopulateAgent = new TreeModelViewerAutopopulateAgent(fViewer);
+ TestModel model = TestModel.simpleMultiLevel();
- // Expand all
- fViewer.setAutoExpandLevel(-1);
+ // Expand all
+ fViewer.setAutoExpandLevel(-1);
- // Create the listener.
- fListener.reset(TreePath.EMPTY, model.getRootElement(), -1, true, false);
+ // Create the listener.
+ fListener.reset(TreePath.EMPTY, model.getRootElement(), -1, true, false);
- // Set the input into the view and update the view.
- fViewer.setInput(model.getRootElement());
+ // Set the input into the view and update the view.
+ fViewer.setInput(model.getRootElement());
waitWhile(t -> !fListener.isFinished(), createListenerErrorMessage());
- model.validateData(fViewer, TreePath.EMPTY, true);
+ model.validateData(fViewer, TreePath.EMPTY, true);
- // Set a selection in view
+ // Set a selection in view
fViewer.setSelection(new TreeSelection(model.findElement("3.1.1"))); //$NON-NLS-1$
- // Reset the listener (ignore redundant updates)
- fListener.reset(TreePath.EMPTY, model.getRootElement(), -1, false, false);
+ // Reset the listener (ignore redundant updates)
+ fListener.reset(TreePath.EMPTY, model.getRootElement(), -1, false, false);
- // Refresh content.
- // Note: Wait only for the processing of the delta, not for all updates
- model.postDelta(new ModelDelta(model.getRootElement(), IModelDelta.CONTENT));
+ // Refresh content.
+ // Note: Wait only for the processing of the delta, not for all updates
+ model.postDelta(new ModelDelta(model.getRootElement(), IModelDelta.CONTENT));
waitWhile(t -> !fListener.isFinished(MODEL_CHANGED_COMPLETE), createListenerErrorMessage());
- // Update the viewer with new selection delta to something new in the view
+ // Update the viewer with new selection delta to something new in the view
ModelDelta selectDelta = model.makeElementDelta(model.findElement("2.1"), IModelDelta.SELECT); //$NON-NLS-1$
- // Wait for the second model delta to process
- fListener.resetModelChanged();
- model.postDelta(selectDelta);
+ // Wait for the second model delta to process
+ fListener.resetModelChanged();
+ model.postDelta(selectDelta);
waitWhile(t -> !fListener.isFinished(MODEL_CHANGED_COMPLETE), createListenerErrorMessage());
- // Wait for all the updates to complete (note: we're not resetting the listener.
- model.postDelta(new ModelDelta(model.getRootElement(), IModelDelta.CONTENT));
+ // Wait for all the updates to complete (note: we're not resetting the listener.
+ model.postDelta(new ModelDelta(model.getRootElement(), IModelDelta.CONTENT));
waitWhile(t -> !fListener.isFinished(ALL_UPDATES_COMPLETE | STATE_RESTORE_COMPLETE), createListenerErrorMessage());
- // Check to make sure that the state restore didn't change the selection.
+ // Check to make sure that the state restore didn't change the selection.
assertEquals(new TreeSelection(model.findElement("2.1")), fViewer.getSelection()); //$NON-NLS-1$
- }
+ }
public void testPreserveCollapseDeltaAfterContent() throws Exception {
- //TreeModelViewerAutopopulateAgent autopopulateAgent = new TreeModelViewerAutopopulateAgent(fViewer);
- TestModel model = TestModel.simpleMultiLevel();
+ //TreeModelViewerAutopopulateAgent autopopulateAgent = new TreeModelViewerAutopopulateAgent(fViewer);
+ TestModel model = TestModel.simpleMultiLevel();
- // Expand all
- fViewer.setAutoExpandLevel(-1);
+ // Expand all
+ fViewer.setAutoExpandLevel(-1);
- // Create the listener.
- fListener.reset(TreePath.EMPTY, model.getRootElement(), -1, true, false);
+ // Create the listener.
+ fListener.reset(TreePath.EMPTY, model.getRootElement(), -1, true, false);
- // Set the input into the view and update the view.
- fViewer.setInput(model.getRootElement());
+ // Set the input into the view and update the view.
+ fViewer.setInput(model.getRootElement());
waitWhile(t -> !fListener.isFinished(), createListenerErrorMessage());
- model.validateData(fViewer, TreePath.EMPTY, true);
+ model.validateData(fViewer, TreePath.EMPTY, true);
- // Turn off auto-expand
- fViewer.setAutoExpandLevel(0);
+ // Turn off auto-expand
+ fViewer.setAutoExpandLevel(0);
- // Reset the listener (ignore redundant updates)
- fListener.reset(TreePath.EMPTY, model.getRootElement(), -1, false, false);
+ // Reset the listener (ignore redundant updates)
+ fListener.reset(TreePath.EMPTY, model.getRootElement(), -1, false, false);
- // Refresh content.
- // Note: Wait only for the processing of the delta, not for all updates
- model.postDelta(new ModelDelta(model.getRootElement(), IModelDelta.CONTENT));
+ // Refresh content.
+ // Note: Wait only for the processing of the delta, not for all updates
+ model.postDelta(new ModelDelta(model.getRootElement(), IModelDelta.CONTENT));
waitWhile(t -> !fListener.isFinished(MODEL_CHANGED_COMPLETE), createListenerErrorMessage());
- // Update the viewer to collapse an element
+ // Update the viewer to collapse an element
ModelDelta collapseDelta = model.makeElementDelta(model.findElement("3.1"), IModelDelta.COLLAPSE); //$NON-NLS-1$
- // Remove updates for the collapsed element from listener, because they
- // will never happen if the element remains collapsed.
- fListener.resetModelChanged();
+ // Remove updates for the collapsed element from listener, because they
+ // will never happen if the element remains collapsed.
+ fListener.resetModelChanged();
fListener.removeLabelUpdate(model.findElement("3.1.1")); //$NON-NLS-1$
fListener.removeLabelUpdate(model.findElement("3.1.2")); //$NON-NLS-1$
fListener.removeLabelUpdate(model.findElement("3.1.3")); //$NON-NLS-1$
@@ -614,284 +614,284 @@ new TreePath[] { model.findElement("5"), model.findElement("5.1"), model.findEle
fListener.removeChildrenUpdate(model.findElement("3.1"), 1); //$NON-NLS-1$
fListener.removeChildrenUpdate(model.findElement("3.1"), 2); //$NON-NLS-1$
- // Wait for the second model delta to process
- model.postDelta(collapseDelta);
+ // Wait for the second model delta to process
+ model.postDelta(collapseDelta);
waitWhile(t -> !fListener.isFinished(MODEL_CHANGED_COMPLETE), createListenerErrorMessage());
- // Wait for all the updates to complete (note: we're not resetting the listener.
- model.postDelta(new ModelDelta(model.getRootElement(), IModelDelta.CONTENT));
+ // Wait for all the updates to complete (note: we're not resetting the listener.
+ model.postDelta(new ModelDelta(model.getRootElement(), IModelDelta.CONTENT));
waitWhile(t -> !fListener.isFinished(ALL_UPDATES_COMPLETE | STATE_RESTORE_COMPLETE), createListenerErrorMessage());
- // Check to make sure that the state restore didn't change the selection.
+ // Check to make sure that the state restore didn't change the selection.
assertTrue(getInternalViewer().getExpandedState(model.findElement("3.1")) == false); //$NON-NLS-1$
- }
+ }
public void testPreserveExpandDeltaAfterContent() throws Exception {
- //TreeModelViewerAutopopulateAgent autopopulateAgent = new TreeModelViewerAutopopulateAgent(fViewer);
- TestModel model = TestModel.simpleMultiLevel();
+ //TreeModelViewerAutopopulateAgent autopopulateAgent = new TreeModelViewerAutopopulateAgent(fViewer);
+ TestModel model = TestModel.simpleMultiLevel();
- // Note: Do not auto-expand!
+ // Note: Do not auto-expand!
- // Create the listener.
- fListener.reset(TreePath.EMPTY, model.getRootElement(), 1, true, false);
+ // Create the listener.
+ fListener.reset(TreePath.EMPTY, model.getRootElement(), 1, true, false);
- // Set the input into the view and update the view.
- fViewer.setInput(model.getRootElement());
+ // Set the input into the view and update the view.
+ fViewer.setInput(model.getRootElement());
waitWhile(t -> !fListener.isFinished(), createListenerErrorMessage());
- model.validateData(fViewer, TreePath.EMPTY, true);
+ model.validateData(fViewer, TreePath.EMPTY, true);
- // Reset the listener (ignore redundant updates)
- fListener.reset(TreePath.EMPTY, model.getRootElement(), 1, false, false);
+ // Reset the listener (ignore redundant updates)
+ fListener.reset(TreePath.EMPTY, model.getRootElement(), 1, false, false);
- // Refresh content.
- // Note: Wait only for the processing of the delta, not for all updates
- model.postDelta(new ModelDelta(model.getRootElement(), IModelDelta.CONTENT));
+ // Refresh content.
+ // Note: Wait only for the processing of the delta, not for all updates
+ model.postDelta(new ModelDelta(model.getRootElement(), IModelDelta.CONTENT));
waitWhile(t -> !fListener.isFinished(MODEL_CHANGED_COMPLETE), createListenerErrorMessage());
- // Update the viewer to expand an element
+ // Update the viewer to expand an element
ModelDelta expandDelta = model.makeElementDelta(model.findElement("3.1"), IModelDelta.EXPAND); //$NON-NLS-1$
- // Wait for the second model delta to process
- fListener.resetModelChanged();
- model.postDelta(expandDelta);
+ // Wait for the second model delta to process
+ fListener.resetModelChanged();
+ model.postDelta(expandDelta);
waitWhile(t -> !fListener.isFinished(MODEL_CHANGED_COMPLETE), createListenerErrorMessage());
- // Wait for all the updates to complete (note: we're not resetting the listener.
- model.postDelta(new ModelDelta(model.getRootElement(), IModelDelta.CONTENT));
+ // Wait for all the updates to complete (note: we're not resetting the listener.
+ model.postDelta(new ModelDelta(model.getRootElement(), IModelDelta.CONTENT));
waitWhile(t -> !fListener.isFinished(ALL_UPDATES_COMPLETE | STATE_RESTORE_COMPLETE), createListenerErrorMessage());
- // Check to make sure that the state restore didn't change the selection.
+ // Check to make sure that the state restore didn't change the selection.
assertTrue(getInternalViewer().getExpandedState(model.findElement("3.1")) == true); //$NON-NLS-1$
- }
+ }
public void testSaveAndRestore1() throws Exception {
- //TreeModelViewerAutopopulateAgent autopopulateAgent = new TreeModelViewerAutopopulateAgent(fViewer);
- TestModel model = alternatingSubsreesModel(6);
+ //TreeModelViewerAutopopulateAgent autopopulateAgent = new TreeModelViewerAutopopulateAgent(fViewer);
+ TestModel model = alternatingSubsreesModel(6);
- // NOTE: WE ARE NOT EXPANDING ANY CHILDREN
+ // NOTE: WE ARE NOT EXPANDING ANY CHILDREN
- // Create the listener, only check the first level
- fListener.reset(TreePath.EMPTY, model.getRootElement(), 1, true, false);
+ // Create the listener, only check the first level
+ fListener.reset(TreePath.EMPTY, model.getRootElement(), 1, true, false);
- // Set the input into the view and update the view.
- fViewer.setInput(model.getRootElement());
+ // Set the input into the view and update the view.
+ fViewer.setInput(model.getRootElement());
waitWhile(t -> !fListener.isFinished(), createListenerErrorMessage());
- model.validateData(fViewer, TreePath.EMPTY, true);
+ model.validateData(fViewer, TreePath.EMPTY, true);
- // Expand some, but not all elements
- expandAlternateElements(fListener, model, true);
+ // Expand some, but not all elements
+ expandAlternateElements(fListener, model, true);
- // Set a selection in view
+ // Set a selection in view
fViewer.setSelection(new TreeSelection(new TreePath[] { model.findElement("5.1"), model.findElement("5.1.1"), model.findElement("6.1.1") })); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- // Extract the original state from viewer
- ModelDelta originalState = new ModelDelta(model.getRootElement(), IModelDelta.NO_CHANGE);
- fViewer.saveElementState(TreePath.EMPTY, originalState, IModelDelta.EXPAND | IModelDelta.SELECT);
+ // Extract the original state from viewer
+ ModelDelta originalState = new ModelDelta(model.getRootElement(), IModelDelta.NO_CHANGE);
+ fViewer.saveElementState(TreePath.EMPTY, originalState, IModelDelta.EXPAND | IModelDelta.SELECT);
- // Set the viewer input to null. This will trigger the view to save the viewer state.
- fListener.reset(false, false);
- fListener.addStateUpdates(getInternalViewer(), originalState, IModelDelta.EXPAND | IModelDelta.SELECT | IModelDelta.REVEAL);
- fViewer.setInput(null);
+ // Set the viewer input to null. This will trigger the view to save the viewer state.
+ fListener.reset(false, false);
+ fListener.addStateUpdates(getInternalViewer(), originalState, IModelDelta.EXPAND | IModelDelta.SELECT | IModelDelta.REVEAL);
+ fViewer.setInput(null);
waitWhile(t -> !fListener.isFinished(STATE_SAVE_COMPLETE | STATE_UPDATES), createListenerErrorMessage());
- // Set the viewer input back to the model. When view updates are complete
- // the viewer
- // Note: disable redundant updates because the reveal delta triggers one.
- fListener.reset(TreePath.EMPTY, model.getRootElement(), 1, false, false);
- // TODO: add state updates somehow?
- fViewer.setInput(model.getRootElement());
+ // Set the viewer input back to the model. When view updates are complete
+ // the viewer
+ // Note: disable redundant updates because the reveal delta triggers one.
+ fListener.reset(TreePath.EMPTY, model.getRootElement(), 1, false, false);
+ // TODO: add state updates somehow?
+ fViewer.setInput(model.getRootElement());
waitWhile(t -> !fListener.isFinished(), createListenerErrorMessage());
- // Extract the restored state from viewer
- ModelDelta restoredState = new ModelDelta(model.getRootElement(), IModelDelta.NO_CHANGE);
- fViewer.saveElementState(TreePath.EMPTY, restoredState, IModelDelta.EXPAND | IModelDelta.SELECT);
+ // Extract the restored state from viewer
+ ModelDelta restoredState = new ModelDelta(model.getRootElement(), IModelDelta.NO_CHANGE);
+ fViewer.saveElementState(TreePath.EMPTY, restoredState, IModelDelta.EXPAND | IModelDelta.SELECT);
- if (!deltaMatches(originalState, restoredState)) {
+ if (!deltaMatches(originalState, restoredState)) {
fail("Expected:\n" + originalState.toString() + "\nGot:\n" + restoredState); //$NON-NLS-1$ //$NON-NLS-2$
- }
- }
+ }
+ }
public void testSaveAndRestore2() throws Exception {
- //TreeModelViewerAutopopulateAgent autopopulateAgent = new TreeModelViewerAutopopulateAgent(fViewer);
- TestModel model = TestModel.simpleMultiLevel();
+ //TreeModelViewerAutopopulateAgent autopopulateAgent = new TreeModelViewerAutopopulateAgent(fViewer);
+ TestModel model = TestModel.simpleMultiLevel();
- // expand all elements
- fViewer.setAutoExpandLevel(-1);
+ // expand all elements
+ fViewer.setAutoExpandLevel(-1);
- // Create the listener, only check the first level
- fListener.reset(TreePath.EMPTY, model.getRootElement(), -1, true, false);
+ // Create the listener, only check the first level
+ fListener.reset(TreePath.EMPTY, model.getRootElement(), -1, true, false);
- // Set the input into the view and update the view.
- fViewer.setInput(model.getRootElement());
+ // Set the input into the view and update the view.
+ fViewer.setInput(model.getRootElement());
waitWhile(t -> !fListener.isFinished(), createListenerErrorMessage());
- model.validateData(fViewer, TreePath.EMPTY);
+ model.validateData(fViewer, TreePath.EMPTY);
- // Set a selection in view
+ // Set a selection in view
fViewer.setSelection(new TreeSelection(new TreePath[] { model.findElement("3.2"), model.findElement("3.2.1"), model.findElement("2") })); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
fViewer.setSelection(new TreeSelection(model.findElement("3.2.3"))); //$NON-NLS-1$
- // Turn off the auto-expand now since we want to text the auto-expand logic
- fViewer.setAutoExpandLevel(-1);
+ // Turn off the auto-expand now since we want to text the auto-expand logic
+ fViewer.setAutoExpandLevel(-1);
- // Extract the original state from viewer
- ModelDelta originalState = new ModelDelta(model.getRootElement(), IModelDelta.NO_CHANGE);
- fViewer.saveElementState(TreePath.EMPTY, originalState, IModelDelta.EXPAND | IModelDelta.SELECT);
+ // Extract the original state from viewer
+ ModelDelta originalState = new ModelDelta(model.getRootElement(), IModelDelta.NO_CHANGE);
+ fViewer.saveElementState(TreePath.EMPTY, originalState, IModelDelta.EXPAND | IModelDelta.SELECT);
- // Set the viewer input to null. This will trigger the view to save the viewer state.
- fListener.reset(true, false);
- fListener.addStateUpdates(getInternalViewer(), originalState, IModelDelta.EXPAND | IModelDelta.SELECT | IModelDelta.REVEAL);
+ // Set the viewer input to null. This will trigger the view to save the viewer state.
+ fListener.reset(true, false);
+ fListener.addStateUpdates(getInternalViewer(), originalState, IModelDelta.EXPAND | IModelDelta.SELECT | IModelDelta.REVEAL);
- fViewer.setInput(null);
+ fViewer.setInput(null);
waitWhile(t -> !fListener.isFinished(STATE_SAVE_COMPLETE | STATE_UPDATES), createListenerErrorMessage());
- // Set the viewer input back to the model. When view updates are complete
- // the viewer
- // Note: disable redundant updates because the reveal delta triggers one.
- fListener.reset(TreePath.EMPTY, model.getRootElement(), 1, false, false);
- // TODO: add state updates somehow?
- fViewer.setInput(model.getRootElement());
+ // Set the viewer input back to the model. When view updates are complete
+ // the viewer
+ // Note: disable redundant updates because the reveal delta triggers one.
+ fListener.reset(TreePath.EMPTY, model.getRootElement(), 1, false, false);
+ // TODO: add state updates somehow?
+ fViewer.setInput(model.getRootElement());
waitWhile(t -> !fListener.isFinished(), createListenerErrorMessage());
- // Extract the restored state from viewer
- ModelDelta restoredState = new ModelDelta(model.getRootElement(), IModelDelta.NO_CHANGE);
- fViewer.saveElementState(TreePath.EMPTY, restoredState, IModelDelta.EXPAND | IModelDelta.SELECT);
+ // Extract the restored state from viewer
+ ModelDelta restoredState = new ModelDelta(model.getRootElement(), IModelDelta.NO_CHANGE);
+ fViewer.saveElementState(TreePath.EMPTY, restoredState, IModelDelta.EXPAND | IModelDelta.SELECT);
- if (!deltaMatches(originalState, restoredState)) {
+ if (!deltaMatches(originalState, restoredState)) {
fail("Expected:\n" + originalState.toString() + "\nGot:\n" + restoredState); //$NON-NLS-1$ //$NON-NLS-2$
- }
- }
+ }
+ }
public void testSaveAndRestoreInputInstance() throws Exception {
- //TreeModelViewerAutopopulateAgent autopopulateAgent = new TreeModelViewerAutopopulateAgent(fViewer);
- TestModel model = alternatingSubsreesModel(6);
+ //TreeModelViewerAutopopulateAgent autopopulateAgent = new TreeModelViewerAutopopulateAgent(fViewer);
+ TestModel model = alternatingSubsreesModel(6);
- // NOTE: WE ARE NOT EXPANDING ANY CHILDREN
+ // NOTE: WE ARE NOT EXPANDING ANY CHILDREN
- // Create the listener, only check the first level
- fListener.reset(TreePath.EMPTY, model.getRootElement(), 1, true, false);
+ // Create the listener, only check the first level
+ fListener.reset(TreePath.EMPTY, model.getRootElement(), 1, true, false);
- // Set the input into the view and update the view.
- fViewer.setInput(model.getRootElement());
+ // Set the input into the view and update the view.
+ fViewer.setInput(model.getRootElement());
waitWhile(t -> !fListener.isFinished(), createListenerErrorMessage());
- model.validateData(fViewer, TreePath.EMPTY, true);
+ model.validateData(fViewer, TreePath.EMPTY, true);
- // Expand some, but not all elements
- expandAlternateElements(fListener, model, true);
+ // Expand some, but not all elements
+ expandAlternateElements(fListener, model, true);
- // Set a selection in view
+ // Set a selection in view
fViewer.setSelection(new TreeSelection(new TreePath[] { model.findElement("5.1"), model.findElement("5.1.1"), model.findElement("6.1.1") })); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- // Extract the original state from viewer
- ModelDelta originalState = new ModelDelta(model.getRootElement(), IModelDelta.NO_CHANGE);
- fViewer.saveElementState(TreePath.EMPTY, originalState, IModelDelta.EXPAND | IModelDelta.SELECT);
+ // Extract the original state from viewer
+ ModelDelta originalState = new ModelDelta(model.getRootElement(), IModelDelta.NO_CHANGE);
+ fViewer.saveElementState(TreePath.EMPTY, originalState, IModelDelta.EXPAND | IModelDelta.SELECT);
- // Do not reset to null, just reset input to the same object.
+ // Do not reset to null, just reset input to the same object.
- // Set the viewer input back to the model. When view updates are complete
- // the viewer
- // Note: disable redundant updates because the reveal delta triggers one.
- fListener.reset(TreePath.EMPTY, model.getRootElement(), 1, false, false);
- fViewer.setInput(model.getRootElement());
+ // Set the viewer input back to the model. When view updates are complete
+ // the viewer
+ // Note: disable redundant updates because the reveal delta triggers one.
+ fListener.reset(TreePath.EMPTY, model.getRootElement(), 1, false, false);
+ fViewer.setInput(model.getRootElement());
waitWhile(t -> !fListener.isFinished(), createListenerErrorMessage());
- // Extract the restored state from viewer
- ModelDelta restoredState = new ModelDelta(model.getRootElement(), IModelDelta.NO_CHANGE);
- fViewer.saveElementState(TreePath.EMPTY, restoredState, IModelDelta.EXPAND | IModelDelta.SELECT);
+ // Extract the restored state from viewer
+ ModelDelta restoredState = new ModelDelta(model.getRootElement(), IModelDelta.NO_CHANGE);
+ fViewer.saveElementState(TreePath.EMPTY, restoredState, IModelDelta.EXPAND | IModelDelta.SELECT);
- if (!deltaMatches(originalState, restoredState)) {
+ if (!deltaMatches(originalState, restoredState)) {
fail("Expected:\n" + originalState.toString() + "\nGot:\n" + restoredState); //$NON-NLS-1$ //$NON-NLS-2$
- }
- }
+ }
+ }
public void testSaveAndRestoreInputInstanceEquals() throws Exception {
- //TreeModelViewerAutopopulateAgent autopopulateAgent = new TreeModelViewerAutopopulateAgent(fViewer);
- TestModel model = alternatingSubsreesModel(6);
+ //TreeModelViewerAutopopulateAgent autopopulateAgent = new TreeModelViewerAutopopulateAgent(fViewer);
+ TestModel model = alternatingSubsreesModel(6);
- // NOTE: WE ARE NOT EXPANDING ANY CHILDREN
+ // NOTE: WE ARE NOT EXPANDING ANY CHILDREN
- // Create the listener, only check the first level
- fListener.reset(TreePath.EMPTY, model.getRootElement(), 1, true, false);
+ // Create the listener, only check the first level
+ fListener.reset(TreePath.EMPTY, model.getRootElement(), 1, true, false);
- // Set the input into the view and update the view.
- fViewer.setInput(model.getRootElement());
+ // Set the input into the view and update the view.
+ fViewer.setInput(model.getRootElement());
waitWhile(t -> !fListener.isFinished(), createListenerErrorMessage());
- model.validateData(fViewer, TreePath.EMPTY, true);
+ model.validateData(fViewer, TreePath.EMPTY, true);
- // Expand some, but not all elements
- expandAlternateElements(fListener, model, true);
+ // Expand some, but not all elements
+ expandAlternateElements(fListener, model, true);
- // Set a selection in view
+ // Set a selection in view
fViewer.setSelection(new TreeSelection(new TreePath[] { model.findElement("5.1"), model.findElement("5.1.1"), model.findElement("6.1.1") })); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- // Extract the original state from viewer
- ModelDelta originalState = new ModelDelta(model.getRootElement(), IModelDelta.NO_CHANGE);
- fViewer.saveElementState(TreePath.EMPTY, originalState, IModelDelta.EXPAND | IModelDelta.SELECT);
+ // Extract the original state from viewer
+ ModelDelta originalState = new ModelDelta(model.getRootElement(), IModelDelta.NO_CHANGE);
+ fViewer.saveElementState(TreePath.EMPTY, originalState, IModelDelta.EXPAND | IModelDelta.SELECT);
- // Create a copy of the input object and set it to model.
- TestElement newRoot = new TestElement(model, model.getRootElement().getID(), model.getRootElement().getChildren());
- model.setRoot(newRoot);
+ // Create a copy of the input object and set it to model.
+ TestElement newRoot = new TestElement(model, model.getRootElement().getID(), model.getRootElement().getChildren());
+ model.setRoot(newRoot);
- // Set the viewer input back to the model. When view updates are complete
- // the viewer
- // Note: disable redundant updates because the reveal delta triggers one.
- fListener.reset(TreePath.EMPTY, model.getRootElement(), 1, false, false);
+ // Set the viewer input back to the model. When view updates are complete
+ // the viewer
+ // Note: disable redundant updates because the reveal delta triggers one.
+ fListener.reset(TreePath.EMPTY, model.getRootElement(), 1, false, false);
- fViewer.setInput(model.getRootElement());
+ fViewer.setInput(model.getRootElement());
waitWhile(t -> !fListener.isFinished(), createListenerErrorMessage());
- // Extract the restored state from viewer
- ModelDelta restoredState = new ModelDelta(model.getRootElement(), IModelDelta.NO_CHANGE);
- fViewer.saveElementState(TreePath.EMPTY, restoredState, IModelDelta.EXPAND | IModelDelta.SELECT);
+ // Extract the restored state from viewer
+ ModelDelta restoredState = new ModelDelta(model.getRootElement(), IModelDelta.NO_CHANGE);
+ fViewer.saveElementState(TreePath.EMPTY, restoredState, IModelDelta.EXPAND | IModelDelta.SELECT);
- if (!deltaMatches(originalState, restoredState)) {
+ if (!deltaMatches(originalState, restoredState)) {
fail("Expected:\n" + originalState.toString() + "\nGot:\n" + restoredState); //$NON-NLS-1$ //$NON-NLS-2$
- }
- }
+ }
+ }
public void testSaveAndRestoreLarge() throws Exception {
- //TreeModelViewerAutopopulateAgent autopopulateAgent = new TreeModelViewerAutopopulateAgent(fViewer);
- TestModel model = alternatingSubsreesModel(100);
+ //TreeModelViewerAutopopulateAgent autopopulateAgent = new TreeModelViewerAutopopulateAgent(fViewer);
+ TestModel model = alternatingSubsreesModel(100);
- // NOTE: WE ARE NOT EXPANDING ANY CHILDREN
+ // NOTE: WE ARE NOT EXPANDING ANY CHILDREN
- // Create the listener, only check the first level
- fListener.reset();
+ // Create the listener, only check the first level
+ fListener.reset();
- // Set the input into the view and update the view.
- fViewer.setInput(model.getRootElement());
+ // Set the input into the view and update the view.
+ fViewer.setInput(model.getRootElement());
TestUtil.waitForJobs(getName(), 300, 5000);
waitWhile(t -> !fListener.isFinished(CONTENT_SEQUENCE_COMPLETE), createListenerErrorMessage());
- expandAlternateElements(fListener, model, false);
+ expandAlternateElements(fListener, model, false);
- // Set a selection in view
+ // Set a selection in view
TreeSelection originalSelection = new TreeSelection(model.findElement("5.1.1")); //$NON-NLS-1$
- fViewer.setSelection(originalSelection);
- assertTrue( areTreeSelectionsEqual(originalSelection, (ITreeSelection)fViewer.getSelection()) );
+ fViewer.setSelection(originalSelection);
+ assertTrue( areTreeSelectionsEqual(originalSelection, (ITreeSelection)fViewer.getSelection()) );
- // Extract the original state from viewer
- ModelDelta originalState = new ModelDelta(model.getRootElement(), IModelDelta.NO_CHANGE);
- fViewer.saveElementState(TreePath.EMPTY, originalState, IModelDelta.EXPAND | IModelDelta.SELECT);
+ // Extract the original state from viewer
+ ModelDelta originalState = new ModelDelta(model.getRootElement(), IModelDelta.NO_CHANGE);
+ fViewer.saveElementState(TreePath.EMPTY, originalState, IModelDelta.EXPAND | IModelDelta.SELECT);
- // Set the viewer input to null. This will trigger the view to save the viewer state.
- fListener.reset();
- fListener.addStateUpdates(getInternalViewer(), originalState, IModelDelta.EXPAND | IModelDelta.SELECT | IModelDelta.REVEAL);
+ // Set the viewer input to null. This will trigger the view to save the viewer state.
+ fListener.reset();
+ fListener.addStateUpdates(getInternalViewer(), originalState, IModelDelta.EXPAND | IModelDelta.SELECT | IModelDelta.REVEAL);
- fViewer.setInput(null);
+ fViewer.setInput(null);
TestUtil.waitForJobs(getName(), 300, 5000);
waitWhile(t -> !fListener.isFinished(STATE_SAVE_COMPLETE | STATE_UPDATES), createListenerErrorMessage());
- // Set the viewer input back to the model. When view updates are complete
- // the viewer
- // Note: disable redundant updates because the reveal delta triggers one.
- fListener.reset();
- fViewer.setInput(model.getRootElement());
+ // Set the viewer input back to the model. When view updates are complete
+ // the viewer
+ // Note: disable redundant updates because the reveal delta triggers one.
+ fListener.reset();
+ fViewer.setInput(model.getRootElement());
TestUtil.waitForJobs(getName(), 300, 5000);
waitWhile(t -> !fListener.isFinished(CONTENT_SEQUENCE_COMPLETE), createListenerErrorMessage());
- // Validate data (only select visible elements).
+ // Validate data (only select visible elements).
assertTrue(getInternalViewer().getExpandedState(model.findElement("1")) == true); //$NON-NLS-1$
assertTrue(getInternalViewer().getExpandedState(model.findElement("1.1")) == true); //$NON-NLS-1$
assertTrue(getInternalViewer().getExpandedState(model.findElement("2")) == false); //$NON-NLS-1$
@@ -901,64 +901,64 @@ new TreePath[] { model.findElement("5"), model.findElement("5.1"), model.findEle
assertTrue(getInternalViewer().getExpandedState(model.findElement("5")) == true); //$NON-NLS-1$
assertTrue(getInternalViewer().getExpandedState(model.findElement("5.1")) == true); //$NON-NLS-1$
assertTrue(getInternalViewer().getExpandedState(model.findElement("6")) == false); //$NON-NLS-1$
- assertTrue( areTreeSelectionsEqual(originalSelection, (ITreeSelection)fViewer.getSelection()) );
- }
-
- /**
- * This test saves state of a large tree. Then the tree is modified
- * to contain much fewer elements. The restore logic should discard the
- * rest of the saved state delta once all the elements are visible.
- */
+ assertTrue( areTreeSelectionsEqual(originalSelection, (ITreeSelection)fViewer.getSelection()) );
+ }
+
+ /**
+ * This test saves state of a large tree. Then the tree is modified
+ * to contain much fewer elements. The restore logic should discard the
+ * rest of the saved state delta once all the elements are visible.
+ */
public void testSaveAndRestorePartialStateLarge() throws Exception {
- //TreeModelViewerAutopopulateAgent autopopulateAgent = new TreeModelViewerAutopopulateAgent(fViewer);
- TestModel model = alternatingSubsreesModel(100);
+ //TreeModelViewerAutopopulateAgent autopopulateAgent = new TreeModelViewerAutopopulateAgent(fViewer);
+ TestModel model = alternatingSubsreesModel(100);
- // NOTE: WE ARE NOT EXPANDING ANY CHILDREN
+ // NOTE: WE ARE NOT EXPANDING ANY CHILDREN
- // Create the listener, only check the first level
- fListener.reset();
+ // Create the listener, only check the first level
+ fListener.reset();
- // Set the input into the view and update the view.
- fViewer.setInput(model.getRootElement());
+ // Set the input into the view and update the view.
+ fViewer.setInput(model.getRootElement());
TestUtil.waitForJobs(getName(), 300, 5000);
waitWhile(t -> !fListener.isFinished(CONTENT_SEQUENCE_COMPLETE), createListenerErrorMessage());
- expandAlternateElements(fListener, model, false);
+ expandAlternateElements(fListener, model, false);
- // Set a selection in view
+ // Set a selection in view
TreeSelection originalSelection = new TreeSelection(model.findElement("5.1.1")); //$NON-NLS-1$
- fViewer.setSelection(originalSelection);
- assertTrue( areTreeSelectionsEqual(originalSelection, (ITreeSelection)fViewer.getSelection()) );
+ fViewer.setSelection(originalSelection);
+ assertTrue( areTreeSelectionsEqual(originalSelection, (ITreeSelection)fViewer.getSelection()) );
- // Extract the original state from viewer
- ModelDelta originalState = new ModelDelta(model.getRootElement(), IModelDelta.NO_CHANGE);
- fViewer.saveElementState(TreePath.EMPTY, originalState, IModelDelta.EXPAND | IModelDelta.SELECT);
+ // Extract the original state from viewer
+ ModelDelta originalState = new ModelDelta(model.getRootElement(), IModelDelta.NO_CHANGE);
+ fViewer.saveElementState(TreePath.EMPTY, originalState, IModelDelta.EXPAND | IModelDelta.SELECT);
- // Set the viewer input to null. This will trigger the view to save the viewer state.
- fListener.reset();
- fListener.addStateUpdates(getInternalViewer(), originalState, IModelDelta.EXPAND | IModelDelta.SELECT | IModelDelta.REVEAL);
+ // Set the viewer input to null. This will trigger the view to save the viewer state.
+ fListener.reset();
+ fListener.addStateUpdates(getInternalViewer(), originalState, IModelDelta.EXPAND | IModelDelta.SELECT | IModelDelta.REVEAL);
- fViewer.setInput(null);
+ fViewer.setInput(null);
TestUtil.waitForJobs(getName(), 300, 5000);
waitWhile(t -> !fListener.isFinished(STATE_SAVE_COMPLETE | STATE_UPDATES), createListenerErrorMessage());
- TestElement[] elements = model.getRootElement().getChildren();
- TestElement[] newElements = new TestElement[10];
- System.arraycopy(elements, 0, newElements, 0, newElements.length);
- model.setElementChildren(TreePath.EMPTY, newElements);
+ TestElement[] elements = model.getRootElement().getChildren();
+ TestElement[] newElements = new TestElement[10];
+ System.arraycopy(elements, 0, newElements, 0, newElements.length);
+ model.setElementChildren(TreePath.EMPTY, newElements);
- // Set the viewer input back to the model. When view updates are complete
- // the viewer
- // Note: disable redundant updates because the reveal delta triggers one.
- fListener.reset();
- fViewer.setInput(model.getRootElement());
+ // Set the viewer input back to the model. When view updates are complete
+ // the viewer
+ // Note: disable redundant updates because the reveal delta triggers one.
+ fListener.reset();
+ fViewer.setInput(model.getRootElement());
TestUtil.waitForJobs(getName(), 300, 5000);
- // MONITOR FOR THE STATE RESTORE TO COMPLETE
+ // MONITOR FOR THE STATE RESTORE TO COMPLETE
waitWhile(t -> !fListener.isFinished(CONTENT_SEQUENCE_COMPLETE | STATE_RESTORE_COMPLETE), createListenerErrorMessage());
- // Validate data
+ // Validate data
assertTrue(getInternalViewer().getExpandedState(model.findElement("1")) == true); //$NON-NLS-1$
assertTrue(getInternalViewer().getExpandedState(model.findElement("1.1")) == true); //$NON-NLS-1$
assertTrue(getInternalViewer().getExpandedState(model.findElement("2")) == false); //$NON-NLS-1$
@@ -968,134 +968,134 @@ new TreePath[] { model.findElement("5"), model.findElement("5.1"), model.findEle
assertTrue(getInternalViewer().getExpandedState(model.findElement("5")) == true); //$NON-NLS-1$
assertTrue(getInternalViewer().getExpandedState(model.findElement("5.1")) == true); //$NON-NLS-1$
assertTrue(getInternalViewer().getExpandedState(model.findElement("6")) == false); //$NON-NLS-1$
- assertTrue( areTreeSelectionsEqual(originalSelection, (ITreeSelection)fViewer.getSelection()) );
- }
+ assertTrue( areTreeSelectionsEqual(originalSelection, (ITreeSelection)fViewer.getSelection()) );
+ }
public void testPreserveCollapseAndSelectDeltaAfterSaveAndRestore() throws Exception {
- //TreeModelViewerAutopopulateAgent autopopulateAgent = new TreeModelViewerAutopopulateAgent(fViewer);
- TestModel model = TestModel.simpleMultiLevel();
+ //TreeModelViewerAutopopulateAgent autopopulateAgent = new TreeModelViewerAutopopulateAgent(fViewer);
+ TestModel model = TestModel.simpleMultiLevel();
- // Expand all
- fViewer.setAutoExpandLevel(-1);
+ // Expand all
+ fViewer.setAutoExpandLevel(-1);
- // Create the listener.
- fListener.reset(TreePath.EMPTY, model.getRootElement(), -1, true, false);
+ // Create the listener.
+ fListener.reset(TreePath.EMPTY, model.getRootElement(), -1, true, false);
- // Set the input into the view and update the view.
- fViewer.setInput(model.getRootElement());
+ // Set the input into the view and update the view.
+ fViewer.setInput(model.getRootElement());
waitWhile(t -> !fListener.isFinished(), createListenerErrorMessage());
- model.validateData(fViewer, TreePath.EMPTY, true);
+ model.validateData(fViewer, TreePath.EMPTY, true);
fViewer.setSelection(new TreeSelection(model.findElement("3"))); //$NON-NLS-1$
- // Turn off auto-expand
- fViewer.setAutoExpandLevel(0);
+ // Turn off auto-expand
+ fViewer.setAutoExpandLevel(0);
- // Set the viewer input to null. This will trigger the view to save the viewer state.
- fListener.reset(false, false);
- fViewer.setInput(null);
+ // Set the viewer input to null. This will trigger the view to save the viewer state.
+ fListener.reset(false, false);
+ fViewer.setInput(null);
waitWhile(t -> !fListener.isFinished(STATE_SAVE_COMPLETE), createListenerErrorMessage());
- // Set the viewer input back to the model. When view updates are complete
- // the viewer
- // Note: disable redundant updates because the reveal delta triggers one.
- fListener.reset(TreePath.EMPTY, model.getRootElement(), 1, false, false);
- fViewer.setInput(model.getRootElement());
+ // Set the viewer input back to the model. When view updates are complete
+ // the viewer
+ // Note: disable redundant updates because the reveal delta triggers one.
+ fListener.reset(TreePath.EMPTY, model.getRootElement(), 1, false, false);
+ fViewer.setInput(model.getRootElement());
TreePath path = model.findElement("2"); //$NON-NLS-1$
- fListener.addUpdates(null, path, (TestElement)path.getLastSegment(), 0, STATE_UPDATES);
+ fListener.addUpdates(null, path, (TestElement)path.getLastSegment(), 0, STATE_UPDATES);
path = model.findElement("3"); //$NON-NLS-1$
- fListener.addUpdates(null, path, (TestElement)path.getLastSegment(), 0, STATE_UPDATES);
+ fListener.addUpdates(null, path, (TestElement)path.getLastSegment(), 0, STATE_UPDATES);
- // Wait till we restore state of elements we want to collapse and select
- // Bug 372619 - Need to wait until proxy installed delta is processed before
- // posting the next delta.
+ // Wait till we restore state of elements we want to collapse and select
+ // Bug 372619 - Need to wait until proxy installed delta is processed before
+ // posting the next delta.
waitWhile(t -> !fListener.isFinished(STATE_RESTORE_STARTED | STATE_UPDATES | CHILDREN_UPDATES | MODEL_CHANGED_COMPLETE), createListenerErrorMessage());
- // Post first collapse delta
- fListener.resetModelChanged();
+ // Post first collapse delta
+ fListener.resetModelChanged();
model.postDelta(model.makeElementDelta(model.findElement("2"), IModelDelta.COLLAPSE)); //$NON-NLS-1$
waitWhile(t -> !fListener.isFinished(MODEL_CHANGED_COMPLETE), createListenerErrorMessage());
- // Post second collapse delta
- fListener.resetModelChanged();
+ // Post second collapse delta
+ fListener.resetModelChanged();
model.postDelta(model.makeElementDelta(model.findElement("3"), IModelDelta.COLLAPSE)); //$NON-NLS-1$
waitWhile(t -> !fListener.isFinished(MODEL_CHANGED_COMPLETE), createListenerErrorMessage());
- // Post select delta
+ // Post select delta
model.postDelta(model.makeElementDelta(model.findElement("1"), IModelDelta.SELECT)); //$NON-NLS-1$
waitWhile(t -> !fListener.isFinished(MODEL_CHANGED_COMPLETE), createListenerErrorMessage());
- // Wait for all the updates to complete (note: we're not resetting the listener).
+ // Wait for all the updates to complete (note: we're not resetting the listener).
waitWhile(t -> !fListener.isFinished(STATE_RESTORE_COMPLETE), createListenerErrorMessage());
- // Check to make sure that the state restore didn't change the selection.
+ // Check to make sure that the state restore didn't change the selection.
assertTrue(getInternalViewer().getExpandedState(model.findElement("2")) == false); //$NON-NLS-1$
assertTrue(getInternalViewer().getExpandedState(model.findElement("3")) == false); //$NON-NLS-1$
assertEquals(new TreeSelection(model.findElement("1")), fViewer.getSelection()); //$NON-NLS-1$
- }
+ }
- /**
- * Test for bug 359859.<br>
- * This test verifies that RESTORE state is handled after SAVE previous state was completed
- */
+ /**
+ * Test for bug 359859.<br>
+ * This test verifies that RESTORE state is handled after SAVE previous state was completed
+ */
public void testSaveRestoreOrder() throws Exception {
- //TreeModelViewerAutopopulateAgent autopopulateAgent = new TreeModelViewerAutopopulateAgent(fViewer);
- TestModel model = TestModel.simpleMultiLevel();
- model.setDelayUpdates(true);
+ //TreeModelViewerAutopopulateAgent autopopulateAgent = new TreeModelViewerAutopopulateAgent(fViewer);
+ TestModel model = TestModel.simpleMultiLevel();
+ model.setDelayUpdates(true);
- // Expand all
- fViewer.setAutoExpandLevel(-1);
+ // Expand all
+ fViewer.setAutoExpandLevel(-1);
- // Create the listener.
- fListener.reset(TreePath.EMPTY, model.getRootElement(), -1, false, false);
+ // Create the listener.
+ fListener.reset(TreePath.EMPTY, model.getRootElement(), -1, false, false);
- // Set the input into the view and update the view.
- fViewer.setInput(model.getRootElement());
+ // Set the input into the view and update the view.
+ fViewer.setInput(model.getRootElement());
waitWhile(t -> !fListener.isFinished(), createListenerErrorMessage());
- model.validateData(fViewer, TreePath.EMPTY, true);
+ model.validateData(fViewer, TreePath.EMPTY, true);
- // a new similar model
- TestModel copyModel = TestModel.simpleMultiLevel();
+ // a new similar model
+ TestModel copyModel = TestModel.simpleMultiLevel();
- // Trigger save - restore sequence.
- fListener.reset();
- fListener.expectRestoreAfterSaveComplete();
- fViewer.setInput(copyModel.getRootElement());
+ // Trigger save - restore sequence.
+ fListener.reset();
+ fListener.expectRestoreAfterSaveComplete();
+ fViewer.setInput(copyModel.getRootElement());
waitWhile(t -> !fListener.isFinished(STATE_RESTORE_STARTED), createListenerErrorMessage());
assertTrue("RESTORE started before SAVE to complete", fListener.isFinished(STATE_SAVE_COMPLETE)); //$NON-NLS-1$
- }
+ }
- /**
- * This test tries to restore a viewer state while input == null.
- * See: Bug 380288 - NPE switching to the Breakpoints View
- */
+ /**
+ * This test tries to restore a viewer state while input == null.
+ * See: Bug 380288 - NPE switching to the Breakpoints View
+ */
public void testUpdateWithNullInput() throws Exception {
- TestModel model = TestModel.simpleMultiLevel();
- fViewer.setAutoExpandLevel(-1);
+ TestModel model = TestModel.simpleMultiLevel();
+ fViewer.setAutoExpandLevel(-1);
- // Create the listener
- fListener.reset(TreePath.EMPTY, model.getRootElement(), -1, false, false);
+ // Create the listener
+ fListener.reset(TreePath.EMPTY, model.getRootElement(), -1, false, false);
- // Set the input into the view and update the view.
- fViewer.setInput(model.getRootElement());
+ // Set the input into the view and update the view.
+ fViewer.setInput(model.getRootElement());
waitWhile(t -> !fListener.isFinished(), createListenerErrorMessage());
- model.validateData(fViewer, TreePath.EMPTY);
+ model.validateData(fViewer, TreePath.EMPTY);
- ModelDelta expandedState = new ModelDelta(model.getRootElement(), IModelDelta.NO_CHANGE);
- fViewer.saveElementState(TreePath.EMPTY, expandedState, IModelDelta.EXPAND);
+ ModelDelta expandedState = new ModelDelta(model.getRootElement(), IModelDelta.NO_CHANGE);
+ fViewer.saveElementState(TreePath.EMPTY, expandedState, IModelDelta.EXPAND);
- // Refresh the viewer so that updates are generated.
- fListener.reset();
- fListener.addChildreCountUpdate(TreePath.EMPTY);
- model.postDelta(new ModelDelta(model.getRootElement(), IModelDelta.CONTENT));
+ // Refresh the viewer so that updates are generated.
+ fListener.reset();
+ fListener.addChildreCountUpdate(TreePath.EMPTY);
+ model.postDelta(new ModelDelta(model.getRootElement(), IModelDelta.CONTENT));
- // Wait for the delta to be processed.
+ // Wait for the delta to be processed.
waitWhile(t -> !fListener.isFinished(MODEL_CHANGED_COMPLETE | CHILD_COUNT_UPDATES), createListenerErrorMessage());
- fViewer.setInput(null);
- fViewer.updateViewer(expandedState);
+ fViewer.setInput(null);
+ fViewer.updateViewer(expandedState);
waitWhile(t -> !fListener.isFinished(CONTENT_COMPLETE | VIEWER_UPDATES_RUNNING), createListenerErrorMessage());
- }
+ }
}

Back to the top