Package org.eclipse.swt.widgets

# Class Tracker

java.lang.Object
org.eclipse.swt.widgets.Widget
org.eclipse.swt.widgets.Tracker

public class Tracker extends Widget
Instances of this class implement rubber banding rectangles that are drawn onto a parent `Composite` or `Display`. These rectangles can be specified to respond to mouse and key events by either moving or resizing themselves accordingly. Trackers are typically used to represent window geometries in a lightweight manner.

Styles:
  LEFT, RIGHT, UP, DOWN, RESIZE
Events:
  Move, Resize

Note: Rectangle move behavior is assumed unless RESIZE is specified.

IMPORTANT: This class is not intended to be subclassed.

See Also:
  - Tracker snippets
  - Sample code and further information
Restriction:
  This class is not intended to be subclassed by clients.

## Field Summary

### Fields inherited from class org.eclipse.swt.widgets.Widget

`nativeZoom`

## Constructor Summary

Constructors
Constructor
Description
`Tracker(Composite parent, int style)`
Constructs a new instance of this class given its parent and a style value describing its behavior and appearance.
`Tracker(Display display, int style)`
Constructs a new instance of this class given the display to create it on and a style value describing its behavior and appearance.

## Method Summary

Modifier and Type
Method
Description
`void`
`addControlListener(ControlListener listener)`
Adds the listener to the collection of listeners who will be notified when the control is moved or resized, by sending it one of the messages defined in the `ControlListener` interface.
`void`
`addKeyListener(KeyListener listener)`
Adds the listener to the collection of listeners who will be notified when keys are pressed and released on the system keyboard, by sending it one of the messages defined in the `KeyListener` interface.
`void`
`close()`
Stops displaying the tracker rectangles.
`Rectangle[]`
`getRectangles()`
Returns the bounds that are being drawn, expressed relative to the parent widget.
`boolean`
`getStippled()`
Returns `true` if the rectangles are drawn with a stippled line, `false` otherwise.
`boolean`
`open()`
Displays the Tracker rectangles for manipulation by the user.
`void`
`removeControlListener(ControlListener listener)`
Removes the listener from the collection of listeners who will be notified when the control is moved or resized.
`void`
`removeKeyListener(KeyListener listener)`
Removes the listener from the collection of listeners who will be notified when keys are pressed and released on the system keyboard.
`void`
`setCursor(Cursor newCursor)`
Sets the `Cursor` of the Tracker.
`void`
`setRectangles(Rectangle[] rectangles)`
Specifies the rectangles that should be drawn, expressed relative to the parent widget.
`void`
`setStippled(boolean stippled)`
Changes the appearance of the line used to draw the rectangles.

### Methods inherited from class org.eclipse.swt.widgets.Widget

`addDisposeListener, addListener, addTypedListener, checkSubclass, checkWidget, dispose, getData, getData, getDisplay, getListeners, getStyle, getTypedListeners, isAutoDirection, isDisposed, isListening, notifyListeners, removeDisposeListener, removeListener, removeListener, removeTypedListener, reskin, setData, setData, toString`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

## Constructor Details

### Tracker

public Tracker(Composite parent, int style)
Constructs a new instance of this class given its parent 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 widget which will be the parent of the new instance (cannot be null)
  `style` - the style of widget 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.LEFT`
  - `SWT.RIGHT`
  - `SWT.UP`
  - `SWT.DOWN`
  - `SWT.RESIZE`
  - `Widget.checkSubclass()`
  - `Widget.getStyle()`

### Tracker

public Tracker(Display display, int style)
Constructs a new instance of this class given the display to create it on 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.

Note: Currently, null can be passed in for the display argument. This has the effect of creating the tracker on the currently active display if there is one. If there is no current display, the tracker is created on a "default" display. Passing in null as the display argument is not considered to be good coding style, and may not be supported in a future release of SWT.

Parameters:
  `display` - the display to create the tracker on
  `style` - the style of control to construct
Throws:
  `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.LEFT`
  - `SWT.RIGHT`
  - `SWT.UP`
  - `SWT.DOWN`
  - `SWT.RESIZE`

## Method Details

### addControlListener

public void addControlListener(ControlListener listener)
Adds the listener to the collection of listeners who will be notified when the control is moved or resized, by sending it one of the messages defined in the `ControlListener` interface.

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:
  - `ControlListener`
  - `removeControlListener(org.eclipse.swt.events.ControlListener)`

### addKeyListener

public void addKeyListener(KeyListener listener)
Adds the listener to the collection of listeners who will be notified when keys are pressed and released on the system keyboard, by sending it one of the messages defined in the `KeyListener` interface.

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:
  - `KeyListener`
  - `removeKeyListener(org.eclipse.swt.events.KeyListener)`

### close

public void close()
Stops displaying the tracker rectangles. Note that this is not considered to be a cancelation by the user.

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

### getRectangles

public Rectangle[] getRectangles()
Returns the bounds that are being drawn, expressed relative to the parent widget. If the parent is a `Display` then these are screen coordinates.

Returns:
  the bounds of the Rectangles being drawn
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

### getStippled

public boolean getStippled()
Returns `true` if the rectangles are drawn with a stippled line, `false` otherwise.

Returns:
  the stippled effect of the rectangles
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

### open

public boolean open()
Displays the Tracker rectangles for manipulation by the user. Returns when the user has either finished manipulating the rectangles or has cancelled the Tracker.

Returns:
  `true` if the user did not cancel the Tracker, `false` otherwise
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

### removeControlListener

public void removeControlListener(ControlListener listener)
Removes the listener from the collection of listeners who will be notified when the control is moved or resized.

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
See Also:
  - `ControlListener`
  - `addControlListener(org.eclipse.swt.events.ControlListener)`

### removeKeyListener

public void removeKeyListener(KeyListener listener)
Removes the listener from the collection of listeners who will be notified when keys are pressed and released on the system keyboard.

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
See Also:
  - `KeyListener`
  - `addKeyListener(org.eclipse.swt.events.KeyListener)`

### setCursor

public void setCursor(Cursor newCursor)
Sets the `Cursor` of the Tracker. If this cursor is `null` then the cursor reverts to the default.

Parameters:
  `newCursor` - the new `Cursor` to display
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

### setRectangles

public void setRectangles(Rectangle[] rectangles)
Specifies the rectangles that should be drawn, expressed relative to the parent widget. If the parent is a Display then these are screen coordinates.

Parameters:
  `rectangles` - the bounds of the rectangles to be drawn
Throws:
  `IllegalArgumentException` -
  - ERROR_NULL_ARGUMENT - if the set of rectangles is null or contains a null rectangle
  `SWTException` -
  - ERROR_WIDGET_DISPOSED - if the receiver has been disposed
  - ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver

### setStippled

public void setStippled(boolean stippled)
Changes the appearance of the line used to draw the rectangles.

Parameters:
  `stippled` - `true` if rectangle should appear stippled
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