Class InvocationEvent

All Implemented Interfaces:
ActiveEvent, Serializable

public class InvocationEvent extends AWTEvent implements ActiveEvent
An event which executes the run() method on a Runnable when dispatched by the AWT event dispatcher thread. This class can be used as a reference implementation of ActiveEvent rather than declaring a new class and defining dispatch().

Instances of this class are placed on the EventQueue by calls to invokeLater and invokeAndWait. Client code can use this fact to write replacement functions for invokeLater and invokeAndWait without writing special-case code in any AWTEventListener objects.

An unspecified behavior will be caused if the id parameter of any particular InvocationEvent instance is not in the range from INVOCATION_FIRST to INVOCATION_LAST.

Since:
1.2
See Also:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected boolean
    Set to true if dispatch() catches Throwable and stores it in the exception instance variable.
    static final int
    The default id for all InvocationEvents.
    static final int
    Marks the first integer id for the range of invocation event ids.
    static final int
    Marks the last integer id for the range of invocation event ids.
    protected Object
    The (potentially null) Object whose notifyAll() method will be called immediately after the Runnable.run() method has returned or thrown an exception or after the event was disposed.
    protected Runnable
    The Runnable whose run() method will be called.

    Fields declared in class AWTEvent

    ACTION_EVENT_MASK, ADJUSTMENT_EVENT_MASK, COMPONENT_EVENT_MASK, consumed, CONTAINER_EVENT_MASK, FOCUS_EVENT_MASK, HIERARCHY_BOUNDS_EVENT_MASK, HIERARCHY_EVENT_MASK, id, INPUT_METHOD_EVENT_MASK, INVOCATION_EVENT_MASK, ITEM_EVENT_MASK, KEY_EVENT_MASK, MOUSE_EVENT_MASK, MOUSE_MOTION_EVENT_MASK, MOUSE_WHEEL_EVENT_MASK, PAINT_EVENT_MASK, RESERVED_ID_MAX, TEXT_EVENT_MASK, WINDOW_EVENT_MASK, WINDOW_FOCUS_EVENT_MASK, WINDOW_STATE_EVENT_MASK
    Modifier and Type
    Field
    Description
    static final long
    The event mask for selecting action events.
    static final long
    The event mask for selecting adjustment events.
    static final long
    The event mask for selecting component events.
    protected boolean
    Controls whether or not the event is sent back down to the peer once the source has processed it - false means it's sent to the peer; true means it's not.
    static final long
    The event mask for selecting container events.
    static final long
    The event mask for selecting focus events.
    static final long
    The event mask for selecting hierarchy bounds events.
    static final long
    The event mask for selecting hierarchy events.
    protected int
    The event's id.
    static final long
    The event mask for selecting input method events.
    static final long
    The event mask for selecting invocation events.
    static final long
    The event mask for selecting item events.
    static final long
    The event mask for selecting key events.
    static final long
    The event mask for selecting mouse events.
    static final long
    The event mask for selecting mouse motion events.
    static final long
    The event mask for selecting mouse wheel events.
    static final long
    The event mask for selecting paint events.
    static final int
    The maximum value for reserved AWT event IDs.
    static final long
    The event mask for selecting text events.
    static final long
    The event mask for selecting window events.
    static final long
    The event mask for selecting window focus events.
    static final long
    The event mask for selecting window state events.

    Fields declared in class EventObject

    source
    Modifier and Type
    Field
    Description
    protected Object
    The object on which the Event initially occurred.
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    protected
    InvocationEvent(Object source, int id, Runnable runnable, Object notifier, boolean catchThrowables)
    Constructs an InvocationEvent with the specified source and ID which will execute the runnable's run() method when dispatched.
     
    InvocationEvent(Object source, Runnable runnable)
    Constructs an InvocationEvent with the specified source which will execute the runnable's run() method when dispatched.
     
    InvocationEvent(Object source, Runnable runnable, Object notifier, boolean catchThrowables)
    Constructs an InvocationEvent with the specified source which will execute the runnable's run() method when dispatched.
     
    InvocationEvent(Object source, Runnable runnable, Runnable listener, boolean catchThrowables)
    Constructs an InvocationEvent with the specified source which will execute the runnable's run() method when dispatched.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Executes the Runnable's run() method and notifies the notifier (if any) when run() has returned or thrown an exception.
    Returns any Exception caught while executing the Runnable's run() method.
    Returns any Throwable caught while executing the Runnable's run() method.
    long
    Returns the timestamp of when this event occurred.
    boolean
    Returns true if the event is dispatched or any exception is thrown while dispatching, false otherwise.
    Returns a parameter string identifying this event.

    Methods declared in class AWTEvent

    consume, getID, isConsumed, setSource, toString
    Modifier and Type
    Method
    Description
    protected void
    Consumes this event, if this event can be consumed.
    int
    Returns the event type.
    protected boolean
    Returns whether this event has been consumed.
    void
    setSource(Object newSource)
    Retargets an event to a new source.
    Returns a String representation of this object.

    Methods declared in class EventObject

    getSource
    Modifier and Type
    Method
    Description
    The object on which the Event initially occurred.

    Methods declared in class Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    Modifier and Type
    Method
    Description
    protected Object
    Answers a new instance of the same class as the receiver, whose slots have been filled in with the values in the slots of the receiver.
    boolean
    Compares the argument to the receiver, and answers true if they represent the same object using a class specific comparison.
    protected void
    Deprecated, for removal: This API element is subject to removal in a future version.
    May cause performance issues, deadlocks and hangs.
    final Class<? extends Object>
    Answers the unique instance of java.lang.Class which represents the class of the receiver.
    int
    Answers an integer hash code for the receiver.
    final void
    Causes one thread which is waiting on the receiver to be made ready to run.
    final void
    Causes all threads which are waiting on the receiver to be made ready to run.
    final void
    Causes the thread which sent this message to be made not ready to run pending some change in the receiver (as indicated by notify or notifyAll).
    final void
    wait(long time)
    Causes the thread which sent this message to be made not ready to run either pending some change in the receiver (as indicated by notify or notifyAll) or the expiration of the timeout.
    final void
    wait(long time, int frac)
    Causes the thread which sent this message to be made not ready to run either pending some change in the receiver (as indicated by notify or notifyAll) or the expiration of the timeout.
  • Field Details

    • INVOCATION_FIRST

      public static final int INVOCATION_FIRST
      Marks the first integer id for the range of invocation event ids.
      See Also:
    • INVOCATION_DEFAULT

      public static final int INVOCATION_DEFAULT
      The default id for all InvocationEvents.
      See Also:
    • INVOCATION_LAST

      public static final int INVOCATION_LAST
      Marks the last integer id for the range of invocation event ids.
      See Also:
    • runnable

      protected Runnable runnable
      The Runnable whose run() method will be called.
    • notifier

      protected volatile Object notifier
      The (potentially null) Object whose notifyAll() method will be called immediately after the Runnable.run() method has returned or thrown an exception or after the event was disposed.
      See Also:
    • catchExceptions

      protected boolean catchExceptions
      Set to true if dispatch() catches Throwable and stores it in the exception instance variable. If false, Throwables are propagated up to the EventDispatchThread's dispatch loop.
  • Constructor Details

    • InvocationEvent

      public InvocationEvent(Object source, Runnable runnable)
      Constructs an InvocationEvent with the specified source which will execute the runnable's run() method when dispatched.

      This is a convenience constructor. An invocation of the form InvocationEvent(source, runnable) behaves in exactly the same way as the invocation of InvocationEvent(source, runnable, null, false).

      This method throws an IllegalArgumentException if source is null.

      Parameters:
      source - The Object that originated the event
      runnable - The Runnable whose run() method will be executed
      Throws:
      IllegalArgumentException - if source is null
      See Also:
    • InvocationEvent

      public InvocationEvent(Object source, Runnable runnable, Object notifier, boolean catchThrowables)
      Constructs an InvocationEvent with the specified source which will execute the runnable's run() method when dispatched. If notifier is non-null, notifyAll() will be called on it immediately after run() has returned or thrown an exception.

      An invocation of the form InvocationEvent(source, runnable, notifier, catchThrowables) behaves in exactly the same way as the invocation of InvocationEvent(source, InvocationEvent.INVOCATION_DEFAULT, runnable, notifier, catchThrowables).

      This method throws an IllegalArgumentException if source is null.

      Parameters:
      source - The Object that originated the event
      runnable - The Runnable whose run() method will be executed
      notifier - The Object whose notifyAll method will be called after Runnable.run has returned or thrown an exception or after the event was disposed
      catchThrowables - Specifies whether dispatch should catch Throwable when executing the Runnable's run() method, or should instead propagate those Throwables to the EventDispatchThread's dispatch loop
      Throws:
      IllegalArgumentException - if source is null
      See Also:
    • InvocationEvent

      public InvocationEvent(Object source, Runnable runnable, Runnable listener, boolean catchThrowables)
      Constructs an InvocationEvent with the specified source which will execute the runnable's run() method when dispatched. If listener is non-null, listener.run() will be called immediately after run has returned, thrown an exception or the event was disposed.

      This method throws an IllegalArgumentException if source is null.

      Parameters:
      source - The Object that originated the event
      runnable - The Runnable whose run() method will be executed
      listener - The Runnable whose run() method will be called after the InvocationEvent was dispatched or disposed
      catchThrowables - Specifies whether dispatch should catch Throwable when executing the Runnable's run() method, or should instead propagate those Throwables to the EventDispatchThread's dispatch loop
      Throws:
      IllegalArgumentException - if source is null
    • InvocationEvent

      protected InvocationEvent(Object source, int id, Runnable runnable, Object notifier, boolean catchThrowables)
      Constructs an InvocationEvent with the specified source and ID which will execute the runnable's run() method when dispatched. If notifier is non-null, notifyAll() will be called on it immediately after run() has returned or thrown an exception.

      This method throws an IllegalArgumentException if source is null.

      Parameters:
      source - The Object that originated the event
      id - An integer indicating the type of event. For information on allowable values, see the class description for InvocationEvent
      runnable - The Runnable whose run() method will be executed
      notifier - The Object whose notifyAll method will be called after Runnable.run has returned or thrown an exception or after the event was disposed
      catchThrowables - Specifies whether dispatch should catch Throwable when executing the Runnable's run() method, or should instead propagate those Throwables to the EventDispatchThread's dispatch loop
      Throws:
      IllegalArgumentException - if source is null
      See Also:
  • Method Details

    • dispatch

      public void dispatch()
      Executes the Runnable's run() method and notifies the notifier (if any) when run() has returned or thrown an exception.
      Specified by:
      dispatch in interface ActiveEvent
      See Also:
    • getException

      public Exception getException()
      Returns any Exception caught while executing the Runnable's run() method.
      Returns:
      A reference to the Exception if one was thrown; null if no Exception was thrown or if this InvocationEvent does not catch exceptions
    • getThrowable

      public Throwable getThrowable()
      Returns any Throwable caught while executing the Runnable's run() method.
      Returns:
      A reference to the Throwable if one was thrown; null if no Throwable was thrown or if this InvocationEvent does not catch Throwables
      Since:
      1.5
    • getWhen

      public long getWhen()
      Returns the timestamp of when this event occurred.
      Returns:
      this event's timestamp
      Since:
      1.4
    • isDispatched

      public boolean isDispatched()
      Returns true if the event is dispatched or any exception is thrown while dispatching, false otherwise. The method should be called by a waiting thread that calls the notifier.wait() method. Since spurious wakeups are possible (as explained in Object.wait()), this method should be used in a waiting loop to ensure that the event got dispatched:
          while (!event.isDispatched()) {
              notifier.wait();
          }
      
      If the waiting thread wakes up without dispatching the event, the isDispatched() method returns false, and the while loop executes once more, thus, causing the awakened thread to revert to the waiting mode.

      If the notifier.notifyAll() happens before the waiting thread enters the notifier.wait() method, the while loop ensures that the waiting thread will not enter the notifier.wait() method. Otherwise, there is no guarantee that the waiting thread will ever be woken from the wait.

      Returns:
      true if the event has been dispatched, or any exception has been thrown while dispatching, false otherwise
      Since:
      1.7
      See Also:
    • paramString

      public String paramString()
      Returns a parameter string identifying this event. This method is useful for event-logging and for debugging.
      Overrides:
      paramString in class AWTEvent
      Returns:
      A string identifying the event and its attributes