Class AWTEventDispatcher

  • All Implemented Interfaces:
    java.awt.event.KeyListener, java.awt.event.MouseListener, java.awt.event.MouseMotionListener, java.awt.event.MouseWheelListener, java.util.EventListener, EventDispatcher

    public class AWTEventDispatcher
    extends java.lang.Object
    implements EventDispatcher, java.awt.event.MouseListener, java.awt.event.MouseMotionListener, java.awt.event.MouseWheelListener, java.awt.event.KeyListener
    An EventDispatcher implementation based on AWT events.

    Mouse events are dispatched to their "containing" node (the GraphicsNode corresponding to the mouse event coordinate). Searches for containment are performed from the EventDispatcher's "root" node.

    Version:
    $Id: AWTEventDispatcher.java 1831615 2018-05-15 09:50:53Z ssteiner $
    • Field Detail

      • root

        protected GraphicsNode root
        The root GraphicsNode as determined by setRootNode().
      • baseTransform

        protected java.awt.geom.AffineTransform baseTransform
        The base AffineTransform for InputEvent-to-GraphicsNodeEvent coordinates as determined by setBaseTransform().
      • glisteners

        protected javax.swing.event.EventListenerList glisteners
        The global listener list.
      • lastHit

        protected GraphicsNode lastHit
        The lastest node which has been targeted by an event.
      • currentKeyEventTarget

        protected GraphicsNode currentKeyEventTarget
        The current GraphicsNode targeted by an key events.
      • eventQueue

        protected java.util.List eventQueue
        These are used to queue events while a rendering event is in progress.
      • eventDispatchEnabled

        protected boolean eventDispatchEnabled
      • eventQueueMaxSize

        protected int eventQueueMaxSize
      • MAX_QUEUE_SIZE

        static final int MAX_QUEUE_SIZE
        default max size of the event queue.
        See Also:
        Constant Field Values
      • nodeIncrementEventID

        private int nodeIncrementEventID
      • nodeIncrementEventCode

        private int nodeIncrementEventCode
      • nodeIncrementEventModifiers

        private int nodeIncrementEventModifiers
      • nodeDecrementEventID

        private int nodeDecrementEventID
      • nodeDecrementEventCode

        private int nodeDecrementEventCode
      • nodeDecrementEventModifiers

        private int nodeDecrementEventModifiers
    • Constructor Detail

      • AWTEventDispatcher

        public AWTEventDispatcher()
        Constructs a new event dispatcher.
    • Method Detail

      • setRootNode

        public void setRootNode​(GraphicsNode root)
        Sets the root node for MouseEvent dispatch containment searches and field selections.
        Specified by:
        setRootNode in interface EventDispatcher
        Parameters:
        root - the root node
      • getRootNode

        public GraphicsNode getRootNode()
        Returns the root node for MouseEvent dispatch containment searches and field selections.
        Specified by:
        getRootNode in interface EventDispatcher
      • setBaseTransform

        public void setBaseTransform​(java.awt.geom.AffineTransform t)
        Sets the base transform applied to MouseEvent coordinates prior to dispatch.
        Specified by:
        setBaseTransform in interface EventDispatcher
        Parameters:
        t - the affine transform
      • getBaseTransform

        public java.awt.geom.AffineTransform getBaseTransform()
        Returns the base transform applied to MouseEvent coordinates prior to dispatch.
        Specified by:
        getBaseTransform in interface EventDispatcher
      • mousePressed

        public void mousePressed​(java.awt.event.MouseEvent evt)
        Dispatches the specified AWT mouse event down to the GVT tree. The mouse event is mutated to a GraphicsNodeMouseEvent.
        Specified by:
        mousePressed in interface java.awt.event.MouseListener
        Parameters:
        evt - the mouse event to propagate
      • mouseReleased

        public void mouseReleased​(java.awt.event.MouseEvent evt)
        Dispatches the specified AWT mouse event down to the GVT tree. The mouse event is mutated to a GraphicsNodeMouseEvent.
        Specified by:
        mouseReleased in interface java.awt.event.MouseListener
        Parameters:
        evt - the mouse event to propagate
      • mouseEntered

        public void mouseEntered​(java.awt.event.MouseEvent evt)
        Dispatches the specified AWT mouse event down to the GVT tree. The mouse event is mutated to a GraphicsNodeMouseEvent.
        Specified by:
        mouseEntered in interface java.awt.event.MouseListener
        Parameters:
        evt - the mouse event to propagate
      • mouseExited

        public void mouseExited​(java.awt.event.MouseEvent evt)
        Dispatches the specified AWT mouse event down to the GVT tree. The mouse event is mutated to a GraphicsNodeMouseEvent.
        Specified by:
        mouseExited in interface java.awt.event.MouseListener
        Parameters:
        evt - the mouse event to propagate
      • mouseClicked

        public void mouseClicked​(java.awt.event.MouseEvent evt)
        Dispatches the specified AWT mouse event down to the GVT tree. The mouse event is mutated to a GraphicsNodeMouseEvent.
        Specified by:
        mouseClicked in interface java.awt.event.MouseListener
        Parameters:
        evt - the mouse event to propagate
      • mouseMoved

        public void mouseMoved​(java.awt.event.MouseEvent evt)
        Dispatches the specified AWT mouse event down to the GVT tree. The mouse event is mutated to a GraphicsNodeMouseEvent.
        Specified by:
        mouseMoved in interface java.awt.event.MouseMotionListener
        Parameters:
        evt - the mouse event to propagate
      • mouseDragged

        public void mouseDragged​(java.awt.event.MouseEvent evt)
        Dispatches the specified AWT mouse event down to the GVT tree. The mouse event is mutated to a GraphicsNodeMouseEvent.
        Specified by:
        mouseDragged in interface java.awt.event.MouseMotionListener
        Parameters:
        evt - the mouse event to propagate
      • mouseWheelMoved

        public void mouseWheelMoved​(java.awt.event.MouseWheelEvent evt)
        Dispatches the specified AWT mouse wheel event down to the GVT tree. The mouse wheel event is mutated to a GraphicsNodeMouseWheelEvent.
        Specified by:
        mouseWheelMoved in interface java.awt.event.MouseWheelListener
        Parameters:
        evt - the mouse event to propagate
      • keyPressed

        public void keyPressed​(java.awt.event.KeyEvent evt)
        Dispatches the specified AWT key event down to the GVT tree. The mouse event is mutated to a GraphicsNodeKeyEvent.
        Specified by:
        keyPressed in interface java.awt.event.KeyListener
        Parameters:
        evt - the key event to propagate
      • keyReleased

        public void keyReleased​(java.awt.event.KeyEvent evt)
        Dispatches the specified AWT key event down to the GVT tree. The mouse event is mutated to a GraphicsNodeKeyEvent.
        Specified by:
        keyReleased in interface java.awt.event.KeyListener
        Parameters:
        evt - the key event to propagate
      • keyTyped

        public void keyTyped​(java.awt.event.KeyEvent evt)
        Dispatches the specified AWT key event down to the GVT tree. The mouse event is mutated to a GraphicsNodeKeyEvent.
        Specified by:
        keyTyped in interface java.awt.event.KeyListener
        Parameters:
        evt - the key event to propagate
      • getListeners

        public java.util.EventListener[] getListeners​(java.lang.Class listenerType)
        Returns an array of listeners that were added to this event dispatcher and of the specified type.
        Specified by:
        getListeners in interface EventDispatcher
        Parameters:
        listenerType - the type of the listeners to return
      • setEventDispatchEnabled

        public void setEventDispatchEnabled​(boolean b)
      • setEventQueueMaxSize

        public void setEventQueueMaxSize​(int n)
      • dispatchEvent

        public void dispatchEvent​(java.util.EventObject evt)
        Dispatches the specified AWT event.
        Specified by:
        dispatchEvent in interface EventDispatcher
        Parameters:
        evt - the event to dispatch
      • getCurrentLockState

        protected int getCurrentLockState()
        Returns a bitmask representing the state of the key locks.
      • dispatchKeyEvent

        protected void dispatchKeyEvent​(java.awt.event.KeyEvent evt)
        Dispatches the specified AWT key event.
        Parameters:
        evt - the key event to dispatch
      • dispatchMouseEvent

        protected void dispatchMouseEvent​(java.awt.event.MouseEvent evt)
        Dispatches the specified AWT mouse event.
        Parameters:
        evt - the mouse event to dispatch
      • dispatchMouseWheelEvent

        protected void dispatchMouseWheelEvent​(java.awt.event.MouseWheelEvent evt)
        Dispatches the specified AWT mouse wheel event.
        Parameters:
        evt - the mouse wheel event to dispatch
      • processMouseEvent

        protected void processMouseEvent​(GraphicsNodeMouseEvent evt)
        Processes the specified event by firing the 'global' listeners attached to this event dispatcher.
        Parameters:
        evt - the event to process
      • processMouseWheelEvent

        protected void processMouseWheelEvent​(GraphicsNodeMouseWheelEvent evt)
        Processes the specified event by firing the 'global' listeners attached to this event dispatcher.
        Parameters:
        evt - the event to process
      • processKeyEvent

        public void processKeyEvent​(GraphicsNodeKeyEvent evt)
        Dispatches a graphics node key event to by firing the 'global' listeners attached to this event dispatcher.
        Parameters:
        evt - the evt to dispatch
      • incrementKeyTarget

        private void incrementKeyTarget()
      • decrementKeyTarget

        private void decrementKeyTarget()
      • setNodeIncrementEvent

        public void setNodeIncrementEvent​(java.awt.event.InputEvent e)
        Associates all InputEvents of type e.getID() with "incrementing" of the currently selected GraphicsNode.
        Specified by:
        setNodeIncrementEvent in interface EventDispatcher
      • setNodeDecrementEvent

        public void setNodeDecrementEvent​(java.awt.event.InputEvent e)
        Associates all InputEvents of type e.getID() with "decrementing" of the currently selected GraphicsNode. The notion of "currently selected" GraphicsNode is used for dispatching KeyEvents.
        Specified by:
        setNodeDecrementEvent in interface EventDispatcher
      • isNodeIncrementEvent

        protected boolean isNodeIncrementEvent​(java.awt.event.InputEvent e)
        Returns true if the input event e is a node increment event, false otherwise.
        Parameters:
        e - the input event
      • isNodeDecrementEvent

        protected boolean isNodeDecrementEvent​(java.awt.event.InputEvent e)
        Returns true if the input event e is a node decrement event, false otherwise.
      • isMetaDown

        protected static boolean isMetaDown​(int modifiers)
        Returns whether the meta key is down according to the given modifiers bitfield.