This is a simple problem with easy fix. But I don't know why it happened and cannot find an answer on google.I need to open a JFace dialog which contains a CheckBoxTableViewer:
protected void createContent(Composite parent) {
cbtViewer = CheckboxTableViewer.newCheckList(parent, SWT.SINGLE | SWT.BORDER | SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL);
cbtViewer.setInput(items);
}
Where items is an instance of List defined as
protected List<T> items;
public void setItems(List<T> items) {
this.items = items;
}
In the caller of the dialog, I provide items in this way:
dialog = new SaveDialog(shell);
TestItem[] items = getTestItems();
dialog.setItems(Arrays.asList(items));
This gives me null argument error when dialog invokes method setItems(). But this worked:
dialog.setItems(new ArrayList(Arrays.asList(items)));
I got some information about Arrays.asList() here Create ArrayList from array, but still don't understand why checkbox table viewer's setInput() method throws null argument error on a not-null object? Thanks
PS: I know the difference between Arrays.asList() and new ArrayList(Arrays.asList()). What I don't understand is why checkbox table viewer cannot take the list object returned by Arrays.asList() as its input.
Stack trace for the failed test case. This is not a unit test. I need to see the dialog with its UI.
org.eclipse.core.runtime.AssertionFailedException: null argument:
at org.eclipse.core.runtime.Assert.isNotNull(Assert.java:85)
at org.eclipse.core.runtime.Assert.isNotNull(Assert.java:73)
at org.eclipse.jface.viewers.StructuredViewer.assertElementsNotNull(StructuredViewer.java:597)
at org.eclipse.jface.viewers.StructuredViewer.getRawChildren(StructuredViewer.java:993)
at org.eclipse.jface.viewers.ColumnViewer.getRawChildren(ColumnViewer.java:699)
at org.eclipse.jface.viewers.AbstractTableViewer.getRawChildren(AbstractTableViewer.java:1095)
at org.eclipse.jface.viewers.StructuredViewer.getFilteredChildren(StructuredViewer.java:900)
at org.eclipse.jface.viewers.StructuredViewer.getSortedChildren(StructuredViewer.java:1049)
at org.eclipse.jface.viewers.AbstractTableViewer.internalRefreshAll(AbstractTableViewer.java:701)
at org.eclipse.jface.viewers.AbstractTableViewer.internalRefresh(AbstractTableViewer.java:649)
at org.eclipse.jface.viewers.AbstractTableViewer.internalRefresh(AbstractTableViewer.java:636)
at org.eclipse.jface.viewers.AbstractTableViewer$1.run(AbstractTableViewer.java:592)
at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1427)
at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1388)
at org.eclipse.jface.viewers.CheckboxTableViewer.preservingSelection(CheckboxTableViewer.java:349)
at org.eclipse.jface.viewers.AbstractTableViewer.inputChanged(AbstractTableViewer.java:590)
at org.eclipse.jface.viewers.ContentViewer.setInput(ContentViewer.java:280)
at org.eclipse.jface.viewers.StructuredViewer.setInput(StructuredViewer.java:1674)
at test.app.internal.widget.dialog.ClientMultiSelectionDialog.createContent(ClientMultiSelectionDialog.java:59)
at test.app.internal.widget.tab.SaveDialog.createContent(SaveDialog.java:109)
at test.app.internal.widget.tab.SaveDialog.createDialogArea(SaveDialog.java:60)
at org.eclipse.jface.dialogs.Dialog.createContents(Dialog.java:745)
at org.eclipse.jface.window.Window.create(Window.java:444)
at org.eclipse.jface.dialogs.Dialog.create(Dialog.java:1071)
at org.eclipse.jface.window.Window.open(Window.java:822)
at test.app.internal.AppTester.testSaveDialog(AppTester.java:136)
at test.app.internal.AppTester.testDialog(AppTester.java:99)
at test.app.internal.EntryPoint$12$1.widgetSelected(EntryPoint.java:611)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:262)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:86)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:700)
at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:602)
at org.eclipse.swt.widgets.Display.executeNextEvent(Display.java:1212)
at org.eclipse.swt.widgets.Display.runPendingMessages(Display.java:1193)
at org.eclipse.swt.widgets.Display.safeReadAndDispatch(Display.java:1176)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1168)
at org.eclipse.rap.rwt.application.AbstractEntryPoint.createUI(AbstractEntryPoint.java:62)
at org.eclipse.rap.rwt.internal.lifecycle.RWTLifeCycle.createUI(RWTLifeCycle.java:172)
at org.eclipse.rap.rwt.internal.lifecycle.RWTLifeCycle$UIThreadController.run(RWTLifeCycle.java:284)
at java.lang.Thread.run(Thread.java:745)
at org.eclipse.rap.rwt.internal.lifecycle.UIThread.run(UIThread.java:105)