|
Lines 13-22
Link Here
|
| 13 |
|
13 |
|
| 14 |
import junit.framework.TestCase; |
14 |
import junit.framework.TestCase; |
| 15 |
|
15 |
|
|
|
16 |
import org.eclipse.core.databinding.observable.list.IObservableList; |
| 16 |
import org.eclipse.core.databinding.observable.list.ListDiffEntry; |
17 |
import org.eclipse.core.databinding.observable.list.ListDiffEntry; |
| 17 |
import org.eclipse.jface.databinding.conformance.util.ListChangeEventTracker; |
18 |
import org.eclipse.jface.databinding.conformance.util.ListChangeEventTracker; |
| 18 |
import org.eclipse.jface.databinding.swt.SWTObservables; |
19 |
import org.eclipse.jface.databinding.viewers.ViewersObservables; |
| 19 |
import org.eclipse.jface.internal.databinding.viewers.SelectionProviderMultipleSelectionObservableList; |
|
|
| 20 |
import org.eclipse.jface.viewers.ISelectionProvider; |
20 |
import org.eclipse.jface.viewers.ISelectionProvider; |
| 21 |
import org.eclipse.jface.viewers.IStructuredContentProvider; |
21 |
import org.eclipse.jface.viewers.IStructuredContentProvider; |
| 22 |
import org.eclipse.jface.viewers.IStructuredSelection; |
22 |
import org.eclipse.jface.viewers.IStructuredSelection; |
|
Lines 24-30
Link Here
|
| 24 |
import org.eclipse.jface.viewers.TableViewer; |
24 |
import org.eclipse.jface.viewers.TableViewer; |
| 25 |
import org.eclipse.jface.viewers.Viewer; |
25 |
import org.eclipse.jface.viewers.Viewer; |
| 26 |
import org.eclipse.swt.SWT; |
26 |
import org.eclipse.swt.SWT; |
| 27 |
import org.eclipse.swt.widgets.Display; |
|
|
| 28 |
import org.eclipse.swt.widgets.Shell; |
27 |
import org.eclipse.swt.widgets.Shell; |
| 29 |
|
28 |
|
| 30 |
/** |
29 |
/** |
|
Lines 37-43
Link Here
|
| 37 |
|
36 |
|
| 38 |
private TableViewer viewer; |
37 |
private TableViewer viewer; |
| 39 |
|
38 |
|
| 40 |
private static String[] model = new String[] { "0", "1", "2", "3" }; |
39 |
private static String[] model = new String[] { "element0", "element1", "element2", "element3" }; |
| 41 |
|
40 |
|
| 42 |
protected void setUp() throws Exception { |
41 |
protected void setUp() throws Exception { |
| 43 |
Shell shell = new Shell(); |
42 |
Shell shell = new Shell(); |
|
Lines 55-62
Link Here
|
| 55 |
|
54 |
|
| 56 |
public void testConstructorIllegalArgumentException() { |
55 |
public void testConstructorIllegalArgumentException() { |
| 57 |
try { |
56 |
try { |
| 58 |
new SelectionProviderMultipleSelectionObservableList(SWTObservables |
57 |
ViewersObservables.observeMultiSelection(null); |
| 59 |
.getRealm(Display.getDefault()), null, Object.class); |
|
|
| 60 |
fail(); |
58 |
fail(); |
| 61 |
} catch (IllegalArgumentException e) { |
59 |
} catch (IllegalArgumentException e) { |
| 62 |
} |
60 |
} |
|
Lines 70-78
Link Here
|
| 70 |
* </ul> |
68 |
* </ul> |
| 71 |
*/ |
69 |
*/ |
| 72 |
public void testAddRemove() { |
70 |
public void testAddRemove() { |
| 73 |
SelectionProviderMultipleSelectionObservableList observable = new SelectionProviderMultipleSelectionObservableList( |
71 |
IObservableList observable = ViewersObservables |
| 74 |
SWTObservables.getRealm(Display.getDefault()), |
72 |
.observeMultiSelection(selectionProvider); |
| 75 |
selectionProvider, Object.class); |
|
|
| 76 |
ListChangeEventTracker listener = new ListChangeEventTracker(); |
73 |
ListChangeEventTracker listener = new ListChangeEventTracker(); |
| 77 |
observable.addListChangeListener(listener); |
74 |
observable.addListChangeListener(listener); |
| 78 |
assertEquals(0, observable.size()); |
75 |
assertEquals(0, observable.size()); |
|
Lines 80-86
Link Here
|
| 80 |
selectionProvider.setSelection(new StructuredSelection(model[0])); |
77 |
selectionProvider.setSelection(new StructuredSelection(model[0])); |
| 81 |
assertEquals(1, listener.count); |
78 |
assertEquals(1, listener.count); |
| 82 |
assertEquals(1, listener.event.diff.getDifferences().length); |
79 |
assertEquals(1, listener.event.diff.getDifferences().length); |
| 83 |
assertDiffEntry(listener.event.diff.getDifferences()[0], 0, model[0], true); |
80 |
assertDiffEntry(listener.event.diff.getDifferences()[0], 0, model[0], |
|
|
81 |
true); |
| 84 |
assertEquals(observable, listener.event.getObservableList()); |
82 |
assertEquals(observable, listener.event.getObservableList()); |
| 85 |
assertEquals(1, observable.size()); |
83 |
assertEquals(1, observable.size()); |
| 86 |
assertEquals(model[0], observable.get(0)); |
84 |
assertEquals(model[0], observable.get(0)); |
|
Lines 88-143
Link Here
|
| 88 |
selectionProvider.setSelection(new StructuredSelection(model[1])); |
86 |
selectionProvider.setSelection(new StructuredSelection(model[1])); |
| 89 |
assertEquals(2, listener.count); |
87 |
assertEquals(2, listener.count); |
| 90 |
assertEquals(2, listener.event.diff.getDifferences().length); |
88 |
assertEquals(2, listener.event.diff.getDifferences().length); |
| 91 |
assertDiffEntry(listener.event.diff.getDifferences()[0], 0, model[1], true); |
89 |
assertDiffEntry(listener.event.diff.getDifferences()[0], 0, model[1], |
| 92 |
assertDiffEntry(listener.event.diff.getDifferences()[1], 1, model[0], false); |
90 |
true); |
|
|
91 |
assertDiffEntry(listener.event.diff.getDifferences()[1], 1, model[0], |
| 92 |
false); |
| 93 |
assertEquals(observable, listener.event.getObservableList()); |
93 |
assertEquals(observable, listener.event.getObservableList()); |
| 94 |
assertEquals(1, observable.size()); |
94 |
assertEquals(1, observable.size()); |
| 95 |
assertEquals(model[1], observable.get(0)); |
95 |
assertEquals(model[1], observable.get(0)); |
| 96 |
|
96 |
|
| 97 |
selectionProvider.setSelection(new StructuredSelection(new Object[]{model[2],model[3]})); |
97 |
selectionProvider.setSelection(new StructuredSelection(new Object[] { |
|
|
98 |
model[2], model[3] })); |
| 98 |
assertEquals(3, listener.count); |
99 |
assertEquals(3, listener.count); |
| 99 |
assertEquals(3, listener.event.diff.getDifferences().length); |
100 |
assertEquals(3, listener.event.diff.getDifferences().length); |
| 100 |
assertDiffEntry(listener.event.diff.getDifferences()[0], 0, model[2], true); |
101 |
assertDiffEntry(listener.event.diff.getDifferences()[0], 0, model[2], |
| 101 |
assertDiffEntry(listener.event.diff.getDifferences()[1], 1, model[3], true); |
102 |
true); |
| 102 |
assertDiffEntry(listener.event.diff.getDifferences()[2], 2, model[1], false); |
103 |
assertDiffEntry(listener.event.diff.getDifferences()[1], 1, model[3], |
|
|
104 |
true); |
| 105 |
assertDiffEntry(listener.event.diff.getDifferences()[2], 2, model[1], |
| 106 |
false); |
| 103 |
assertEquals(observable, listener.event.getObservableList()); |
107 |
assertEquals(observable, listener.event.getObservableList()); |
| 104 |
assertEquals(2, observable.size()); |
108 |
assertEquals(2, observable.size()); |
| 105 |
assertEquals(model[2], observable.get(0)); |
109 |
assertEquals(model[2], observable.get(0)); |
| 106 |
assertEquals(model[3], observable.get(1)); |
110 |
assertEquals(model[3], observable.get(1)); |
| 107 |
|
111 |
|
| 108 |
selectionProvider.setSelection(StructuredSelection.EMPTY); |
112 |
selectionProvider.setSelection(StructuredSelection.EMPTY); |
| 109 |
assertEquals(4, listener.count); |
113 |
assertEquals(4, listener.count); |
| 110 |
assertEquals(2, listener.event.diff.getDifferences().length); |
114 |
assertEquals(2, listener.event.diff.getDifferences().length); |
| 111 |
assertDiffEntry(listener.event.diff.getDifferences()[0], 1, model[3], false); |
115 |
assertDiffEntry(listener.event.diff.getDifferences()[0], 1, model[3], |
| 112 |
assertDiffEntry(listener.event.diff.getDifferences()[1], 0, model[2], false); |
116 |
false); |
|
|
117 |
assertDiffEntry(listener.event.diff.getDifferences()[1], 0, model[2], |
| 118 |
false); |
| 113 |
assertEquals(observable, listener.event.getObservableList()); |
119 |
assertEquals(observable, listener.event.getObservableList()); |
| 114 |
assertEquals(0, observable.size()); |
120 |
assertEquals(0, observable.size()); |
| 115 |
|
121 |
|
| 116 |
observable.add(model[1]); |
122 |
observable.add(model[1]); |
| 117 |
assertEquals(5, listener.count); |
123 |
assertEquals(5, listener.count); |
| 118 |
assertEquals(1, listener.event.diff.getDifferences().length); |
124 |
assertEquals(1, listener.event.diff.getDifferences().length); |
| 119 |
assertDiffEntry(listener.event.diff.getDifferences()[0], 0, model[1], true); |
125 |
assertDiffEntry(listener.event.diff.getDifferences()[0], 0, model[1], |
|
|
126 |
true); |
| 120 |
assertEquals(observable, listener.event.getObservableList()); |
127 |
assertEquals(observable, listener.event.getObservableList()); |
| 121 |
assertEquals(1, ((IStructuredSelection)viewer.getSelection()).size()); |
128 |
assertEquals(1, ((IStructuredSelection) viewer.getSelection()).size()); |
| 122 |
|
129 |
|
| 123 |
observable.add(0, model[2]); |
130 |
observable.add(0, model[2]); |
| 124 |
assertEquals(6, listener.count); |
131 |
assertEquals(6, listener.count); |
| 125 |
assertEquals(1, listener.event.diff.getDifferences().length); |
132 |
assertEquals(1, listener.event.diff.getDifferences().length); |
| 126 |
// This is a bit surprising (we added at index 0 but the event says index 1). |
133 |
// This is a bit surprising (we added at index 0 but the event says |
| 127 |
// It is to the fact that the observable list tracks the underlying selection |
134 |
// index 1). |
|
|
135 |
// It is to the fact that the observable list tracks the underlying |
| 136 |
// selection |
| 128 |
// provider's notion of which element is at which index. |
137 |
// provider's notion of which element is at which index. |
| 129 |
assertDiffEntry(listener.event.diff.getDifferences()[0], 1, model[2], true); |
138 |
assertDiffEntry(listener.event.diff.getDifferences()[0], 0, model[2], |
|
|
139 |
true); |
| 130 |
assertEquals(observable, listener.event.getObservableList()); |
140 |
assertEquals(observable, listener.event.getObservableList()); |
| 131 |
assertEquals(2, ((IStructuredSelection)viewer.getSelection()).size()); |
141 |
assertEquals(2, ((IStructuredSelection) viewer.getSelection()).size()); |
| 132 |
|
142 |
|
| 133 |
observable.clear(); |
143 |
observable.clear(); |
| 134 |
assertEquals(7, listener.count); |
144 |
assertEquals(7, listener.count); |
| 135 |
assertEquals(2, listener.event.diff.getDifferences().length); |
145 |
assertEquals(2, listener.event.diff.getDifferences().length); |
| 136 |
assertDiffEntry(listener.event.diff.getDifferences()[0], 1, model[2], false); |
146 |
assertDiffEntry(listener.event.diff.getDifferences()[0], 0, model[1], |
| 137 |
assertDiffEntry(listener.event.diff.getDifferences()[1], 0, model[1], false); |
147 |
false); |
|
|
148 |
assertDiffEntry(listener.event.diff.getDifferences()[1], 0, model[2], |
| 149 |
false); |
| 138 |
assertEquals(observable, listener.event.getObservableList()); |
150 |
assertEquals(observable, listener.event.getObservableList()); |
| 139 |
assertEquals(0, ((IStructuredSelection)viewer.getSelection()).size()); |
151 |
assertEquals(0, ((IStructuredSelection) viewer.getSelection()).size()); |
| 140 |
} |
152 |
} |
| 141 |
|
153 |
|
| 142 |
/** |
154 |
/** |
| 143 |
* @param diffEntry |
155 |
* @param diffEntry |