| [nebula-dev] Pressing Arrow Down Key right after focusing and selection of some cell in Grid programmatically leads to NullPointerException. |
|
Hi guys, When I try to focus and select some cell in
a grid and right after this to press “Arrow Down” key, I have got
NullPointerException. I have used the first snippet of grid (and
changed it a little bit J) to reproduce the problem. Here is the snippet: package com.maconomy.widgets.snippets; import
org.eclipse.nebula.widgets.grid.Grid; import
org.eclipse.nebula.widgets.grid.GridColumn; import
org.eclipse.nebula.widgets.grid.GridItem; import org.eclipse.swt.SWT; import
org.eclipse.swt.events.SelectionAdapter; import
org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; /** * Creates a simple grid and a button
for focusing and selection of the first cell * of the grid. */ public class
MxSnippet001GridCellFocusingAndSelection { /** * Main entry. * @param args command line
arguments */ public static void main(final String
[] args) { final
Display display = new Display (); final Shell
shell = new Shell (display); //
shell.setLayout(new FillLayout()); // The
following code line was inserted instead of the line commented out above in // order to
be able to add a button below the grid.
shell.setLayout(new GridLayout(1, false)); final Grid
grid = new Grid(shell, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL); grid.setHeaderVisible(true); final
GridColumn column = new GridColumn(grid, SWT.NONE);
column.setTree(true);
column.setText("Column 1");
column.setWidth(100); final
GridItem item1 = new GridItem(grid, SWT.NONE);
item1.setText("Root Item"); // final
GridItem item2 = new GridItem(item1, SWT.NONE); // The
following line was inserted instead of the line commented out above. final
GridItem item2 = new GridItem(grid, SWT.NONE);
item2.setText("Second item"); // final
GridItem item3 = new GridItem(item2, SWT.NONE); // The
following line was inserted instead of the line commented out above. final
GridItem item3 = new GridItem(grid, SWT.NONE);
item3.setText("Third Item"); // The following
code is added to demonstrate the defect with the grid cell // focusing
and selection.
grid.setCellSelectionEnabled(true); // The
following button is used to focus and select the first cell of the grid. // Try to
press "Arrow Down" key right after clicking on this button. final Button
button = new Button(shell, SWT.BORDER);
button.addSelectionListener(new SelectionAdapter() {
/** {@inheritDoc} */
@Override
public void widgetSelected(final SelectionEvent e) {
grid.forceFocus();
// We tried to use the following three code lines in order to both focus and
// select some cell of the grid, but as it was found, the third code line leads
// to the NullPointerException. If we do not use the third line, the cell is in
// fact selected, but NOT FOCUSED (and focusing is what we need).
grid.setCellSelection(new Point(0, 0));
grid.setFocusItem(grid.getItem(0));
// When you comment out the following code line the first cell will be selected
// but NOT FOCUSED. You will see that the first cell of the grid being not
// focused is indicated by the fact that the border of the cell is not present.
// If you do not comment the line the first cell will be both focused and
selected,
// but pressing "Arrow Down" key leads to NullPointerException.
grid.setFocusColumn(grid.getColumn(0));
} });
button.setText("Click this button to select and focus the first cell of
the grid. " +
"Right after clicking this button press \"Arrow Down\" key.");
//shell.setSize(200,200); // The
following line was inserted instead of the line commented out above.
shell.pack(); shell.open
(); while
(!shell.isDisposed()) {
if (!display.readAndDispatch ()) display.sleep (); }
display.dispose (); } } Do you know why it might be a problem? Best regards, Vadym Yepishov |