Class HotSpotController

  • All Implemented Interfaces:
    SelectListener, java.awt.event.MouseMotionListener, java.util.EventListener

    public class HotSpotController
    extends java.lang.Object
    implements SelectListener, java.awt.event.MouseMotionListener
    Controller to forward selection, keyboard, and mouse events on the WorldWindow to the active 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:

    • The select event's top picked object, if the top picked object implements HotSpot.
    • The value for 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.
    • Field Summary

      Fields 
      Modifier and Type Field 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 Summary

      Constructors 
      Constructor Description
      HotSpotController​(WorldWindow wwd)
      Creates a new HotSpotController for a specified WorldWindow, and assigns the controller as a SelectListener on the WorldWindow.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method 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​(java.awt.event.MouseEvent e)
      void mouseMoved​(java.awt.event.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.
      • Methods inherited from class java.lang.Object

        clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • activeHotSpot

        protected HotSpot activeHotSpot
      • dragging

        protected boolean dragging
      • customCursor

        protected boolean customCursor
        Indicates that the active HotSpot has set a custom cursor that must be reset when the HotSpot is deactivated.
    • Constructor Detail

      • HotSpotController

        public HotSpotController​(WorldWindow wwd)
        Creates a new HotSpotController for a specified WorldWindow, and assigns the controller as a SelectListener on the WorldWindow.
        Parameters:
        wwd - The WorldWindow to monitor selection events for.
    • Method Detail

      • selected

        public void selected​(SelectEvent event)
        Updates the active 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.

        Specified by:
        selected in interface SelectListener
        Parameters:
        event - A select event on the WorldWindow we're monitoring.
      • doSelected

        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
        Parameters:
        event - A select event on the WorldWindow we're monitoring.
      • mouseMoved

        public void mouseMoved​(java.awt.event.MouseEvent e)
        Update the cursor when the mouse moves.
        Specified by:
        mouseMoved in interface java.awt.event.MouseMotionListener
        Parameters:
        e - Mouse event.
      • isDragging

        protected boolean isDragging()
        Returns whether the user is dragging the object under the cursor.
        Returns:
        true if the user is dragging the object under the cursor, otherwise false.
      • setDragging

        protected void setDragging​(boolean dragging)
        Specifies whether the user is dragging the object under the cursor.
        Parameters:
        dragging - true if the user is dragging the object under the cursor, otherwise false.
      • getActiveHotSpot

        protected HotSpot getActiveHotSpot()
        Returns the currently active HotSpot, or null if there is no active HotSpot.
        Returns:
        The currently active HotSpot, or null.
      • setActiveHotSpot

        protected void setActiveHotSpot​(HotSpot hotSpot)
        Sets the active 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 WorldWindow'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 WorldWindow's Cursor to the value returned by hotSpot.getCursor(), or null if the specified hotSpot is null.

        Parameters:
        hotSpot - The HotSpot that becomes the active HotSpot. null to indicate that there is no active HotSpot.
      • updateActiveHotSpot

        protected void updateActiveHotSpot​(PickedObject po)
        Updates the active HotSpot and the currently displayed cursor according to the picked objects in the specified event. The active HotSpot is assigned as follows:
        • The value for event.getTopPickedObject().getValue(AVKey.HOT_SPOT), if the value for the key AVKey.HOT_SPOT implements HotSpot.
        • The event's top picked object, if the top picked object implements HotSpot.
        • null if neither of the above conditions are true, or if the event is null.
        Parameters:
        po - Top picked object, which will provide the active HotSpot.
      • mouseDragged

        public void mouseDragged​(java.awt.event.MouseEvent e)
        Specified by:
        mouseDragged in interface java.awt.event.MouseMotionListener