Class CubeNavigator
- java.lang.Object
-
- uk.ac.starlink.ttools.plot2.geom.CubeNavigator
-
- All Implemented Interfaces:
Navigator<CubeAspect>
public class CubeNavigator extends java.lang.Object implements Navigator<CubeAspect>
Navigator for use with cube plot.- Since:
- 4 Oct 2013
- Author:
- Mark Taylor
-
-
Field Summary
Fields Modifier and Type Field Description static ConfigKey<boolean[]>
ZOOMAXES_KEY
Config key to select which axes zoom will operate on.
-
Constructor Summary
Constructors Constructor Description CubeNavigator(double zoomFactor, boolean[] axisFlags)
Constructor.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description NavAction<CubeAspect>
click(Surface surface, java.awt.Point pos, int ibutt, java.util.function.Supplier<CoordSequence> dposSupplier)
Mouse click gesture.static CubeNavigator
createNavigator(boolean isIso, ConfigMap config)
Creates a navigator instance from a config map.NavAction<CubeAspect>
drag(Surface surface, java.awt.Point pos, int ibutt, java.awt.Point origin)
Drag gesture.NavAction<CubeAspect>
endDrag(Surface surface, java.awt.Point pos, int ibutt, java.awt.Point origin)
Terminating drag gesture.static ConfigKey<?>[]
getConfigKeys(boolean isIso)
Returns the config keys for use with this navigator.java.util.Map<Gesture,java.lang.String>
getNavOptions(Surface surface, java.awt.Point pos)
Returns a description of the available navigation gestures and the behaviour they cause when the mouse is positioned at a particular point.NavAction<CubeAspect>
wheel(Surface surface, java.awt.Point pos, int wheelrot)
Mouse wheel gesture.
-
-
-
Field Detail
-
ZOOMAXES_KEY
public static final ConfigKey<boolean[]> ZOOMAXES_KEY
Config key to select which axes zoom will operate on.
-
-
Constructor Detail
-
CubeNavigator
public CubeNavigator(double zoomFactor, boolean[] axisFlags)
Constructor.- Parameters:
zoomFactor
- amount of zoom for one mouse wheel clickaxisFlags
- 3-element array of flags for whether a zoom operation will zoom in X, Y, Z directions; if null, drag zoom will be along 2 facing axes
-
-
Method Detail
-
drag
public NavAction<CubeAspect> drag(Surface surface, java.awt.Point pos, int ibutt, java.awt.Point origin)
Description copied from interface:Navigator
Drag gesture.Drag gestures typically indicate panning, and in this case should preferably have the outcome that the same data position remains under the cursor before and after the pan (from
origin
toevt.getPoint()
).- Specified by:
drag
in interfaceNavigator<CubeAspect>
- Parameters:
surface
- initial plot surfacepos
- current mouse positionibutt
- logical mouse button index of dragorigin
- starting point of the drag gesture- Returns:
- navigation action indicated by the gesture, or null for no change
-
endDrag
public NavAction<CubeAspect> endDrag(Surface surface, java.awt.Point pos, int ibutt, java.awt.Point origin)
Description copied from interface:Navigator
Terminating drag gesture. This method is invoked following a sequence of drags when the mouse button has been released.- Specified by:
endDrag
in interfaceNavigator<CubeAspect>
- Parameters:
surface
- initial plot surfacepos
- current mouse positionibutt
- logical mouse button index of terminated dragorigin
- starting point of drag gesture- Returns:
- navigation action indicated by the gesture, or null for no change
-
wheel
public NavAction<CubeAspect> wheel(Surface surface, java.awt.Point pos, int wheelrot)
Description copied from interface:Navigator
Mouse wheel gesture.Wheel gestures usually indicate zooming, and in this case should preferably have the outcome that the same data position remains at the mouse position before and after the zoom.
- Specified by:
wheel
in interfaceNavigator<CubeAspect>
- Parameters:
surface
- initial plot surfacepos
- current mouse positionwheelrot
- number of wheel rotation clicks- Returns:
- navigation action indicated by the gesture, or null for no change
-
click
public NavAction<CubeAspect> click(Surface surface, java.awt.Point pos, int ibutt, java.util.function.Supplier<CoordSequence> dposSupplier)
Description copied from interface:Navigator
Mouse click gesture.Note that other elements of the plotting system may intercept some mouse clicks for other purposes, so the navigator may not receive all clicks. For instance the topcat plot window currently intercepts button-1 clicks and interprets them as row selection requests. Typically this navigator method may only get invoked for modified or non-button-1 clicks.
Implementation of this gesture may require identifying a data position from a screen position, which is not always trivial, for instance in a 3D plot one graphics position maps to a line of data positions. The
dposIt
argument can optionally be supplied to cope with such instances. If a data pos cannot be determined, null is returned. IfdposIt
is absent, the method will run quickly. If it's present, the method may or may not run slowly by iterating over the data points.- Specified by:
click
in interfaceNavigator<CubeAspect>
- Parameters:
surface
- initial plot surfacepos
- current mouse positionibutt
- logical mouse button indexdposSupplier
- iterable over dataDimCount-element arrays representing all the data space positions plotted, or null- Returns:
- navigation action indicated by the gesture, or null for no change
-
getNavOptions
public java.util.Map<Gesture,java.lang.String> getNavOptions(Surface surface, java.awt.Point pos)
Description copied from interface:Navigator
Returns a description of the available navigation gestures and the behaviour they cause when the mouse is positioned at a particular point. The order of the returned list may be reflected in their presentation to users, so it is generally a good idea to use a LinkedHashMap.- Specified by:
getNavOptions
in interfaceNavigator<CubeAspect>
- Parameters:
surface
- plot surfacepos
- mouse position- Returns:
- mapping of available gestures to short textual descriptions of their behaviour
-
getConfigKeys
public static ConfigKey<?>[] getConfigKeys(boolean isIso)
Returns the config keys for use with this navigator.- Parameters:
isIso
- whether navigator will be configured for isotropic mode- Returns:
- config keys
-
createNavigator
public static CubeNavigator createNavigator(boolean isIso, ConfigMap config)
Creates a navigator instance from a config map. The keys defined bygetConfigKeys(boolean)
are used.- Parameters:
isIso
- whether navigator will be configured for isotropic modeconfig
- configuration map- Returns:
- navigator
-
-