Overview | Package | Class | Use | Tree | Deprecated | Index | Help
| Eclipse Platform Release 3.0
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.eclipse.swt.custom
Class TableCursor

    java.lang.Object
      org.eclipse.swt.widgets.Widget
          org.eclipse.swt.widgets.Control
              org.eclipse.swt.widgets.Scrollable
                  org.eclipse.swt.widgets.Composite
                      org.eclipse.swt.widgets.Canvas
                          org.eclipse.swt.custom.TableCursor

All Implemented Interfaces:
  Drawable

public class TableCursor
extends Canvas

A TableCursor provides a way for the user to navigate around a Table using the keyboard. It also provides a mechanism for selecting an individual cell in a table.

Here is an example of using a TableCursor to navigate to a cell and then edit it. ``

      public static void main(String[] args) {
    		Display display = new Display();
    		Shell shell = new Shell(display);
    		shell.setLayout(new GridLayout());

    		// create a a table with 3 columns and fill with data
    		final Table table = new Table(shell, SWT.BORDER | SWT.MULTI | SWT.FULL_SELECTION);
    		table.setLayoutData(new GridData(GridData.FILL_BOTH));
    		TableColumn column1 = new TableColumn(table, SWT.NONE);
    		TableColumn column2 = new TableColumn(table, SWT.NONE);
    		TableColumn column3 = new TableColumn(table, SWT.NONE);
    		for (int i = 0; i < 100; i++) {
    			TableItem item = new TableItem(table, SWT.NONE);
    			item.setText(new String[] { "cell "+i+" 0", "cell "+i+" 1", "cell "+i+" 2"});
    		}
    		column1.pack();
    		column2.pack();
    		column3.pack();

    		// create a TableCursor to navigate around the table
    		final TableCursor cursor = new TableCursor(table, SWT.NONE);
    		// create an editor to edit the cell when the user hits "ENTER"
    		// while over a cell in the table
    		final ControlEditor editor = new ControlEditor(cursor);
    		editor.grabHorizontal = true;
    		editor.grabVertical = true;

    		cursor.addSelectionListener(new SelectionAdapter() {
    			// when the TableEditor is over a cell, select the corresponding row in
    			// the table
    			public void widgetSelected(SelectionEvent e) {
    				table.setSelection(new TableItem[] {cursor.getRow()});
    			}
    			// when the user hits "ENTER" in the TableCursor, pop up a text editor so that
    			// they can change the text of the cell
    			public void widgetDefaultSelected(SelectionEvent e){
    				final Text text = new Text(cursor, SWT.NONE);
    				TableItem row = cursor.getRow();
    				int column = cursor.getColumn();
    				text.setText(row.getText(column));
    				text.addKeyListener(new KeyAdapter() {
    					public void keyPressed(KeyEvent e) {
    						// close the text editor and copy the data over
    						// when the user hits "ENTER"
    						if (e.character == SWT.CR) {
    							TableItem row = cursor.getRow();
    							int column = cursor.getColumn();
    							row.setText(column, text.getText());
    							text.dispose();
    						}
    						// close the text editor when the user hits "ESC"
    						if (e.character == SWT.ESC) {
    							text.dispose();
    						}
    					}
    				});
    				editor.setEditor(text);
    				text.setFocus();
    			}
    		});
    		// Hide the TableCursor when the user hits the "MOD1" or "MOD2" key.
    		// This alows the user to select multiple items in the table.
    		cursor.addKeyListener(new KeyAdapter() {
    			public void keyPressed(KeyEvent e) {
    				if (e.keyCode == SWT.MOD1 ||
    				    e.keyCode == SWT.MOD2 ||
    				    (e.stateMask & SWT.MOD1) != 0 ||
    				    (e.stateMask & SWT.MOD2) != 0) {
    					cursor.setVisible(false);
    				}
    			}
    		});
    		// Show the TableCursor when the user releases the "MOD2" or "MOD1" key.
    		// This signals the end of the multiple selection task.
    		table.addKeyListener(new KeyAdapter() {
    			public void keyReleased(KeyEvent e) {
    				if (e.keyCode == SWT.MOD1 && (e.stateMask & SWT.MOD2) != 0) return;
    				if (e.keyCode == SWT.MOD2 && (e.stateMask & SWT.MOD1) != 0) return;
    				if (e.keyCode != SWT.MOD1 && (e.stateMask & SWT.MOD1) != 0) return;
    				if (e.keyCode != SWT.MOD2 && (e.stateMask & SWT.MOD2) != 0) return;

    				TableItem[] selection = table.getSelection();
    				TableItem row = (selection.length == 0) ? table.getItem(table.getTopIndex()) : selection[0];
    				table.showItem(row);
    				cursor.setSelection(row, 0);
    				cursor.setVisible(true);
    				cursor.setFocus();
    			}
    		});

    		shell.open();
    		while (!shell.isDisposed()) {
    			if (!display.readAndDispatch())
    				display.sleep();
    		}
    		display.dispose();
    	}

