com.sdm.quasar.client.core.common.event
Interface EventDispatchThreadService

All Superinterfaces:
Service
All Known Implementing Classes:
DefaultEventDispatchThreadService, SwingEventDispatchThreadService

public interface EventDispatchThreadService
extends Service

This interface defines methods that are intended to be useful for systems/GUIs, that have a special 'event dispatch thread' - a special thread, that is only allowed to modify the GUI and that is the only thread to handle GUI events from the system. An example for this is Swing. This interface abstracts from the Swing case and allows different implementations. In non-event-dispatch-aware clients (like web-clients) a trivial implementation for this interface exists.

Version:
1.0
Author:
Thomas Wolf

Method Summary
 boolean isEventDispatchThread()
          Returns true if the current thread is an AWT event dispatching thread.
 java.lang.Object runInEventDispatchThread(ExceptionRunnable runnable)
          Runs the given ExceptionRunnable in the event dispatch thread.
 void runInEventDispatchThread(java.lang.Runnable runnable)
          Runs the given Runnable in the event dispatch thread.
 void runLaterInEventDispatchThread(java.lang.Runnable runnable)
          Causes runnable to have its run() method called in the event dispatch thread.
 void runLaterNotInEventDispatchThread(java.lang.Runnable runnable)
          Causes runnable to have its run() method called outside the event dispatch thread.
 java.lang.Object runNotInEventDispatchThread(ExceptionRunnable runnable)
          Runs the given ExceptionRunnable not in the event dispatch thread.
 void runNotInEventDispatchThread(java.lang.Runnable runnable)
          Runs the given Runnable not in the event dispatch thread.
 void runOrRunLaterInEventDispatchThread(java.lang.Runnable runnable)
          Causes runnable to have its run() method called in the dispatch thread of the EventQueue.
 void waitForCondition(Condition condition)
          Waits for the condition given without blocking event processing.
 

Method Detail

isEventDispatchThread

public boolean isEventDispatchThread()
Returns true if the current thread is an AWT event dispatching thread.


waitForCondition

public void waitForCondition(Condition condition)
                      throws java.lang.InterruptedException
Waits for the condition given without blocking event processing.

Note: Implementation might wait on the object given.

Parameters:
condition - the Condition to wait for (until Condition.isFulfilled() returns true)
Throws:
java.lang.InterruptedException - if waiting was interrupted

runLaterInEventDispatchThread

public void runLaterInEventDispatchThread(java.lang.Runnable runnable)
Causes runnable to have its run() method called in the event dispatch thread. This will happen after all pending events are processed.

Parameters:
runnable - the Runnable whose run() method should be executed

runLaterNotInEventDispatchThread

public void runLaterNotInEventDispatchThread(java.lang.Runnable runnable)
Causes runnable to have its run() method called outside the event dispatch thread.

Parameters:
runnable - the Runnable whose run() method should be executed

runNotInEventDispatchThread

public java.lang.Object runNotInEventDispatchThread(ExceptionRunnable runnable)
                                             throws java.lang.Exception
Runs the given ExceptionRunnable not in the event dispatch thread.

Parameters:
runnable - the ExceptionRunnable to run
Returns:
the return value returned by ExceptionRunnable.run()
Throws:
java.lang.InterruptedException - if the executing thread was interrupted
java.lang.Exception - any exception thrown by the ExceptionRunnable

runNotInEventDispatchThread

public void runNotInEventDispatchThread(java.lang.Runnable runnable)
Runs the given Runnable not in the event dispatch thread.

Parameters:
runnable - the Runnable to run
Throws:
WrappedCheckedException - if a InterruptedException occured

runInEventDispatchThread

public java.lang.Object runInEventDispatchThread(ExceptionRunnable runnable)
                                          throws java.lang.Exception
Runs the given ExceptionRunnable in the event dispatch thread.

Parameters:
runnable - the ExceptionRunnable to run
Returns:
the return value returned by ExceptionRunnable.run()
Throws:
java.lang.InterruptedException - if the executing thread was interrupted
java.lang.Exception - any exception thrown by the ExceptionRunnable

runInEventDispatchThread

public void runInEventDispatchThread(java.lang.Runnable runnable)
Runs the given Runnable in the event dispatch thread.

Parameters:
runnable - the Runnable to run
Throws:
WrappedCheckedException - if a InterruptedException occured

runOrRunLaterInEventDispatchThread

public void runOrRunLaterInEventDispatchThread(java.lang.Runnable runnable)
Causes runnable to have its run() method called in the dispatch thread of the EventQueue. This will happen eighter immediately on method execution (if called from the event dispatch thread) or after all pending events are processed (if called from another thread).

Note: This method may or may not return before the runnable gets executed within the EDT. In opposite to runLaterInEventDispatchThread(Runnable) it calls the runnable faster (immediately), if called within the EDT.

Parameters:
runnable - the Runnable whose run() method should be executed synchronously on the EventQueue
See Also:
runLaterInEventDispatchThread(Runnable)