With Eclipse 3.3.1.1 on win32:
I'm running into an exception adding a large number of items (>220) to
an SWT Tree. I'm using a TreeViewer that already has four items
displayed under the tree root. I call
TreeViewer.add(TreeViewer.getRoot(), Object[]) to add an array of over
400 items to the tree viewer in addition to the 4 already displayed.
Several of the items are filtered out before being passed to the SWT
Tree, so the ultimate number of items added is less.
During the add, I get the following exception:
Caused by: java.lang.IllegalArgumentException: Index out of bounds
at org.eclipse.swt.SWT.error(SWT.java:3547)
at org.eclipse.swt.SWT.error(SWT.java:3481)
at org.eclipse.swt.SWT.error(SWT.java:3452)
at org.eclipse.swt.widgets.TreeItem.findPrevious(TreeItem.java:210)
at org.eclipse.swt.widgets.TreeItem.<init>(TreeItem.java:119)
at
org.eclipse.jface.viewers.TreeViewer.createNewRowPart(TreeViewer.java:790)
at org.eclipse.jface.viewers.TreeViewer.newItem(TreeViewer.java:302)
at
org.eclipse.jface.viewers.AbstractTreeViewer.createTreeItem(AbstractTreeViewer.java:805)
at
org.eclipse.jface.viewers.AbstractTreeViewer.createAddedElements(AbstractTreeViewer.java:374)
at
org.eclipse.jface.viewers.AbstractTreeViewer.internalAdd(AbstractTreeViewer.java:265)
at org.eclipse.jface.viewers.TreeViewer.internalAdd(TreeViewer.java:645)
at
org.eclipse.jface.viewers.AbstractTreeViewer.add(AbstractTreeViewer.java:139)
at
com.beacon.discovery.ui.databinding.ObservableSetTreeContentProvider.addViewerElements(ObservableSetTreeContentProvider.java:25)
at
com.beacon.discovery.ui.databinding.ObservableSetStructuredContentProvider.doDiff(ObservableSetStructuredContentProvider.java:103)
at
com.beacon.discovery.ui.databinding.ObservableSetStructuredContentProvider.access$2(ObservableSetStructuredContentProvider.java:97)
at
com.beacon.discovery.ui.databinding.ObservableSetStructuredContentProvider$1.handleSetChange(ObservableSetStructuredContentProvider.java:72)
at
org.eclipse.core.databinding.observable.set.SetChangeEvent.dispatch(SetChangeEvent.java:61)
at
org.eclipse.core.databinding.observable.ChangeManager.fireEvent(ChangeManager.java:128)
at
org.eclipse.core.databinding.observable.ChangeSupport.fireEvent(ChangeSupport.java:38)
at
org.eclipse.core.databinding.observable.set.AbstractObservableSet.fireSetChange(AbstractObservableSet.java:80)
at
com.beacon.discovery.ui.models.BidOfferMessageManager.access$0(BidOfferMessageManager.java:1)
at
com.beacon.discovery.ui.models.BidOfferMessageManager$Dispatcher.fireSetChange(BidOfferMessageManager.java:137)
at
com.beacon.discovery.ui.util.SetChangeDispatcher.run(SetChangeDispatcher.java:54)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
at
org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:123)
... 23 more
At AbstractTreeViewer.java:374, the loop variable is 218, so 218 of
the items have already been created in the tree, and the index for the
new item when the exception is thrown is 222.
Does anyone have any ideas what could be causing this error. Is te
bug mine or in SWT?
Thanks
Chris Audley