Changeset 2319 in josm for trunk/src/org/openstreetmap
- Timestamp:
- 2009-10-25T18:22:28+01:00 (15 years ago)
- Location:
- trunk/src/org/openstreetmap/josm
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/actions/UploadAction.java
r2317 r2319 633 633 // we tried to delete an already deleted primitive. 634 634 // 635 System.out.println(tr("Warning: primitive ''{0}'' is already deleted on the server. Skipping this primitive and retrying to upload.", p.getDisplayName(DefaultNameFormatter.getInstance()))); 635 System.out.println(tr("Warning: object ''{0}'' is already deleted on the server. Skipping this object and retrying to upload.", p.getDisplayName(DefaultNameFormatter.getInstance()))); 636 monitor.appendLogMessage(tr("Object ''{0}'' is already deleted. Skipping object in upload.",p.getDisplayName(DefaultNameFormatter.getInstance()))); 636 637 processedPrimitives.addAll(writer.getProcessedPrimitives()); 637 638 processedPrimitives.add(p); … … 648 649 writer = new OsmServerWriter(); 649 650 try { 650 //651 651 while(true) { 652 652 try { 653 ProgressMonitor monitor = progressMonitor.createSubTaskMonitor(ProgressMonitor.ALL_TICKS, false);654 writer.uploadOsm(layer.data.version, toUpload, changeset, monitor);653 getProgressMonitor().subTask(tr("Uploading {0} objects ...", toUpload.size())); 654 writer.uploadOsm(layer.data.version, toUpload, changeset, getProgressMonitor().createSubTaskMonitor(1, false)); 655 655 processedPrimitives.addAll(writer.getProcessedPrimitives()); 656 // if we get here we've successfully uploaded the data. We 657 // can exit the loop. 656 // if we get here we've successfully uploaded the data. Exit the loop. 658 657 // 659 658 break; … … 672 671 } catch (Exception e) { 673 672 if (uploadCancelled) { 674 System.out.println( "Ignoring exception caught because upload is cancelled. Exception is: " + e.toString());673 System.out.println(tr("Ignoring caught exception because upload is canceled. Exception is: {0}", e.toString())); 675 674 return; 676 675 } -
trunk/src/org/openstreetmap/josm/gui/PleaseWaitDialog.java
r2050 r2319 2 2 package org.openstreetmap.josm.gui; 3 3 4 import java.awt.Dialog; 5 import java.awt.Frame; 4 import static org.openstreetmap.josm.tools.I18n.tr; 5 6 import java.awt.Component; 7 import java.awt.GridBagConstraints; 6 8 import java.awt.GridBagLayout; 9 import java.awt.event.ActionListener; 7 10 import java.awt.event.ComponentEvent; 8 11 import java.awt.event.ComponentListener; … … 13 16 import javax.swing.JDialog; 14 17 import javax.swing.JLabel; 18 import javax.swing.JOptionPane; 15 19 import javax.swing.JPanel; 16 20 import javax.swing.JProgressBar; 21 import javax.swing.JScrollPane; 22 import javax.swing.JTextArea; 17 23 import javax.swing.UIManager; 18 24 19 25 import org.openstreetmap.josm.Main; 20 26 import org.openstreetmap.josm.tools.GBC; 21 import org.openstreetmap.josm.tools.I 18n;27 import org.openstreetmap.josm.tools.ImageProvider; 22 28 23 29 public class PleaseWaitDialog extends JDialog { … … 28 34 private final JLabel customText = new JLabel(""); 29 35 public final BoundedRangeModel progress = progressBar.getModel(); 30 public final JButton cancel = new JButton(I18n.tr("Cancel")); 36 private JButton btnCancel; 37 /** the text area and the scroll pane for the log */ 38 private JTextArea taLog = new JTextArea(5,50); 39 private JScrollPane spLog; 31 40 32 41 private void initDialog() { … … 37 46 pane.add(customText, GBC.eol().fill(GBC.HORIZONTAL)); 38 47 pane.add(progressBar, GBC.eop().fill(GBC.HORIZONTAL)); 39 pane.add(cancel, GBC.eol().anchor(GBC.CENTER)); 48 btnCancel = new JButton(tr("Cancel")); 49 btnCancel.setIcon(ImageProvider.get("cancel")); 50 btnCancel.setToolTipText(tr("Click to cancel the current operation")); 51 pane.add(btnCancel, GBC.eol().anchor(GBC.CENTER)); 52 GridBagConstraints gc = GBC.eol().fill(GBC.BOTH); 53 gc.weighty = 1.0; 54 gc.weightx = 1.0; 55 pane.add(spLog = new JScrollPane(taLog), gc); 56 spLog.setVisible(false); 40 57 setContentPane(pane); 41 58 //setSize(Main.pref.getInteger("progressdialog.size",600),100); 42 59 setCustomText(""); 43 setLocationRelativeTo( Main.parent);60 setLocationRelativeTo(getParent()); 44 61 addComponentListener(new ComponentListener() { 45 62 public void componentHidden(ComponentEvent e) {} … … 55 72 } 56 73 57 public PleaseWaitDialog(Frame parent) { 58 super(parent, true); 59 initDialog(); 60 } 61 62 public PleaseWaitDialog(Dialog parent) { 63 super(parent, true); 74 public PleaseWaitDialog(Component parent) { 75 super(JOptionPane.getFrameForComponent(parent), true); 64 76 initDialog(); 65 77 } … … 70 82 } 71 83 84 protected void adjustLayout() { 85 invalidate(); 86 pack(); 87 setSize(Main.pref.getInteger("progressdialog.size", 600), getSize().height); 88 } 89 72 90 /** 73 91 * Sets a custom text line below currentAction. Can be used to display additional information … … 75 93 */ 76 94 public void setCustomText(String text) { 77 if(text .length() == 0) {95 if(text == null || text.trim().length() == 0) { 78 96 customText.setVisible(false); 79 setSize(Main.pref.getInteger("progressdialog.size", 600), 100);97 adjustLayout(); 80 98 return; 81 99 } 100 if (!customText.isVisible()) { 101 customText.setVisible(true); 102 adjustLayout(); 103 } 104 customText.setText(text); 105 } 82 106 83 customText.setVisible(true); 84 customText.setText(text); 85 setSize(Main.pref.getInteger("progressdialog.size", 600), 120); 107 /** 108 * Appends a log message to the progress dialog. If the log area isn't visible yet 109 * it becomes visible. The height of the progress dialog is slightly increased too. 110 * 111 * @param message the message to append to the log. Ignore if null or white space only. 112 */ 113 public void appendLogMessage(String message) { 114 if (message == null || message.trim().length() ==0 ) 115 return; 116 if (!spLog.isVisible()) { 117 spLog.setVisible(true); 118 taLog.setVisible(true); 119 adjustLayout(); 120 } 121 taLog.append(message); 122 taLog.append("\n"); 123 spLog.getVerticalScrollBar().setValue(spLog.getVerticalScrollBar().getMaximum()); 124 } 125 126 /** 127 * Sets whether the cancel button is enabled or not 128 * 129 * @param enabled true, if the cancel button is enabled; false otherwise 130 */ 131 public void setCancelEnabled(boolean enabled) { 132 btnCancel.setEnabled(enabled); 133 } 134 135 /** 136 * Installs a callback for the cancel button. If callback is null, all action listeners 137 * are removed from the cancel button. 138 * 139 * @param callback the cancel callback 140 */ 141 public void setCancelCallback(ActionListener callback) { 142 if (callback == null) { 143 ActionListener[] listeners = btnCancel.getActionListeners(); 144 for (ActionListener l: listeners) { 145 btnCancel.removeActionListener(l); 146 } 147 } else { 148 btnCancel.addActionListener(callback); 149 } 86 150 } 87 151 } -
trunk/src/org/openstreetmap/josm/gui/PleaseWaitRunnable.java
r2025 r2319 39 39 /** 40 40 * Create the runnable object with a given message for the user. 41 * @param title Message for user 42 * @param ignoreException If true, exception will be propaged to calling code. If false then 41 * 42 * @param title message for the user 43 * @param ignoreException If true, exception will be propagated to calling code. If false then 43 44 * exception will be thrown directly in EDT. When this runnable is executed using executor framework 44 45 * then use false unless you read result of task (because exception will get lost if you don't) … … 52 53 this.progressMonitor = progressMonitor == null?new PleaseWaitProgressMonitor(title):progressMonitor; 53 54 this.ignoreException = ignoreException; 54 this.progressMonitor.addCancelListener(this);55 55 } 56 56 … … 58 58 try { 59 59 try { 60 progressMonitor.addCancelListener(this); 60 61 progressMonitor.beginTask(title); 61 62 try { … … 90 91 } finally { 91 92 progressMonitor.finishTask(); 93 progressMonitor.removeCancelListener(this); 94 if (progressMonitor instanceof PleaseWaitProgressMonitor) { 95 ((PleaseWaitProgressMonitor)progressMonitor).close(); 96 } 92 97 } 93 98 } catch (final Throwable e) { -
trunk/src/org/openstreetmap/josm/gui/dialogs/ToggleDialog.java
r2301 r2319 359 359 } 360 360 }); 361 addMouseListener(362 new MouseAdapter() {363 @Override364 public void mouseEntered(MouseEvent e) {365 super.mouseEntered(e);366 System.out.println("requesting focus ...");367 requestFocusInWindow();368 }369 }370 );371 361 372 362 String bounds = Main.pref.get(preferencePrefix+".bounds",null); -
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.