Styles:
  BORDER
Events:
  Selection, DefaultSelection

Since:
  2.0

Field Summary

Fields inherited from class org.eclipse.swt.widgets.Control
`handle`

Constructor Summary
`TableCursor(Table parent, int style)` Constructs a new instance of this class given its parent table and a style value describing its behavior and appearance.

Method Summary
`void` | `addSelectionListener(SelectionListener listener)` Adds the listener to the collection of listeners who will be notified when the receiver's selection changes, by sending it one of the messages defined in the `SelectionListener` interface.
`int` | `getColumn()` Returns the column over which the TableCursor is positioned.
`TableItem` | `getRow()` Returns the row over which the TableCursor is positioned.
`void` | `removeSelectionListener(SelectionListener listener)` Removes the listener from the collection of listeners who will be notified when the receiver's selection changes.
`void` | `setBackground(Color color)` Sets the receiver's background color to the color specified by the argument, or to the default system color for the control if the argument is null.
`void` | `setForeground(Color color)` Sets the receiver's foreground color to the color specified by the argument, or to the default system color for the control if the argument is null.
`void` | `setSelection(int row, int column)` Positions the TableCursor over the cell at the given row and column in the parent table.
`void` | `setSelection(TableItem row, int column)` Positions the TableCursor over the cell at the given row and column in the parent table.
`void` | `setVisible(boolean visible)` Marks the receiver as visible if the argument is `true`, and marks it invisible otherwise.

Methods inherited from class org.eclipse.swt.widgets.Canvas
`getCaret, scroll, setCaret, setFont`

Methods inherited from class org.eclipse.swt.widgets.Composite
`checkSubclass, computeSize, getChildren, getLayout, getTabList, layout, layout, setFocus, setLayout, setTabList`

Methods inherited from class org.eclipse.swt.widgets.Scrollable
`computeTrim, getClientArea, getHorizontalBar, getVerticalBar`

Methods inherited from class org.eclipse.swt.widgets.Control
`addControlListener, addFocusListener, addHelpListener, addKeyListener, addMouseListener, addMouseMoveListener, addMouseTrackListener, addPaintListener, addTraverseListener, computeSize, forceFocus, getAccessible, getBackground, getBorderWidth, getBounds, getEnabled, getFont, getForeground, getLayoutData, getLocation, getMenu, getMonitor, getParent, getShell, getSize, getToolTipText, getVisible, internal_dispose_GC, internal_new_GC, isEnabled, isFocusControl, isReparentable, isVisible, moveAbove, moveBelow, pack, pack, redraw, redraw, removeControlListener, removeFocusListener, removeHelpListener, removeKeyListener, removeMouseListener, removeMouseMoveListener, removeMouseTrackListener, removePaintListener, removeTraverseListener, setBounds, setBounds, setCapture, setCursor, setEnabled, setLayoutData, setLocation, setLocation, setMenu, setParent, setRedraw, setSize, setSize, setToolTipText, toControl, toControl, toDisplay, toDisplay, traverse, update`

Methods inherited from class org.eclipse.swt.widgets.Widget
`addDisposeListener, addListener, checkWidget, dispose, getData, getData, getDisplay, getStyle, isDisposed, isListening, notifyListeners, removeDisposeListener, removeListener, removeListener, setData, setData, toString`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Constructor Detail

### TableCursor

    public TableCursor(Table parent,
                       int style)

  Constructs a new instance of this class given its parent table and a style value describing its behavior and appearance.

  The style value is either one of the style constants defined in class `SWT` which is applicable to instances of this class, or must be built by bitwise OR'ing together (that is, using the `int` "|" operator) two or more of those `SWT` style constants. The class description lists the style constants that are applicable to the class. Style bits are also inherited from superclasses.

