Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[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

 


Back to the top