Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

org.eclipse.swt.custom
Class TableCursor  view TableCursor download TableCursor.java

java.lang.Object
  extended byorg.eclipse.swt.widgets.Widget
      extended byorg.eclipse.swt.widgets.Control
          extended byorg.eclipse.swt.widgets.Scrollable
              extended byorg.eclipse.swt.widgets.Composite
                  extended byorg.eclipse.swt.widgets.Canvas
                      extended byorg.eclipse.swt.custom.TableCursor
All Implemented Interfaces:
org.eclipse.swt.graphics.Drawable

public class TableCursor
extends org.eclipse.swt.widgets.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
(package private) static int BACKGROUND
           
(package private)  org.eclipse.swt.widgets.TableColumn column
           
(package private)  org.eclipse.swt.widgets.Listener disposeColumnListener
           
(package private)  org.eclipse.swt.widgets.Listener disposeItemListener
           
(package private) static int FOREGROUND
           
(package private)  org.eclipse.swt.widgets.Listener resizeListener
           
(package private)  org.eclipse.swt.widgets.TableItem row
           
(package private)  org.eclipse.swt.widgets.Table table
           
(package private)  org.eclipse.swt.widgets.Listener tableListener
           
 
Fields inherited from class org.eclipse.swt.widgets.Canvas
 
Fields inherited from class org.eclipse.swt.widgets.Composite
embeddedHandle
 
Fields inherited from class org.eclipse.swt.widgets.Scrollable
 
Fields inherited from class org.eclipse.swt.widgets.Control
 
Fields inherited from class org.eclipse.swt.widgets.Widget
handle
 
Constructor Summary
TableCursor(org.eclipse.swt.widgets.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(org.eclipse.swt.events.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.
(package private)  void dispose(org.eclipse.swt.widgets.Event event)
           
 int getColumn()
          Returns the column over which the TableCursor is positioned.
 org.eclipse.swt.widgets.TableItem getRow()
          Returns the row over which the TableCursor is positioned.
(package private)  void keyDown(org.eclipse.swt.widgets.Event event)
           
(package private)  void paint(org.eclipse.swt.widgets.Event event)
           
 void removeSelectionListener(org.eclipse.swt.events.SelectionListener listener)
          Removes the listener from the collection of listeners who will be notified when the receiver's selection changes.
(package private)  void resize()
           
 void setBackground(org.eclipse.swt.graphics.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(org.eclipse.swt.graphics.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.
(package private)  void setRowColumn(int row, int column, boolean notify)
           
(package private)  void setRowColumn(org.eclipse.swt.widgets.TableItem row, org.eclipse.swt.widgets.TableColumn column, boolean notify)
           
 void setSelection(int row, int column)
          Positions the TableCursor over the cell at the given row and column in the parent table.
 void setSelection(org.eclipse.swt.widgets.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.
(package private)  void tableFocusIn(org.eclipse.swt.widgets.Event event)
           
(package private)  void tableMouseDown(org.eclipse.swt.widgets.Event event)
           
(package private)  void traverse(org.eclipse.swt.widgets.Event event)
           
 
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, getBorderWidth, 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, 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
 

Field Detail

table

org.eclipse.swt.widgets.Table table

row

org.eclipse.swt.widgets.TableItem row

column

org.eclipse.swt.widgets.TableColumn column

tableListener

org.eclipse.swt.widgets.Listener tableListener

resizeListener

org.eclipse.swt.widgets.Listener resizeListener

disposeItemListener

org.eclipse.swt.widgets.Listener disposeItemListener

disposeColumnListener

org.eclipse.swt.widgets.Listener disposeColumnListener

BACKGROUND

static final int BACKGROUND
See Also:
Constant Field Values

FOREGROUND

static final int FOREGROUND
See Also:
Constant Field Values
Constructor Detail

TableCursor

public TableCursor(org.eclipse.swt.widgets.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.

Method Detail

addSelectionListener

public void addSelectionListener(org.eclipse.swt.events.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.


dispose

void dispose(org.eclipse.swt.widgets.Event event)

keyDown

void keyDown(org.eclipse.swt.widgets.Event event)

paint

void paint(org.eclipse.swt.widgets.Event event)

tableFocusIn

void tableFocusIn(org.eclipse.swt.widgets.Event event)

tableMouseDown

void tableMouseDown(org.eclipse.swt.widgets.Event event)

traverse

void traverse(org.eclipse.swt.widgets.Event event)

setRowColumn

void setRowColumn(int row,
                  int column,
                  boolean notify)

setRowColumn

void setRowColumn(org.eclipse.swt.widgets.TableItem row,
                  org.eclipse.swt.widgets.TableColumn column,
                  boolean notify)

setVisible

public void setVisible(boolean visible)
Description copied from class: org.eclipse.swt.widgets.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.


removeSelectionListener

public void removeSelectionListener(org.eclipse.swt.events.SelectionListener listener)
Removes the listener from the collection of listeners who will be notified when the receiver's selection changes.

Since:
3.0

resize

void resize()

getColumn

public int getColumn()
Returns the column over which the TableCursor is positioned.


getRow

public org.eclipse.swt.widgets.TableItem getRow()
Returns the row over which the TableCursor is positioned.


setBackground

public void setBackground(org.eclipse.swt.graphics.Color color)
Description copied from class: org.eclipse.swt.widgets.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.


setForeground

public void setForeground(org.eclipse.swt.graphics.Color color)
Description copied from class: org.eclipse.swt.widgets.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.


setSelection

public void setSelection(int row,
                         int column)
Positions the TableCursor over the cell at the given row and column in the parent table.


setSelection

public void setSelection(org.eclipse.swt.widgets.TableItem row,
                         int column)
Positions the TableCursor over the cell at the given row and column in the parent table.