Follow Techotopia on Twitter

On-line Guides
All Guides
eBook Store
iOS / Android
Linux for Beginners
Office Productivity
Linux Installation
Linux Security
Linux Utilities
Linux Virtualization
Linux Kernel
System/Network Admin
Programming
Scripting Languages
Development Tools
Web Development
GUI Toolkits/Desktop
Databases
Mail Systems
openSolaris
Eclipse Documentation
Techotopia.com
Virtuatopia.com
Answertopia.com

How To Guides
Virtualization
General System Admin
Linux Security
Linux Filesystems
Web Servers
Graphics & Desktop
PC Hardware
Windows
Problem Solutions
Privacy Policy

  




 

 


Eclipse Platform
Release 3.5

org.eclipse.swt.custom
Class TableCursor


java.lang.Object
  extended by 

org.eclipse.swt.widgets.Widget
      extended by 

org.eclipse.swt.widgets.Control
          extended by 

org.eclipse.swt.widgets.Scrollable
              extended by 

org.eclipse.swt.widgets.Composite
                  extended by 

org.eclipse.swt.widgets.Canvas
                      extended by 
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 allows 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
See Also:
TableCursor snippets, Sample code and further information

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 user changes the receiver's selection, by sending it one of the messages defined in the SelectionListener interface.
  Color getBackground ()
          Returns the background color that the receiver will use to draw.
 int getColumn ()
          Returns the column over which the TableCursor is positioned.
  Color getForeground ()
          Returns the foreground color that the receiver will use to draw.
  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 user changes the receiver's selection.
 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
drawBackground, getCaret, getIME, scroll, setCaret, setFont, setIME
 
Methods inherited from class org.eclipse.swt.widgets. Composite
changed, checkSubclass, computeSize, getBackgroundMode, getChildren, getLayout, getLayoutDeferred, getTabList, isLayoutDeferred, layout, layout, layout, layout, setBackgroundMode, setFocus, setLayout, setLayoutDeferred, setTabList
 
Methods inherited from class org.eclipse.swt.widgets. Scrollable
computeTrim, getClientArea, getHorizontalBar, getVerticalBar
 
Methods inherited from class org.eclipse.swt.widgets. Control
addControlListener, addDragDetectListener, addFocusListener, addHelpListener, addKeyListener, addMenuDetectListener, addMouseListener, addMouseMoveListener, addMouseTrackListener, addMouseWheelListener, addPaintListener, addTraverseListener, computeSize, dragDetect, dragDetect, forceFocus, getAccessible, getBackgroundImage, getBorderWidth, getBounds, getCursor, getDragDetect, getEnabled, getFont, getLayoutData, getLocation, getMenu, getMonitor, getParent, getRegion, getShell, getSize, getToolTipText, getVisible, internal_dispose_GC, internal_new_GC, isEnabled, isFocusControl, isReparentable, isVisible, moveAbove, moveBelow, pack, pack, print, redraw, redraw, removeControlListener, removeDragDetectListener, removeFocusListener, removeHelpListener, removeKeyListener, removeMenuDetectListener, removeMouseListener, removeMouseMoveListener, removeMouseTrackListener, removeMouseWheelListener, removePaintListener, removeTraverseListener, setBackgroundImage, setBounds, setBounds, setCapture, setCursor, setDragDetect, setEnabled, setLayoutData, setLocation, setLocation, setMenu, setParent, setRedraw, setRegion, 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, getListeners, 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 user changes the receiver's selection, 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 receiver 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 when the user changes the receiver's selection
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 user changes the receiver's selection.

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

getBackground

public 
Color getBackground()
Returns the background color that the receiver will use to draw.

Overrides:
getBackground in class Control
Returns:
the receiver's background color

getForeground

public 
Color getForeground()
Returns the foreground color that the receiver will use to draw.

Overrides:
getForeground in class Control
Returns:
the receiver's foreground color

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)
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.

Note: This operation is a hint and may be overridden by the platform. For example, on Windows the background of a Button cannot be changed.

Overrides:
setBackground in class Control
Parameters:
color - the new color (or null)
Throws:
IllegalArgumentException -
  • ERROR_INVALID_ARGUMENT - if the argument has been disposed
SWTException -
  • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
  • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver

setForeground

public 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.

Note: This operation is a hint and may be overridden by the platform.

Overrides:
setForeground in class Control
Parameters:
color - the new color (or null)
Throws:
IllegalArgumentException -
  • ERROR_INVALID_ARGUMENT - if the argument has been disposed
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(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

Eclipse Platform
Release 3.5

Guidelines for using Eclipse APIs.

Copyright (c) Eclipse contributors and others 2000, 2008. All rights reserved.


 
 
  Published under the terms of the Eclipse Public License Version 1.0 ("EPL") Design by Interspire