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() {

        /** [EMAIL PROTECTED] */

        @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

 

_______________________________________________
nebula-dev mailing list
[email protected]
https://dev.eclipse.org/mailman/listinfo/nebula-dev

Reply via email to