Author: jm
Date: 2012-07-10 09:30:41 -0700 (Tue, 10 Jul 2012)
New Revision: 29820
Modified:
core3/impl/trunk/work-swing-impl/impl/src/main/java/org/cytoscape/work/internal/task/SwingTaskMonitor.java
Log:
Fixes #1240: Added check for UI dispatch thread with appropriate delegation
Modified:
core3/impl/trunk/work-swing-impl/impl/src/main/java/org/cytoscape/work/internal/task/SwingTaskMonitor.java
===================================================================
---
core3/impl/trunk/work-swing-impl/impl/src/main/java/org/cytoscape/work/internal/task/SwingTaskMonitor.java
2012-07-10 03:02:25 UTC (rev 29819)
+++
core3/impl/trunk/work-swing-impl/impl/src/main/java/org/cytoscape/work/internal/task/SwingTaskMonitor.java
2012-07-10 16:30:41 UTC (rev 29820)
@@ -5,6 +5,8 @@
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Future;
+import javax.swing.SwingUtilities;
+
import org.cytoscape.work.Task;
import org.cytoscape.work.TaskMonitor;
import org.slf4j.Logger;
@@ -55,6 +57,15 @@
}
public synchronized void open() {
+ if (!SwingUtilities.isEventDispatchThread()) {
+ SwingUtilities.invokeLater(new Runnable() {
+ @Override
+ public void run() {
+ open();
+ }
+ });
+ return;
+ }
if (dialog != null)
return;
@@ -77,7 +88,16 @@
* are being displayed there are no Swing related threading
* issues.
*/
- public void showDialog(boolean sd) {
+ public void showDialog(final boolean sd) {
+ if (!SwingUtilities.isEventDispatchThread()) {
+ SwingUtilities.invokeLater(new Runnable() {
+ @Override
+ public void run() {
+ showDialog(sd);
+ }
+ });
+ return;
+ }
showDialog = sd;
if ( dialog != null ) {
dialog.setVisible(showDialog);
@@ -117,18 +137,45 @@
}
public void setTitle(final String title) {
+ if (!SwingUtilities.isEventDispatchThread()) {
+ SwingUtilities.invokeLater(new Runnable() {
+ @Override
+ public void run() {
+ setTitle(title);
+ }
+ });
+ return;
+ }
this.title = title;
if (dialog != null)
dialog.setTaskTitle(title);
}
- public void setStatusMessage(String statusMessage) {
+ public void setStatusMessage(final String statusMessage) {
+ if (!SwingUtilities.isEventDispatchThread()) {
+ SwingUtilities.invokeLater(new Runnable() {
+ @Override
+ public void run() {
+ setStatusMessage(statusMessage);
+ }
+ });
+ return;
+ }
this.statusMessage = statusMessage;
if (dialog != null)
dialog.setStatus(statusMessage);
}
- public void setProgress(double progress) {
+ public void setProgress(final double progress) {
+ if (!SwingUtilities.isEventDispatchThread()) {
+ SwingUtilities.invokeLater(new Runnable() {
+ @Override
+ public void run() {
+ setProgress(progress);
+ }
+ });
+ return;
+ }
if ( progress < 0 ) {
if (dialog != null)
dialog.setPercentCompleted(-1);
@@ -141,7 +188,16 @@
}
}
- public synchronized void showException(Exception exception) {
+ public synchronized void showException(final Exception exception) {
+ if (!SwingUtilities.isEventDispatchThread()) {
+ SwingUtilities.invokeLater(new Runnable() {
+ @Override
+ public void run() {
+ showException(exception);
+ }
+ });
+ return;
+ }
// force the dialog box to be created if
// the Task throws an exception
if (dialog == null)
--
You received this message because you are subscribed to the Google Groups
"cytoscape-cvs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/cytoscape-cvs?hl=en.