Changeset 2319 in josm for trunk/src/org/openstreetmap/josm/gui/progress
- Timestamp:
- 2009-10-25T18:22:28+01:00 (15 years ago)
- Location:
- trunk/src/org/openstreetmap/josm/gui/progress
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/gui/progress/AbstractProgressMonitor.java
r1875 r2319 60 60 protected void checkState(State... expectedStates) { 61 61 for (State s:expectedStates) { 62 if (s == state) {62 if (s == state) 63 63 return; 64 }65 64 } 66 65 throw new ProgressException("Expected states are %s but current state is %s", Arrays.asList(expectedStates).toString(), state); … … 154 153 resetState(); 155 154 } 155 } 156 157 /** 158 * Default implementation is empty. Override in subclasses to display the log messages. 159 */ 160 public void appendLogMessage(String message) { 161 // do nothing 156 162 } 157 163 … … 327 333 private Request getRequest(AbstractProgressMonitor child) { 328 334 for (Request request:requests) { 329 if (request.originator == child) {335 if (request.originator == child) 330 336 return request; 331 }332 337 } 333 338 throw new ProgressException("Subtask %s not found", child); -
trunk/src/org/openstreetmap/josm/gui/progress/NullProgressMonitor.java
r1812 r2319 60 60 } 61 61 62 public void appendLogMessage(String message) { 63 } 64 62 65 public void setSilent(boolean value) { 63 66 } -
trunk/src/org/openstreetmap/josm/gui/progress/PleaseWaitProgressMonitor.java
r2057 r2319 1 1 // License: GPL. For details, see LICENSE file. 2 2 package org.openstreetmap.josm.gui.progress; 3 4 import static org.openstreetmap.josm.tools.I18n.tr;5 3 6 4 import java.awt.Dialog; … … 13 11 import java.awt.event.WindowEvent; 14 12 import java.awt.event.WindowListener; 15 import java.lang.reflect.InvocationTargetException;16 13 17 14 import javax.swing.JOptionPane; … … 35 32 36 33 public PleaseWaitProgressMonitor(String windowTitle) { 37 this(JOptionPane.getFrameForComponent(Main. map));34 this(JOptionPane.getFrameForComponent(Main.parent)); 38 35 this.windowTitle = windowTitle; 39 36 } … … 53 50 @Override public void windowClosing(WindowEvent e) { 54 51 cancel(); 55 closeDialog();56 52 } 57 53 }; 58 59 private void closeDialog() {60 try {61 Runnable runnable = new Runnable(){62 public void run() {63 }64 };65 66 // make sure, this is called in the dispatcher thread ASAP67 if (EventQueue.isDispatchThread()) {68 runnable.run();69 } else {70 EventQueue.invokeAndWait(runnable);71 }72 73 } catch (InterruptedException e) {74 } catch (InvocationTargetException e) {75 throw new RuntimeException(e);76 }77 }78 54 79 55 private void doInEDT(Runnable runnable) { … … 85 61 doInEDT(new Runnable() { 86 62 public void run() { 87 if (dialogParent instanceof Frame ) {88 dialog = new PleaseWaitDialog( (Frame)dialogParent);89 } else if (dialogParent instanceof Dialog ) {90 dialog = new PleaseWaitDialog( (Dialog)dialogParent);63 if (dialogParent instanceof Frame && dialog == null) { 64 dialog = new PleaseWaitDialog(dialogParent); 65 } else if (dialogParent instanceof Dialog && dialog == null) { 66 dialog = new PleaseWaitDialog(dialogParent); 91 67 } else 92 68 throw new ProgressException("PleaseWaitDialog parent must be either Frame or Dialog"); … … 95 71 dialog.setTitle(windowTitle); 96 72 } 97 dialog.cancel.setEnabled(true); 73 dialog.setCancelEnabled(true); 74 dialog.setCancelCallback(cancelListener); 98 75 dialog.setCustomText(""); 99 dialog.cancel.addActionListener(cancelListener);100 76 dialog.addWindowListener(windowListener); 101 77 dialog.progress.setMaximum(PROGRESS_BAR_MAX); … … 107 83 @Override 108 84 public void doFinishTask() { 109 doInEDT(new Runnable() { 110 public void run() { 111 if (dialog != null) { 112 dialog.setVisible(false); 113 dialog.dispose(); 114 dialog.removeWindowListener(windowListener); 115 dialog.cancel.removeActionListener(cancelListener); 116 if (getErrorMessage() != null) { 117 JOptionPane.showMessageDialog( 118 Main.parent, getErrorMessage(), 119 tr("Error"), 120 JOptionPane.ERROR_MESSAGE); 121 } 122 dialog = null; 123 } 124 } 125 }); 85 // do nothing 126 86 } 127 87 … … 164 124 public void run() { 165 125 if (value && dialog.progress.getValue() == 0) { 166 // Enable only if progress is at the beg ging. Doing intermediate progress in the middle126 // Enable only if progress is at the beginning. Doing intermediate progress in the middle 167 127 // will hide already reached progress 168 128 dialog.setIndeterminate(true); … … 179 139 } 180 140 141 @Override 142 public void appendLogMessage(final String message) { 143 doInEDT(new Runnable() { 144 public void run() { 145 dialog.appendLogMessage(message); 146 } 147 }); 148 } 149 150 public void close() { 151 dialog.setVisible(false); 152 dialog.setCancelCallback(null); 153 dialog.removeWindowListener(windowListener); 154 dialog.dispose(); 155 dialog = null; 156 } 181 157 } -
trunk/src/org/openstreetmap/josm/gui/progress/ProgressMonitor.java
r1875 r2319 123 123 void setErrorMessage(String message); 124 124 String getErrorMessage(); 125 126 /** 127 * Appends a message to the log managed by the progress monitor. 128 * 129 * @param message the log message. Ignored if null or white space only. 130 */ 131 void appendLogMessage(String message); 125 132 }
Note:
See TracChangeset
for help on using the changeset viewer.