svn commit: r14296 - trunk/src/app/src/org/argouml/ui/ProgressMonitorWindow.java

[email protected]
Newsgroups gmane.comp.lang.uml.argouml.cvs
Message-ID <[email protected]>
Author: tfmorris
Date: 2008-04-06 12:32:58-0700
New Revision: 14296

Modified:
   trunk/src/app/src/org/argouml/ui/ProgressMonitorWindow.java

Log:
Make sure close happens on AWT event threat

Modified: trunk/src/app/src/org/argouml/ui/ProgressMonitorWindow.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/app/src/org/argouml/ui/ProgressMonitorWindow.java?view=diff&rev=14296&p1=trunk/src/app/src/org/argouml/ui/ProgressMonitorWindow.java&p2=trunk/src/app/src/org/argouml/ui/ProgressMonitorWindow.java&r1=14295&r2=14296
==============================================================================
--- trunk/src/app/src/org/argouml/ui/ProgressMonitorWindow.java	(original)
+++ trunk/src/app/src/org/argouml/ui/ProgressMonitorWindow.java	2008-04-06 12:32:58-0700
@@ -1,5 +1,5 @@
 // $Id$
-// Copyright (c) 2006-2007 The Regents of the University of California. All
+// Copyright (c) 2006-2008 The Regents of the University of California. All
 // Rights Reserved. Permission to use, copy, modify, and distribute this
 // software and its documentation without fee, and without a written
 // agreement is hereby granted, provided that the above copyright notice
@@ -47,7 +47,7 @@
         org.argouml.taskmgmt.ProgressMonitor {
     
     private ProgressMonitor pbar;
-    
+
     /**
      * initializes a ProgressMonitor
      * 
@@ -55,11 +55,11 @@
      * @param title     the (internationalized) title of the ProgressMonitor
      */
     public ProgressMonitorWindow(JFrame parent, String title) {
-        this.pbar = new ProgressMonitor(parent, 
+        pbar = new ProgressMonitor(parent, 
                 title,
                 null, 0, 100);
-        this.pbar.setMillisToDecideToPopup(250);       
-        this.pbar.setMillisToPopup(500);
+        pbar.setMillisToDecideToPopup(250);       
+        pbar.setMillisToPopup(500);
         parent.repaint();
         updateProgress(5);
         
@@ -71,7 +71,7 @@
      */
     public void progress(final ProgressEvent event) {
         final int progress = (int) event.getPosition();
-        if (this.pbar != null) {
+        if (pbar != null) {
             // File load/save gets done on a background thread, so we'll 
             // probably have to queue this to the Swing event thread
             if (!SwingUtilities.isEventDispatchThread()) {
@@ -91,7 +91,7 @@
      * @see org.argouml.application.api.ProgressMonitor#updateProgress(int)
      */
     public void updateProgress(final int progress) {
-        if (this.pbar != null) {
+        if (pbar != null) {
             pbar.setProgress(progress);
             Object[] args = new Object[] {String.valueOf(progress)};
             pbar.setNote(Translator.localize("dialog.progress.note", args));
@@ -103,15 +103,21 @@
      * @see org.argouml.application.api.ProgressMonitor#isCanceled()
      */
     public boolean isCanceled() {
-        return this.pbar != null && this.pbar.isCanceled();
+        return (pbar != null) && pbar.isCanceled();
     }
 
     /*
      * @see org.argouml.application.api.ProgressMonitor#close()
      */
     public void close() {
-        this.pbar.close();
-        this.pbar = null;
+        // Queue to event thread to prevent race during close
+        SwingUtilities.invokeLater(new Runnable() {
+            public void run() {
+                pbar.close();
+                pbar = null; 
+            }
+        });
+
     }
     
     // these settings are needed to make the ProgressMonitor pop up early
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.