/******************************************************************************* * Copyright (c) 2016 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: * Conrad Groth - bug 491682 ******************************************************************************/ package org.eclipse.jface.tests.internal.databinding.viewers; import java.util.Arrays; import org.eclipse.core.databinding.observable.list.IObservableList; import org.eclipse.core.databinding.observable.list.WritableList; import org.eclipse.jface.databinding.viewers.ObservableListContentProvider; import org.eclipse.jface.databinding.viewers.ObservableListTreeContentProvider; import org.eclipse.jface.tests.databinding.AbstractSWTTestCase; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.jface.viewers.ViewerComparator; import org.junit.Assert; /** * @since 3.2 */ public class ViewerUpdaterTest extends AbstractSWTTestCase { IObservableList<String> elementsList; String[] elements = new String[] { "one", "two", "three" }; @Override protected void setUp() throws Exception { super.setUp(); elementsList = new WritableList<>(Arrays.asList(elements), String.class); } public void testTableViewer_ReplacingSelectedItemSelectsNewItem() { TableViewer tableViewer = new TableViewer(getShell()); // only with sorter the TableViewerUpdater.replace method delegates to // ViewerUpdater.replace: tableViewer.setComparator(new ViewerComparator()); tableViewer.setContentProvider(new ObservableListContentProvider()); tableViewer.setInput(elementsList); tableViewer.getTable().selectAll(); elementsList.set(0, "foo"); // replace "one" IStructuredSelection selection = tableViewer.getStructuredSelection(); Assert.assertEquals(elements.length, selection.size()); Assert.assertTrue(selection.toList().contains("foo")); } public void testTreeViewer_ReplacingSelectedItemSelectsNewItem() { TreeViewer treeViewer = new TreeViewer(getShell()); Object input = new Object(); ITreeContentProvider contentProvider = new ObservableListTreeContentProvider( target -> target == input ? elementsList : null, null); // only with sorter the TreeViewerUpdater.replace method delegates to // ViewerUpdater.replace: treeViewer.setComparator(new ViewerComparator()); treeViewer.setContentProvider(contentProvider); treeViewer.setInput(input); treeViewer.getTree().selectAll(); elementsList.set(0, "foo"); // replace "one" IStructuredSelection selection = treeViewer.getStructuredSelection(); Assert.assertEquals(elements.length, selection.size()); Assert.assertTrue(selection.toList().contains("foo")); } }