Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 208434 | Differences between
and this patch

Collapse All | Expand All

(-)src/org/eclipse/core/databinding/observable/list/ObservableList.java (-5 / +21 lines)
Lines 98-108 Link Here
98
98
99
	public Iterator iterator() {
99
	public Iterator iterator() {
100
		getterCalled();
100
		getterCalled();
101
		final Iterator wrappedIterator = wrappedList.iterator();
101
		final ListIterator wrappedIterator = wrappedList.listIterator();
102
		return new Iterator() {
102
		return new Iterator() {
103
			
104
			int currentIndex = -1;
103
105
104
			public void remove() {
106
			public void remove() {
105
				throw new UnsupportedOperationException();
107
				ObservableList.this.remove(currentIndex);
108
				currentIndex = -1;
106
			}
109
			}
107
110
108
			public boolean hasNext() {
111
			public boolean hasNext() {
Lines 110-115 Link Here
110
			}
113
			}
111
114
112
			public Object next() {
115
			public Object next() {
116
				currentIndex = wrappedIterator.nextIndex();
113
				return wrappedIterator.next();
117
				return wrappedIterator.next();
114
			}
118
			}
115
		};
119
		};
Lines 176-181 Link Here
176
		final ListIterator wrappedIterator = wrappedList.listIterator(index);
180
		final ListIterator wrappedIterator = wrappedList.listIterator(index);
177
		return new ListIterator() {
181
		return new ListIterator() {
178
182
183
			int currentIndex = -1;
184
			boolean currentIsPrevious;
185
			
179
			public int nextIndex() {
186
			public int nextIndex() {
180
				return wrappedIterator.nextIndex();
187
				return wrappedIterator.nextIndex();
181
			}
188
			}
Lines 185-191 Link Here
185
			}
192
			}
186
193
187
			public void remove() {
194
			public void remove() {
188
				throw new UnsupportedOperationException();
195
				ObservableList.this.remove(currentIndex);
189
			}
196
			}
190
197
191
			public boolean hasNext() {
198
			public boolean hasNext() {
Lines 197-215 Link Here
197
			}
204
			}
198
205
199
			public Object next() {
206
			public Object next() {
207
				currentIndex = wrappedIterator.nextIndex();
208
				currentIsPrevious = false;
200
				return wrappedIterator.next();
209
				return wrappedIterator.next();
201
			}
210
			}
202
211
203
			public Object previous() {
212
			public Object previous() {
213
				currentIndex = wrappedIterator.previousIndex();
214
				currentIsPrevious = true;
204
				return wrappedIterator.previous();
215
				return wrappedIterator.previous();
205
			}
216
			}
206
217
207
			public void add(Object o) {
218
			public void add(Object o) {
208
				throw new UnsupportedOperationException();
219
				if (currentIsPrevious) {
220
					ObservableList.this.add(++currentIndex, o);
221
					currentIsPrevious = false;
222
				} else {
223
					ObservableList.this.add(currentIndex++, o);
224
				}
209
			}
225
			}
210
226
211
			public void set(Object o) {
227
			public void set(Object o) {
212
				throw new UnsupportedOperationException();
228
				ObservableList.this.set(currentIndex, o);
213
			}
229
			}
214
		};
230
		};
215
    }
231
    }
(-)src/org/eclipse/core/tests/databinding/observable/list/WritableListTest.java (+24 lines)
Lines 14-19 Link Here
14
14
15
import java.util.ArrayList;
15
import java.util.ArrayList;
16
import java.util.Collections;
16
import java.util.Collections;
17
import java.util.ListIterator;
17
18
18
import junit.framework.Test;
19
import junit.framework.Test;
19
import junit.framework.TestCase;
20
import junit.framework.TestCase;
Lines 159-164 Link Here
159
		assertEquals(Realm.getDefault(), list.getRealm());
160
		assertEquals(Realm.getDefault(), list.getRealm());
160
		assertEquals(elementType, list.getElementType());
161
		assertEquals(elementType, list.getElementType());
161
	}
162
	}
163
	
164
	public void testListIterator() {
165
		RealmTester.setDefault(SWTObservables.getRealm(Display.getDefault()));
166
167
		Object elementType = String.class;
168
		WritableList list = WritableList.withElementType(elementType);
169
		
170
		list.add("zero");
171
		list.add("one");
172
		list.add("two");
173
		list.add("three");
174
		
175
		ListIterator li = list.listIterator(1);
176
		assertEquals("one", li.next());
177
		li.remove();
178
		assertEquals("two", li.next());
179
		li.add("one");
180
		assertEquals("one", li.previous());
181
		li.add("one and a half");
182
		assertEquals("one", list.get(1));
183
		assertEquals("one and a half", list.get(2));
184
		assertEquals("two", list.get(3));
185
	}
162
186
163
	public static Test suite() {
187
	public static Test suite() {
164
		Delegate delegate = new Delegate();
188
		Delegate delegate = new Delegate();

Return to bug 208434