public void listChanged(CollectionChangeEvent event) { CollectionDiffEntry<?>[] differences = event.getListDiff().getDifferences(); for (int i = 0; i < differences.length; i++) { CollectionDiffEntry<?> entry = differences[i]; if (entry.isAddition()) { knownElements.add(entry.getElement()); if (viewer instanceof AbstractListViewer) { ((AbstractListViewer) viewer).add(entry.getElement()); } else { ((TableViewer) viewer).insert(entry.getElement(), entry.getPosition()); } } else { if (viewer instanceof AbstractListViewer) { ((AbstractListViewer) viewer).remove(entry.getElement()); } else { ((TableViewer) viewer).remove(entry.getElement()); } knownElements.remove(entry.getElement()); } } }
public ListContentProvider(AbstractListViewer viewer) { this.viewer = viewer; }