Parameters:
  `parent` - a Table control which will be the parent of the new instance (cannot be null)
  `style` - the style of control to construct
Throws:
  `IllegalArgumentException` -
  - ERROR_NULL_ARGUMENT - if the parent is null
  `SWTException` -
  - ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the parent
  - ERROR_INVALID_SUBCLASS - if this class is not an allowed subclass
See Also:
  `SWT.BORDER`, `Widget.checkSubclass()`, `Widget.getStyle()`

Method Detail

### addSelectionListener

    public void addSelectionListener(SelectionListener listener)

  Adds the listener to the collection of listeners who will be notified when the receiver's selection changes, by sending it one of the messages defined in the `SelectionListener` interface.

  When `widgetSelected` is called, the item field of the event object is valid. If the reciever has `SWT.CHECK` style set and the check selection changes, the event object detail field contains the value `SWT.CHECK`. `widgetDefaultSelected` is typically called when an item is double-clicked.

  Parameters:
    `listener` - the listener which should be notified
  Throws:
    `IllegalArgumentException` -
    - ERROR_NULL_ARGUMENT - if the listener is null
    `SWTException` -
    - ERROR_WIDGET_DISPOSED - if the receiver has been disposed
    - ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
  See Also:
    `SelectionListener`, `SelectionEvent`, `removeSelectionListener(SelectionListener)`

### setVisible

    public void setVisible(boolean visible)

  Description copied from class: `Control`
  Marks the receiver as visible if the argument is `true`, and marks it invisible otherwise.

  If one of the receiver's ancestors is not visible or some other condition makes the receiver not visible, marking it visible may not actually cause it to be displayed.

  Overrides:
    `setVisible` in class `Control`
  Parameters:
    `visible` - the new visibility state

### removeSelectionListener

    public void removeSelectionListener(SelectionListener listener)

  Removes the listener from the collection of listeners who will be notified when the receiver's selection changes.

  Parameters:
    `listener` - the listener which should no longer be notified
  Throws:
    `IllegalArgumentException` -
    - ERROR_NULL_ARGUMENT - if the listener is null
    `SWTException` -
    - ERROR_WIDGET_DISPOSED - if the receiver has been disposed
    - ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
  Since:
    3.0
  See Also:
    `SelectionListener`, `addSelectionListener(SelectionListener)`

### getColumn

    public int getColumn()

  Returns the column over which the TableCursor is positioned.

  Returns:
    the column for the current position
  Throws:
    `SWTException` -
    - ERROR_WIDGET_DISPOSED - if the receiver has been disposed
    - ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver

### getRow

    public TableItem getRow()

  Returns the row over which the TableCursor is positioned.

  Returns:
    the item for the current position
  Throws:
    `SWTException` -
    - ERROR_WIDGET_DISPOSED - if the receiver has been disposed
    - ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver

### setBackground

    public void setBackground(Color color)

  Description copied from class: `Control`
  Sets the receiver's background color to the color specified by the argument, or to the default system color for the control if the argument is null.

  Overrides:
    `setBackground` in class `Control`
  Parameters:
    `color` - the new color (or null)

### setForeground

    public void setForeground(Color color)

  Description copied from class: `Control`
  Sets the receiver's foreground color to the color specified by the argument, or to the default system color for the control if the argument is null.

  Overrides:
    `setForeground` in class `Control`
  Parameters:
    `color` - the new color (or null)

### setSelection

    public void setSelection(int row,
                             int column)

  Positions the TableCursor over the cell at the given row and column in the parent table.

  Parameters:
    `row` - the index of the row for the cell to select
    `column` - the index of column for the cell to select
  Throws:
    `SWTException` -
    - ERROR_WIDGET_DISPOSED - if the receiver has been disposed
    - ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver

### setSelection

    public void setSelection(TableItem row,
                             int column)

  Positions the TableCursor over the cell at the given row and column in the parent table.

  Parameters:
    `row` - the TableItem of the row for the cell to select
    `column` - the index of column for the cell to select
  Throws:
    `SWTException` -
    - ERROR_WIDGET_DISPOSED - if the receiver has been disposed
    - ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
| Eclipse Platform Release 3.0
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Guidelines for using Eclipse APIs.

Copyright (c) IBM Corp. and others 2000, 2004. All rights reserved.