|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
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
Safe: 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 "CTRL" or "SHIFT" 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.CTRL ||
e.keyCode == SWT.SHIFT ||
(e.stateMask & SWT.CONTROL) != 0 ||
(e.stateMask & SWT.SHIFT) != 0) {
cursor.setVisible(false);
}
}
});
// Show the TableCursor when the user releases the "SHIFT" or "CTRL" key.
// This signals the end of the multiple selection task.
table.addKeyListener(new KeyAdapter() {
public void keyReleased(KeyEvent e) {
if (e.keyCode == SWT.CONTROL && (e.stateMask & SWT.SHIFT) != 0) return;
if (e.keyCode == SWT.SHIFT && (e.stateMask & SWT.CONTROL) != 0) return;
if (e.keyCode != SWT.CONTROL && (e.stateMask & SWT.CONTROL) != 0) return;
if (e.keyCode != SWT.SHIFT && (e.stateMask & SWT.SHIFT) != 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();
}
Field Summary | |
(package private) int |
column
|
(package private) Listener |
resizeListener
|
(package private) int |
row
|
(package private) Table |
table
|
(package private) Listener |
tableListener
|
Fields inherited from class org.eclipse.swt.widgets.Canvas |
|
Fields inherited from class org.eclipse.swt.widgets.Composite |
|
Fields inherited from class org.eclipse.swt.widgets.Scrollable |
|
Fields inherited from class org.eclipse.swt.widgets.Control |
handle |
Fields inherited from class org.eclipse.swt.widgets.Widget |
|
Constructor Summary | |
TableCursor(Table parent,
int style)
Suppressed: 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)
Enabled: 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(Event event)
|
int |
getColumn()
Enabled: Returns the column over which the TableCursor is positioned. |
TableItem |
getRow()
Enabled: Returns the row over which the TableCursor is positioned. |
(package private) void |
keyDown(Event event)
|
(package private) void |
paint(Event event)
|
(package private) void |
resize()
|
(package private) void |
setRowColumn(int row,
int column,
boolean notify)
|
void |
setSelection(int row,
int column)
Enabled: Positions the TableCursor over the cell at the given row and column in the parent table. |
void |
setSelection(TableItem row,
int column)
Enabled: Positions the TableCursor over the cell at the given row and column in the parent table. |
void |
setVisible(boolean visible)
Enabled: |
(package private) void |
tableFocusIn(Event event)
|
(package private) void |
tableMouseDown(Event event)
|
(package private) void |
traverse(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, moveAbove, moveBelow, setFocus, setLayout, setTabList |
Methods inherited from class org.eclipse.swt.widgets.Scrollable |
computeTrim, getClientArea, getHorizontalBar, getVerticalBar |
Methods inherited from class org.eclipse.swt.widgets.Widget |
addDisposeListener, addListener, checkWidget, dispose, getData, getData, getStyle, 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 table
int row
int column
Listener tableListener
Listener resizeListener
Constructor Detail |
public TableCursor(Table parent, int style)
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.
parent
- a Table control which will be the parent of the new instance (cannot be null)style
- the style of control to constructSWT.BORDER
,
Widget.checkSubclass()
,
Widget.getStyle()
Method Detail |
public void addSelectionListener(SelectionListener listener)
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.
listener
- the listener which should be notifiedSelectionListener
,
SelectionEvent
void dispose(Event event)
void keyDown(Event event)
void paint(Event event)
void tableFocusIn(Event event)
void tableMouseDown(Event event)
void traverse(Event event)
void setRowColumn(int row, int column, boolean notify)
public void setVisible(boolean visible)
setVisible
in class Control
visible
- the new visibility statevoid resize()
public int getColumn()
public TableItem getRow()
public void setSelection(int row, int column)
row
- the index of the row for the cell to selectcolumn
- the index of column for the cell to selectpublic void setSelection(TableItem row, int column)
row
- the TableItem of the row for the cell to selectcolumn
- the index of column for the cell to select
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |