public class HotSpotController extends Object implements SelectListener, MouseMotionListener
HotSpot
. The active HotSpot is updated on SelectEvent.ROLLOVER
select events, but not during a drag operation. This ensures that the active HotSpot remains active while it's being
dragged, regardless of what's under the cursor.
The active HotSpot is updated during non-drag rollover select events as follows: HotSpot
.SelectEvent.getTopPickedObject().getValue(AVKey.HOT_SPOT)
,if the value for key AVKey.HOT_SPOT
implements HotSpot.null
if neither of the above
conditions are true, or if the event is null
.Modifier and Type | Field and Description |
---|---|
protected HotSpot |
activeHotSpot |
protected boolean |
customCursor
Indicates that the active HotSpot has set a custom cursor that must be reset when the HotSpot is deactivated.
|
protected boolean |
dragging |
protected WorldWindow |
wwd |
Constructor and Description |
---|
HotSpotController(WorldWindow wwd)
Creates a new HotSpotController for a specified World Window, and assigns the controller as a
SelectListener on the World Window. |
Modifier and Type | Method and Description |
---|---|
protected void |
doSelected(SelectEvent event)
Updates the active
HotSpot depending on the specified select event action:
SelectEvent.DRAG_END - Forwards the event to the active HotSpot , then updates the active HotSpot. SelectEvent.ROLLOVER while not dragging - Updates the active HotSpot, then forwards the
event to the active HotSpot. Other event types - forwards the event to the active HotSpot |
protected HotSpot |
getActiveHotSpot()
Returns the currently active
HotSpot , or null if there is no active
HotSpot. |
protected boolean |
isDragging()
Returns whether the user is dragging the object under the cursor.
|
void |
mouseDragged(MouseEvent e) |
void |
mouseMoved(MouseEvent e)
Update the cursor when the mouse moves.
|
void |
selected(SelectEvent event)
Updates the active
HotSpot if necessary, and forwards the select event to the
active HotSpot. |
protected void |
setActiveHotSpot(HotSpot hotSpot)
Sets the active
HotSpot to the specified HotSpot. |
protected void |
setDragging(boolean dragging)
Specifies whether the user is dragging the object under the cursor.
|
protected void |
updateActiveHotSpot(PickedObject po)
Updates the active
HotSpot and the currently displayed cursor according to the
picked objects in the specified event. |
protected HotSpot activeHotSpot
protected boolean customCursor
protected boolean dragging
protected WorldWindow wwd
public HotSpotController(WorldWindow wwd)
SelectListener
on the World Window.wwd
- The World Window to monitor selection events for.protected void doSelected(SelectEvent event)
HotSpot
depending on the specified select event action: SelectEvent.DRAG_END
- Forwards the event to the active HotSpot
, then updates the active HotSpot.SelectEvent.ROLLOVER
while not dragging - Updates the active HotSpot, then forwards the
event to the active HotSpot.event
- A select event on the World Window we're monitoring.protected HotSpot getActiveHotSpot()
HotSpot
, or null
if there is no active
HotSpot.null
.protected boolean isDragging()
true
if the user is dragging the object under the cursor, otherwise false
.public void mouseDragged(MouseEvent e)
mouseDragged
in interface MouseMotionListener
public void mouseMoved(MouseEvent e)
mouseMoved
in interface MouseMotionListener
e
- Mouse event.public void selected(SelectEvent event)
HotSpot
if necessary, and forwards the select event to the
active HotSpot. This does nothing if the select event is null
.
This forwards the select event to doSelected(gov.nasa.worldwind.event.SelectEvent)
, and catches and logs
any exceptions thrown by doSelected
.selected
in interface SelectListener
event
- A select event on the World Window we're monitoring.protected void setActiveHotSpot(HotSpot hotSpot)
HotSpot
to the specified HotSpot. The HotSpot may be null
, indicating that there is no active HotSpot. This registers the new HotSpot as key listener, mouse
listener, mouse motion listener, and mouse wheel listener on the World Window's InputHandler
. This removes the previously active HotSpot as a listener on the World
Window's InputHandler. This does nothing if the active HotSpot and the specified HotSpot are the same object.
Additionally, this updates the World Window's Cursor
to the value returned by hotSpot.getCursor()
, or null
if the specified hotSpot is null
.hotSpot
- The HotSpot that becomes the active HotSpot. null
to indicate that there is no active
HotSpot.protected void setDragging(boolean dragging)
dragging
- true
if the user is dragging the object under the cursor, otherwise false
.protected void updateActiveHotSpot(PickedObject po)
HotSpot
and the currently displayed cursor according to the
picked objects in the specified event. The active HotSpot is assigned as follows: event.getTopPickedObject().getValue(AVKey.HOT_SPOT)
, if the value for the key AVKey.HOT_SPOT
implements HotSpot.null
if neither of the above conditions are true, or if the
event is null
.po
- Top picked object, which will provide the active HotSpot.