com.sdm.quasar.client.swing.common.event
Class SwingEventDispatchThreadUtilities

java.lang.Object
  extended bycom.sdm.quasar.client.swing.common.event.SwingEventDispatchThreadUtilities

public final class SwingEventDispatchThreadUtilities
extends java.lang.Object

A utility class to run ExceptionRunnables or Runnables in- our outside the event dispatch thread.

Note: runNotInEventDispatchThread(com.sdm.quasar.client.core.common.event.ExceptionRunnable) uses thread pooling via com.dcag.s55.gool.core.event.ThreadPool#run(Runnable) using the global thread pool accessible via com.dcag.s55.gool.core.event.ThreadPool#getGlobalThreadPool(), which might be configured to match application needs.

Version:
1.0
Author:
Thomas Wolf

Method Summary
static boolean isEventDispatchThread()
          Returns true if the current thread is an AWT event dispatching thread.
static java.lang.Object runInEventDispatchThread(ExceptionRunnable runnable)
          Runs the given ExceptionRunnable in the event dispatch thread.
static void runInEventDispatchThread(java.lang.Runnable runnable)
          Runs the given Runnable in the event dispatch thread.
static void runLaterInEventDispatchThread(java.lang.Runnable runnable)
          Causes runnable to have its run() method called in the event dispatch thread.
static java.lang.Object runNotInEventDispatchThread(ExceptionRunnable runnable)
          Runs the given ExceptionRunnable not in the event dispatch thread.
static java.lang.Object runNotInEventDispatchThread(ExceptionRunnable runnable, boolean block_input_events)
          Runs the given ExceptionRunnable not in the event dispatch thread.
static void runNotInEventDispatchThread(java.lang.Runnable runnable)
          Runs the given Runnable not in the event dispatch thread.
static void runNotInEventDispatchThread(java.lang.Runnable runnable, boolean block_input_events)
          Runs the given Runnable not in the event dispatch thread.
static void runOrRunLaterInEventDispatchThread(java.lang.Runnable runnable)
          Causes runnable to have its run() method called in the dispatch thread of the EventQueue.
static void waitForCondition(Condition condition)
          Waits for the condition given without blocking event processing.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

runNotInEventDispatchThread

public static 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 static java.lang.Object runNotInEventDispatchThread(ExceptionRunnable runnable,
                                                           boolean block_input_events)
                                                    throws java.lang.Exception
Runs the given ExceptionRunnable not in the event dispatch thread.

Parameters:
runnable - the ExceptionRunnable to run
block_input_events - if true, any input event will be blocked as long as the operation runs. This forbids user interaction while exceuting the runnable but allows invokeLater and paint events etc. Set to false to make no restrictions on the events processed while running the operation.
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 static 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

runNotInEventDispatchThread

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

Parameters:
runnable - the Runnable to run
block_input_events - if true, any input event will be blocked as long as the operation runs. This forbids user interaction while exceuting the runnable but allows invokeLater and paint events etc. Set to false to make no restrictions on the events processed while running the operation.
Throws:
WrappedCheckedException - if a InterruptedException occured

runInEventDispatchThread

public static java.lang.Object runInEventDispatchThread(ExceptionRunnable runnable)
                                                 throws java.lang.InterruptedException,
                                                        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 static 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

isEventDispatchThread

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


runLaterInEventDispatchThread

public static 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 synchronously on the event queue

runOrRunLaterInEventDispatchThread

public static 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 #invokeLater(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:
#invokeLater(Runnable)

waitForCondition

public static 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