# Class PositionReporter

java.lang.Object
uk.ac.starlink.topcat.plot.PositionReporter

All Implemented Interfaces:
  `MouseMotionListener, EventListener`

public abstract class PositionReporter extends Object implements MouseMotionListener
MouseMotionListener which acts on mouse movement events to provide the position of the pointer in `PlotSurface` data coordinates. When a mouse movement event is heard, the `reportPosition(String[])` method is called with suitable arguments.

Since:
  10 Nov 2005
Author:
  Mark Taylor

## Constructor Summary

Constructors
Constructor
Description
`PositionReporter(uk.ac.starlink.ttools.plot.PlotSurface surface)`
Constructs a new position reporter for a given plot surface.
`PositionReporter(uk.ac.starlink.ttools.plot.PlotSurface surface, uk.ac.starlink.ttools.convert.ValueConverter xConv, uk.ac.starlink.ttools.convert.ValueConverter yConv)`
Constructs a new position reporter for a given plot surface using supplied value converter objects for the X and Y axes.

## Method Summary

Modifier and Type
Method
Description
`String[]`
`formatPosition(int px, int py)`
Turns the numeric values of graphics space coordinates into strings giving the positions in data space.
`void`
`mouseDragged(MouseEvent evt)`
No action.
`void`
`mouseMoved(MouseEvent evt)`
`protected abstract void`
`reportPosition(String[] coords)`
Invoked when the mouse has moved.

### Methods inherited from class Object

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

## Constructor Details

### PositionReporter

public PositionReporter(uk.ac.starlink.ttools.plot.PlotSurface surface)
Constructs a new position reporter for a given plot surface.

Parameters:
  `surface` - plotting surface

### PositionReporter

public PositionReporter(uk.ac.starlink.ttools.plot.PlotSurface surface, uk.ac.starlink.ttools.convert.ValueConverter xConv, uk.ac.starlink.ttools.convert.ValueConverter yConv)
Constructs a new position reporter for a given plot surface using supplied value converter objects for the X and Y axes. The `unconvert` methods of said converters should provide the formatting (number -> formatted string) behaviour for each axis.

Parameters:
  `surface` - plotting surface
  `xConv` - value converter for X axis (or null)
  `yConv` - value converter for Y axis (or null)

## Method Details

### reportPosition

protected abstract void reportPosition(String[] coords)
Invoked when the mouse has moved. The `coords` array is either a two-element array giving formatted values for the X and Y coordinates respectively, or `null` indicating that the pointer does not currently correspond to a sensible position in data space. Some effort is made to format the coordinate values in a compact but consistent fashion.

Parameters:
  `coords` - formatted (x,y) coordinate values, or null

### mouseMoved

public void mouseMoved(MouseEvent evt)

Specified by:
  `mouseMoved` in interface `MouseMotionListener`

### mouseDragged

public void mouseDragged(MouseEvent evt)
No action.

Specified by:
  `mouseDragged` in interface `MouseMotionListener`

### formatPosition

public String[] formatPosition(int px, int py)
Turns the numeric values of graphics space coordinates into strings giving the positions in data space.

Parameters:
  `px` - graphics space X coordinate
  `py` - graphics space Y coordinate
Returns:
  2-element (x,y) array giving formatted data space coords, or null