Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBoris Bokowski2005-12-21 04:56:02 +0000
committerBoris Bokowski2005-12-21 04:56:02 +0000
commit5c5335d54b997d8fa81bd201af9f644316877cbd (patch)
treeff3bec7b15f01122a5c0fcf1c2115ff0b8fbbeb1 /tests/org.eclipse.ui.tests/Eclipse JFace Tests/org/eclipse/jface/tests/viewers/MultipleEqualElementsTreeViewerTest.java
parentb680ea0c352025403c720fd51d14a73faf96b0e4 (diff)
downloadeclipse.platform.ui-5c5335d54b997d8fa81bd201af9f644316877cbd.tar.gz
eclipse.platform.ui-5c5335d54b997d8fa81bd201af9f644316877cbd.tar.xz
eclipse.platform.ui-5c5335d54b997d8fa81bd201af9f644316877cbd.zip
Fix for Bug 84314 [Viewers] Need to allow mapping elements to multiple widgets/items
Diffstat (limited to 'tests/org.eclipse.ui.tests/Eclipse JFace Tests/org/eclipse/jface/tests/viewers/MultipleEqualElementsTreeViewerTest.java')
-rw-r--r--tests/org.eclipse.ui.tests/Eclipse JFace Tests/org/eclipse/jface/tests/viewers/MultipleEqualElementsTreeViewerTest.java188
1 files changed, 188 insertions, 0 deletions
diff --git a/tests/org.eclipse.ui.tests/Eclipse JFace Tests/org/eclipse/jface/tests/viewers/MultipleEqualElementsTreeViewerTest.java b/tests/org.eclipse.ui.tests/Eclipse JFace Tests/org/eclipse/jface/tests/viewers/MultipleEqualElementsTreeViewerTest.java
new file mode 100644
index 00000000000..3aee0a83221
--- /dev/null
+++ b/tests/org.eclipse.ui.tests/Eclipse JFace Tests/org/eclipse/jface/tests/viewers/MultipleEqualElementsTreeViewerTest.java
@@ -0,0 +1,188 @@
+/*******************************************************************************
+ * Copyright (c) 2005 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jface.tests.viewers;
+
+import java.util.Arrays;
+import java.util.List;
+
+import org.eclipse.jface.viewers.AbstractTreeViewer;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ITreeSelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.TreePath;
+import org.eclipse.jface.viewers.TreeSelection;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.swt.widgets.TreeItem;
+import org.eclipse.swt.widgets.Widget;
+
+/**
+ * Tests TreeViewer's support for multiple equal elements ().
+ *
+ * @since 3.2
+ */
+public class MultipleEqualElementsTreeViewerTest extends TreeViewerTest {
+
+ private TestElement element_2;
+
+ private TestElement element_2_1;
+
+ private TestElement element_2_1_2;
+
+ private TestElement element_1;
+
+ private TestElement element_1_3;
+
+ private TreePath treePath_1_2_21_212;
+
+ private TreePath treePath_1_21_212;
+
+ private TreePath treePath_1_212;
+
+ private TreePath treePath_2_21_212;
+
+ private TreePath treePath_1;
+
+ private TreePath treePath_1_21;
+
+ private TreePath treePath_2_21;
+
+ private TreePath treePath_1_2_21;
+
+ public MultipleEqualElementsTreeViewerTest(String name) {
+ super(name);
+ }
+
+ public TreeViewer getTreeViewer() {
+ return (TreeViewer) fViewer;
+ }
+
+ protected void setUpModel() {
+ fRootElement = TestElement.createModel(3, 10);
+ element_2 = fRootElement.getChildAt(2);
+ element_2_1 = element_2.getChildAt(1);
+ element_2_1_2 = element_2_1.getChildAt(2);
+ element_1 = fRootElement.getChildAt(1);
+ element_1_3 = element_1.getChildAt(1);
+ element_1.addChild(element_2, null);
+ element_1.addChild(element_2_1, null);
+ element_1.addChild(element_2_1_2, null);
+ treePath_1_2_21_212 = new TreePath(new Object[] { element_1, element_2,
+ element_2_1, element_2_1_2 });
+ treePath_1_2_21 = new TreePath(new Object[] { element_1, element_2,
+ element_2_1 });
+ treePath_1 = new TreePath(new Object[] { element_1 });
+ treePath_1_21 = new TreePath(new Object[] { element_1, element_2_1 });
+ treePath_1_21_212 = new TreePath(new Object[] { element_1, element_2_1,
+ element_2_1_2 });
+ treePath_1_212 = new TreePath(new Object[] { element_1, element_2_1_2 });
+ treePath_2_21_212 = new TreePath(new Object[] { element_2, element_2_1,
+ element_2_1_2 });
+ treePath_2_21 = new TreePath(new Object[] { element_2, element_2_1 });
+ fModel = fRootElement.getModel();
+ }
+
+ public void testElementMap() {
+ getTreeViewer().expandToLevel(element_1, AbstractTreeViewer.ALL_LEVELS);
+ getTreeViewer().expandToLevel(element_2, AbstractTreeViewer.ALL_LEVELS);
+ assertEquals(1, getTreeViewer().testFindItems(element_1).length);
+ assertEquals(2, getTreeViewer().testFindItems(element_2).length);
+ assertEquals(3, getTreeViewer().testFindItems(element_2_1).length);
+ assertEquals(4, getTreeViewer().testFindItems(element_2_1_2).length);
+ }
+
+ public void testSelection() {
+ getTreeViewer().expandToLevel(element_1, AbstractTreeViewer.ALL_LEVELS);
+ getTreeViewer().expandToLevel(element_2, AbstractTreeViewer.ALL_LEVELS);
+ getTreeViewer().setSelection(new StructuredSelection(element_1_3));
+ ISelection selection = getTreeViewer().getSelection();
+ assertTrue(selection instanceof ITreeSelection);
+ ITreeSelection treeSelection = (ITreeSelection) selection;
+ assertEquals(new TreeSelection(new TreePath(new Object[] { element_1,
+ element_1_3 })), treeSelection);
+ Widget[] items = getTreeViewer().testFindItems(element_2_1_2);
+ TreeItem[] treeItems = new TreeItem[items.length];
+ System.arraycopy(items, 0, treeItems, 0, items.length);
+ assertEquals(4, treeItems.length);
+ for (int i = 0; i < treeItems.length; i++) {
+ assertNotNull(treeItems[i]);
+ }
+ getTreeViewer().getTree().setSelection(treeItems);
+ treeSelection = (ITreeSelection) getTreeViewer().getSelection();
+ List paths = Arrays.asList(treeSelection.getPaths());
+ assertEquals(4, paths.size());
+ assertTrue(paths.contains(treePath_1_2_21_212));
+ assertTrue(paths.contains(treePath_1_21_212));
+ assertTrue(paths.contains(treePath_1_212));
+ assertTrue(paths.contains(treePath_2_21_212));
+ getTreeViewer().setSelection(
+ new TreeSelection(new TreePath[] { treePath_2_21_212 }));
+ assertEquals(1, getTreeViewer().getTree().getSelectionCount());
+ assertMatchingPath(treePath_2_21_212, getTreeViewer().getTree()
+ .getSelection()[0]);
+ }
+
+ public void testExpansion() {
+ getTreeViewer().expandToLevel(treePath_1_21_212, 1);
+ assertEqualsArray("element expansion", new Object[] { element_1,
+ element_2_1 }, getTreeViewer().getExpandedElements());
+ assertEqualsArray("path expansion", new Object[] { treePath_1,
+ treePath_1_21 }, getTreeViewer().getExpandedTreePaths());
+ getTreeViewer().setExpandedTreePaths(
+ new TreePath[] { treePath_1_2_21, treePath_2_21 });
+ assertEqualsArray("path expansion", new Object[] { treePath_1_2_21,
+ treePath_2_21 }, getTreeViewer().getExpandedTreePaths());
+ }
+
+ private void assertMatchingPath(TreePath expectedPath, TreeItem item) {
+ for (int i = expectedPath.getSegmentCount() - 1; i >= 0; i--) {
+ assertNotNull(item);
+ assertEquals(expectedPath.getSegment(i), item.getData());
+ item = item.getParentItem();
+ }
+ assertNull(item);
+ }
+
+ public void testUpdate() {
+ // materialize
+ getTreeViewer().setExpandedTreePaths(
+ new TreePath[] { treePath_1_2_21, treePath_2_21 });
+ Widget[] items = getTreeViewer().testFindItems(element_2_1);
+ for (int i = 0; i < items.length; i++) {
+ assertEquals("0-2-1 name-1", ((TreeItem) items[i]).getText());
+ }
+ element_2_1.setLabel("billy");
+ // the setLabel call fires a change event which results in a call like this:
+ // getTreeViewer().update(element_2_1, null);
+ for (int i = 0; i < items.length; i++) {
+ assertEquals("0-2-1 billy", ((TreeItem) items[i]).getText());
+ }
+ }
+
+ public void testAddWithoutMaterialize() {
+ TestElement newElement = element_2.addChild(TestModelChange.INSERT);
+ getTreeViewer().setExpandedTreePaths(
+ new TreePath[] { treePath_1_2_21, treePath_2_21 });
+ Widget[] items = getTreeViewer().testFindItems(newElement);
+ assertEquals(2, items.length);
+ }
+
+ public void testAddAfterMaterialize() {
+ // materialize before adding
+ getTreeViewer().setExpandedTreePaths(
+ new TreePath[] { treePath_1_2_21, treePath_2_21 });
+ TestElement newElement = element_2.addChild(TestModelChange.INSERT);
+ getTreeViewer().setExpandedTreePaths(
+ new TreePath[] { treePath_1_2_21, treePath_2_21 });
+ Widget[] items = getTreeViewer().testFindItems(newElement);
+ assertEquals(2, items.length);
+ }
+
+}

Back to the top