Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 492780

Summary: Empty Virtual Nebula Grid throws exception
Product: [RT] RAP Reporter: Chris Fairhall <chris>
Component: RWTAssignee: Project Inbox <rap-inbox>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: P3    
Version: 3.1   
Target Milestone: 3.1 M7   
Hardware: PC   
OS: Windows 8   
Whiteboard:

Description Chris Fairhall CLA 2016-05-01 16:40:36 EDT
When a Grid control has no items and is created as virtual, an exception is thrown

Modified Grid Demo to reproduce:
public class NebulaGridExamplePage implements IExamplePage {

	public void createControl(Composite parent) {
		parent.setLayout(ExampleUtil.createGridLayout(1, true, true, true));
		ExampleUtil.createHeading(parent, "Profit and Loss Balance Sheet", 1);
		parent.setLayoutData(ExampleUtil.createFillData());
		Grid grid = createGrid(parent);
		GridColumn column = new GridColumn(grid, SWT.LEFT);
		column.setWidth(100);
	}

	private Grid createGrid(Composite parent) {
		Grid grid = new Grid(parent, SWT.V_SCROLL | SWT.BORDER | SWT.VIRTUAL);
		GridData tableLayoutData = ExampleUtil.createFillData();
		tableLayoutData.verticalIndent = 10;
		grid.setLayoutData(tableLayoutData);
		return grid;
	}
}


Exception:
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
	at java.util.ArrayList.rangeCheck(ArrayList.java:653)
	at java.util.ArrayList.get(ArrayList.java:429)
	at org.eclipse.nebula.widgets.grid.Grid.doRedraw(Grid.java:2492)
	at org.eclipse.nebula.widgets.grid.Grid.access$8(Grid.java:2489)
	at org.eclipse.nebula.widgets.grid.Grid$GridAdapter.doRedraw(Grid.java:3181)
	at org.eclipse.nebula.widgets.grid.internal.gridkit.GridLCA.doRedrawFake(GridLCA.java:163)
	at org.eclipse.swt.widgets.Display.executeNextRedraw(Display.java:1332)
	at org.eclipse.swt.widgets.Display.runPendingMessages(Display.java:1204)
	at org.eclipse.swt.widgets.Display.safeReadAndDispatch(Display.java:1181)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1173)
	at org.eclipse.rap.rwt.application.AbstractEntryPoint.createUI(AbstractEntryPoint.java:69)
	at org.eclipse.rap.rwt.internal.lifecycle.RWTLifeCycle.createUI(RWTLifeCycle.java:177)
	at org.eclipse.rap.rwt.internal.lifecycle.RWTLifeCycle$UIThreadController.run(RWTLifeCycle.java:290)
	at java.lang.Thread.run(Thread.java:745)
	at org.eclipse.rap.rwt.internal.lifecycle.UIThread.run(UIThread.java:107)
Comment 1 Ivan Furnadjiev CLA 2016-05-03 03:56:19 EDT
Fixed with change https://git.eclipse.org/r/#/c/71852/