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.

    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected java.awt.geom.AffineTransform baseTransform
      The base AffineTransform for InputEvent-to-GraphicsNodeEvent coordinates as determined by setBaseTransform().
      protected GraphicsNode currentKeyEventTarget
      The current GraphicsNode targeted by an key events.
      protected boolean eventDispatchEnabled  
      protected java.util.List eventQueue
      These are used to queue events while a rendering event is in progress.
      protected int eventQueueMaxSize  
      protected javax.swing.event.EventListenerList glisteners
      The global listener list.
      protected GraphicsNode lastHit
      The lastest node which has been targeted by an event.
      protected GraphicsNode root
      The root GraphicsNode as determined by setRootNode().
    • Constructor Summary

      Constructors 
      Constructor Description
      AWTEventDispatcher()
      Constructs a new event dispatcher.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void addGraphicsNodeKeyListener​(GraphicsNodeKeyListener l)
      Adds the specified 'global' GraphicsNodeKeyListener which is notified of all KeyEvents dispatched.
      void addGraphicsNodeMouseListener​(GraphicsNodeMouseListener l)
      Adds the specified 'global' GraphicsNodeMouseListener which is notified of all MouseEvents dispatched.
      void addGraphicsNodeMouseWheelListener​(GraphicsNodeMouseWheelListener l)
      Adds the specified 'global' GraphicsNodeMouseWheelListener which is notified of all MouseWheelEvents dispatched.
      void dispatchEvent​(java.util.EventObject evt)
      Dispatches the specified AWT event.
      protected void dispatchKeyEvent​(java.awt.event.KeyEvent evt)
      Dispatches the specified AWT key event.
      protected void dispatchMouseEvent​(java.awt.event.MouseEvent evt)
      Dispatches the specified AWT mouse event.
      protected void dispatchMouseWheelEvent​(java.awt.event.MouseWheelEvent evt)
      Dispatches the specified AWT mouse wheel event.
      java.awt.geom.AffineTransform getBaseTransform()
      Returns the base transform applied to MouseEvent coordinates prior to dispatch.
      protected int getCurrentLockState()
      Returns a bitmask representing the state of the key locks.
      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.
      GraphicsNode getRootNode()
      Returns the root node for MouseEvent dispatch containment searches and field selections.
      protected static boolean isMetaDown​(int modifiers)
      Returns whether the meta key is down according to the given modifiers bitfield.
      protected boolean isNodeDecrementEvent​(java.awt.event.InputEvent e)
      Returns true if the input event e is a node decrement event, false otherwise.
      protected boolean isNodeIncrementEvent​(java.awt.event.InputEvent e)
      Returns true if the input event e is a node increment event, false otherwise.
      void keyPressed​(java.awt.event.KeyEvent evt)
      Dispatches the specified AWT key event down to the GVT tree.
      void keyReleased​(java.awt.event.KeyEvent evt)
      Dispatches the specified AWT key event down to the GVT tree.
      void keyTyped​(java.awt.event.KeyEvent evt)
      Dispatches the specified AWT key event down to the GVT tree.
      void mouseClicked​(java.awt.event.MouseEvent evt)
      Dispatches the specified AWT mouse event down to the GVT tree.
      void mouseDragged​(java.awt.event.MouseEvent evt)
      Dispatches the specified AWT mouse event down to the GVT tree.
      void mouseEntered​(java.awt.event.MouseEvent evt)
      Dispatches the specified AWT mouse event down to the GVT tree.
      void mouseExited​(java.awt.event.MouseEvent evt)
      Dispatches the specified AWT mouse event down to the GVT tree.
      void mouseMoved​(java.awt.event.MouseEvent evt)
      Dispatches the specified AWT mouse event down to the GVT tree.
      void mousePressed​(java.awt.event.MouseEvent evt)
      Dispatches the specified AWT mouse event down to the GVT tree.
      void mouseReleased​(java.awt.event.MouseEvent evt)
      Dispatches the specified AWT mouse event down to the GVT tree.
      void mouseWheelMoved​(java.awt.event.MouseWheelEvent evt)
      Dispatches the specified AWT mouse wheel event down to the GVT tree.
      void processKeyEvent​(GraphicsNodeKeyEvent evt)
      Dispatches a graphics node key event to by firing the 'global' listeners attached to this event dispatcher.
      protected void processMouseEvent​(GraphicsNodeMouseEvent evt)
      Processes the specified event by firing the 'global' listeners attached to this event dispatcher.
      protected void processMouseWheelEvent​(GraphicsNodeMouseWheelEvent evt)
      Processes the specified event by firing the 'global' listeners attached to this event dispatcher.
      void removeGraphicsNodeKeyListener​(GraphicsNodeKeyListener l)
      Removes the specified 'global' GraphicsNodeKeyListener which is notified of all KeyEvents dispatched.
      void removeGraphicsNodeMouseListener​(GraphicsNodeMouseListener l)
      Removes the specified 'global' GraphicsNodeMouseListener which is notified of all MouseEvents dispatched.
      void removeGraphicsNodeMouseWheelListener​(GraphicsNodeMouseWheelListener l)
      Removes the specified 'global' GraphicsNodeMouseWheelListener which is notified of all MouseWheelEvents dispatched.
      void setBaseTransform​(java.awt.geom.AffineTransform t)
      Sets the base transform applied to MouseEvent coordinates prior to dispatch.
      void setEventDispatchEnabled​(boolean b)  
      void setEventQueueMaxSize​(int n)  
      void setNodeDecrementEvent​(java.awt.event.InputEvent e)
      Associates all InputEvents of type e.getID() with "decrementing" of the currently selected GraphicsNode.
      void setNodeIncrementEvent​(java.awt.event.InputEvent e)
      Associates all InputEvents of type e.getID() with "incrementing" of the currently selected GraphicsNode.
      void setRootNode​(GraphicsNode root)
      Sets the root node for MouseEvent dispatch containment searches and field selections.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • 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
    • 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
      • 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.