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:
- 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
| Fields inherited from class org.eclipse.swt.widgets.Canvas |
|
| 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.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 |
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
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.
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.