src/share/classes/java/awt/event/InvocationEvent.java

Print this page

        

*** 26,35 **** --- 26,38 ---- package java.awt.event; import java.awt.ActiveEvent; import java.awt.AWTEvent; + import sun.awt.AWTAccessor; + import sun.awt.AWTInterruptedException; + /** * An event which executes the <code>run()</code> method on a <code>Runnable * </code> when dispatched by the AWT event dispatcher thread. This class can * be used as a reference implementation of <code>ActiveEvent</code> rather * than declaring a new class and defining <code>dispatch()</code>.<p>
*** 125,134 **** --- 128,147 ---- /* * JDK 1.1 serialVersionUID. */ private static final long serialVersionUID = 436056344909459450L; + static { + AWTAccessor.setInvocationEventAccessor( + new AWTAccessor.InvocationEventAccessor() { + @Override + public void dispose(InvocationEvent ie) { + ie.dispose(); + } + }); + } + /** * Constructs an <code>InvocationEvent</code> with the specified * source which will execute the runnable's <code>run</code> * method when dispatched. * <p>This is a convenience constructor. An invocation of the form
*** 226,235 **** --- 239,261 ---- this.notifier = notifier; this.catchExceptions = catchThrowables; this.when = System.currentTimeMillis(); } + /* + * Marks the event as dispatched and notifies all interested parties. + */ + private void setDispatched() { + dispatched = true; + + if (notifier != null) { + synchronized (notifier) { + notifier.notifyAll(); + } + } + } + /** * Executes the Runnable's <code>run()</code> method and notifies the * notifier (if any) when <code>run()</code> has returned or thrown an exception. * * @see #isDispatched
*** 249,266 **** } else { runnable.run(); } } finally { ! dispatched = true; ! ! if (notifier != null) { ! synchronized (notifier) { ! notifier.notifyAll(); ! } } } } /** * Returns any Exception caught while executing the Runnable's <code>run() * </code> method. --- 275,294 ---- } else { runnable.run(); } } finally { ! setDispatched(); } } + + private void dispose() { + throwable = exception = + new AWTInterruptedException( + "The event is discarded due to Event Thread interruption"); + + setDispatched(); } /** * Returns any Exception caught while executing the Runnable's <code>run() * </code> method.