Changeset 1733 in josm for trunk/src/org/openstreetmap/josm/gui
- Timestamp:
- 2009-07-05T10:48:09+02:00 (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/gui/PleaseWaitRunnable.java
r1670 r1733 9 9 import java.awt.event.WindowAdapter; 10 10 import java.awt.event.WindowEvent; 11 import java.awt.event.WindowListener; 11 12 import java.io.FileNotFoundException; 12 13 import java.io.IOException; … … 36 37 private final String title; 37 38 39 private ActionListener cancelListener = new ActionListener(){ 40 public void actionPerformed(ActionEvent e) { 41 if (!cancelled) { 42 cancelled = true; 43 cancel(); 44 } 45 } 46 }; 47 48 private WindowListener windowListener = new WindowAdapter(){ 49 @Override public void windowClosing(WindowEvent e) { 50 if (!closeDialogCalled) { 51 if (!cancelled) { 52 cancelled = true; 53 cancel(); 54 } 55 closeDialog(); 56 } 57 } 58 }; 59 38 60 /** 39 61 * Create the runnable object with a given message for the user. … … 53 75 this.title = title; 54 76 this.ignoreException = ignoreException; 55 Main.pleaseWaitDlg.cancel.addActionListener(new ActionListener(){ 56 public void actionPerformed(ActionEvent e) { 57 if (!cancelled) { 58 cancelled = true; 59 cancel(); 60 } 61 } 62 }); 63 Main.pleaseWaitDlg.addWindowListener(new WindowAdapter(){ 64 @Override public void windowClosing(WindowEvent e) { 65 if (!closeDialogCalled) { 66 if (!cancelled) { 67 cancelled = true; 68 cancel(); 69 } 70 closeDialog(); 71 } 72 } 73 }); 74 } 75 76 public final void run() { 77 } 78 79 private void prepareDialog() { 80 // reset dialog state 81 errorMessage = null; 82 closeDialogCalled = false; 83 84 Main.pleaseWaitDlg.setTitle(title); 85 Main.pleaseWaitDlg.cancel.setEnabled(true); 86 Main.pleaseWaitDlg.setCustomText(""); 87 Main.pleaseWaitDlg.cancel.addActionListener(cancelListener); 88 Main.pleaseWaitDlg.addWindowListener(windowListener); 89 Main.pleaseWaitDlg.setVisible(true); 90 } 91 92 private void doRealRun() { 77 93 try { 78 94 try { 79 if (cancelled)80 return; // since realRun isn't executed, do not call to finish81 82 // reset dialog state83 Main.pleaseWaitDlg.setTitle(title);84 Main.pleaseWaitDlg.cancel.setEnabled(true);85 Main.pleaseWaitDlg.setCustomText("");86 errorMessage = null;87 closeDialogCalled = false;88 89 // show the dialog90 synchronized (this) {91 EventQueue.invokeLater(new Runnable() {92 public void run() {93 synchronized (PleaseWaitRunnable.this) {94 PleaseWaitRunnable.this.notifyAll();95 }96 Main.pleaseWaitDlg.setVisible(true);97 }98 });99 try {wait();} catch (InterruptedException e) {}100 }101 102 95 realRun(); 103 96 } catch (SAXException x) { … … 129 122 }); 130 123 } 124 } 125 } 126 127 public final void run() { 128 if (cancelled) 129 return; // since realRun isn't executed, do not call to finish 130 131 if (EventQueue.isDispatchThread()) { 132 new Thread(new Runnable() { 133 public void run() { 134 doRealRun(); 135 } 136 }).start(); 137 prepareDialog(); 138 } else { 139 EventQueue.invokeLater(new Runnable() { 140 public void run() { 141 prepareDialog(); 142 } 143 }); 144 doRealRun(); 131 145 } 132 146 } … … 165 179 Main.pleaseWaitDlg.setVisible(false); 166 180 Main.pleaseWaitDlg.dispose(); 181 Main.pleaseWaitDlg.removeWindowListener(windowListener); 182 Main.pleaseWaitDlg.cancel.removeActionListener(cancelListener); 167 183 } 168 184 if (errorMessage != null && !silent) {
Note:
See TracChangeset
for help on using the changeset viewer.