Changes in trunk [1738:1732] in josm
- Location:
- trunk/src/org/openstreetmap/josm
- Files:
-
- 8 edited
-
actions/PreferencesAction.java (modified) (2 diffs)
-
data/coor/LatLon.java (modified) (1 diff)
-
gui/PleaseWaitRunnable.java (modified) (5 diffs)
-
gui/layer/GeoImageLayer.java (modified) (1 diff)
-
gui/layer/GpxLayer.java (modified) (3 diffs)
-
io/OsmWriter.java (modified) (1 diff)
-
plugins/PluginDownloader.java (modified) (5 diffs)
-
plugins/PluginSelection.java (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/actions/PreferencesAction.java
r1738 r1732 37 37 */ 38 38 public void actionPerformed(ActionEvent e) { 39 run();39 new Thread(this).start(); 40 40 } 41 41 … … 75 75 dlg.setBounds(targetX, targetY, targetWidth, targetHeight); 76 76 77 dlg.setModal(true);78 77 dlg.setVisible(true); 79 78 if (pane.getValue() instanceof Integer && (Integer)pane.getValue() == JOptionPane.OK_OPTION) -
trunk/src/org/openstreetmap/josm/data/coor/LatLon.java
r1738 r1732 148 148 149 149 public LatLon interpolate(LatLon ll2, double proportion) { 150 return new LatLon(this. lat() + proportion * (ll2.lat() - this.lat()),151 this. lon() + proportion * (ll2.lon() - this.lon()));150 return new LatLon(this.x + proportion * (ll2.x - this.x), 151 this.y + proportion * (ll2.y - this.y)); 152 152 } 153 153 154 154 public LatLon getCenter(LatLon ll2) { 155 return new LatLon((this. lat() + ll2.lat())/2.0, (this.lon() + ll2.lon())/2.0);155 return new LatLon((this.x + ll2.x)/2.0, (this.y + ll2.y)/2.0); 156 156 } 157 157 -
trunk/src/org/openstreetmap/josm/gui/PleaseWaitRunnable.java
r1738 r1732 9 9 import java.awt.event.WindowAdapter; 10 10 import java.awt.event.WindowEvent; 11 import java.awt.event.WindowListener;12 11 import java.io.FileNotFoundException; 13 12 import java.io.IOException; … … 37 36 private final String title; 38 37 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 60 38 /** 61 39 * Create the runnable object with a given message for the user. … … 75 53 this.title = title; 76 54 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 }); 77 74 } 78 75 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() { 76 public final void run() { 93 77 try { 94 78 try { 79 if (cancelled) 80 return; // since realRun isn't executed, do not call to finish 81 82 // reset dialog state 83 Main.pleaseWaitDlg.setTitle(title); 84 Main.pleaseWaitDlg.cancel.setEnabled(true); 85 Main.pleaseWaitDlg.setCustomText(""); 86 errorMessage = null; 87 closeDialogCalled = false; 88 89 // show the dialog 90 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 95 102 realRun(); 96 103 } catch (SAXException x) { … … 122 129 }); 123 130 } 124 }125 }126 127 public final void run() {128 if (cancelled)129 return; // since realRun isn't executed, do not call to finish130 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();145 131 } 146 132 } … … 179 165 Main.pleaseWaitDlg.setVisible(false); 180 166 Main.pleaseWaitDlg.dispose(); 181 Main.pleaseWaitDlg.removeWindowListener(windowListener);182 Main.pleaseWaitDlg.cancel.removeActionListener(cancelListener);183 167 } 184 168 if (errorMessage != null && !silent) { -
trunk/src/org/openstreetmap/josm/gui/layer/GeoImageLayer.java
r1738 r1732 686 686 Date time = new Date(tp.time.getTime() - (delta+gpstimezone)); 687 687 if (time.after(e.time) && lastTP != null) { 688 e.pos = new CachedLatLon(lastTP.pos.getCenter(tp.pos));688 e.pos.setCoor(lastTP.pos.getCenter(tp.pos)); 689 689 break; 690 690 } -
trunk/src/org/openstreetmap/josm/gui/layer/GpxLayer.java
r1738 r1732 485 485 hdop = 0; 486 486 } 487 int hdoplvl = Math.round(hdop * Main.pref.getInteger("hdop.factor", 25));487 int hdoplvl = Math.round(hdop * 25); 488 488 // High hdop is bad, but high values in colors are green. 489 489 // Therefore inverse the logic … … 1093 1093 WayPoint R = null; 1094 1094 for (WayPoint S : seg) { 1095 EastNorth c = R.getEastNorth();1096 1095 if (R == null) { 1096 EastNorth c = R.getEastNorth(); 1097 1097 R = S; 1098 1098 rx = c.east(); … … 1107 1107 } 1108 1108 } else { 1109 EastNorth c = S.getEastNorth(); 1109 1110 sx = c.east(); 1110 1111 sy = c.north(); -
trunk/src/org/openstreetmap/josm/io/OsmWriter.java
r1738 r1732 169 169 } 170 170 for (Entry<String, String> e : osm.keys.entrySet()) { 171 if ( (osm instanceof Changeset) ||!("created_by".equals(e.getKey())))171 if (!("created_by".equals(e.getKey()))) 172 172 out.println(" <tag k='"+ XmlWriter.encode(e.getKey()) + 173 173 "' v='"+XmlWriter.encode(e.getValue())+ "' />"); -
trunk/src/org/openstreetmap/josm/plugins/PluginDownloader.java
r1738 r1732 11 11 import java.io.BufferedWriter; 12 12 import java.io.File; 13 import java.io.FileNotFoundException; 13 14 import java.io.FileOutputStream; 15 import java.io.FileWriter; 14 16 import java.io.FilenameFilter; 15 17 import java.io.IOException; … … 18 20 import java.io.OutputStream; 19 21 import java.io.OutputStreamWriter; 22 import java.net.MalformedURLException; 20 23 import java.net.URL; 21 24 import java.util.Arrays; 25 import java.util.concurrent.Future; 22 26 import java.util.Collection; 23 27 import java.util.LinkedList; … … 25 29 import javax.swing.JOptionPane; 26 30 31 import org.openstreetmap.josm.actions.AboutAction; 27 32 import org.openstreetmap.josm.Main; 28 import org.openstreetmap.josm.actions.AboutAction;29 33 import org.openstreetmap.josm.gui.ExtendedDialog; 30 34 import org.openstreetmap.josm.gui.PleaseWaitRunnable; … … 62 66 if (!pluginDir.exists()) 63 67 pluginDir.mkdirs(); 64 Main.pleaseWaitDlg.progress.setMaximum(toUpdate.size());65 int progressValue = 0;66 68 for (PluginInformation d : toUpdate) { 67 Main.pleaseWaitDlg.progress.setValue(progressValue++);68 69 Main.pleaseWaitDlg.currentAction.setText(tr("Downloading Plugin {0}...", d.name)); 69 70 File pluginFile = new File(pluginDir, d.name + ".jar.new"); … … 144 145 145 146 public Collection<PluginInformation> download(Collection<PluginInformation> download) { 146 // Execute task in current thread instead of executing it in other thread and waiting for result147 // Waiting for result is not a good idea because the waiting thread will probably be either EDT148 // or worker thread. Blocking one of these threads will cause deadlock149 147 UpdateTask t = new UpdateTask(download, false); 150 t.run(); 151 return t.failed; 148 try { 149 Future<UpdateTask> ta = Main.worker.submit(t, t); 150 t = ta.get(); 151 return t.failed; 152 } 153 catch(java.lang.InterruptedException e) {e.printStackTrace();} 154 catch(java.util.concurrent.ExecutionException e) {e.printStackTrace();} 155 return download; 152 156 } 153 157 -
trunk/src/org/openstreetmap/josm/plugins/PluginSelection.java
r1738 r1732 9 9 import java.awt.event.ActionEvent; 10 10 import java.awt.event.ActionListener; 11 11 12 import java.io.BufferedReader; 12 13 import java.io.ByteArrayInputStream; … … 14 15 import java.io.FileInputStream; 15 16 import java.io.InputStreamReader; 17 import java.io.IOException; 16 18 import java.util.Arrays; 17 19 import java.util.Collection; … … 23 25 import java.util.Map; 24 26 import java.util.Set; 27 import java.util.SortedMap; 25 28 import java.util.TreeMap; 26 29 import java.util.Map.Entry; … … 69 72 PluginInformation description = availablePlugins.get(local.name); 70 73 71 if (description.version != null && !description.version.equals(local.version)) { 74 if (description != null && (description.version == null || description.version.equals("")) ? 75 (local.version != null && local.version.equals("")) : !description.version.equals(local.version)) { 72 76 toUpdate.add(description); 73 77 toUpdateStr.append(description.name+"\n"); … … 93 97 } 94 98 95 public boolean finish() {99 public Boolean finish() { 96 100 Collection<PluginInformation> toDownload = new LinkedList<PluginInformation>(); 97 Collection<String> installedPlugins = Main.pref.getCollection("plugins", null);98 99 101 String msg = ""; 100 102 for (Entry<String, Boolean> entry : pluginMap.entrySet()) { 101 if(entry.getValue() && !installedPlugins.contains(entry.getKey()))103 if(entry.getValue()) 102 104 { 103 105 String name = entry.getKey(); … … 136 138 /* return true when plugin list changed */ 137 139 public void drawPanel(JPanel pluginPanel) { 138 loadPlugins();140 availablePlugins = getAvailablePlugins(); 139 141 Collection<String> enabledPlugins = Main.pref.getCollection("plugins", null); 140 142 … … 222 224 } 223 225 224 private void loadPlugins() { 225 availablePlugins = new TreeMap<String, PluginInformation>(new Comparator<String>(){ 226 /** 227 * Return information about a loaded plugin. 228 * 229 * Note that if you call this in your plugins bootstrap, you may get <code>null</code> if 230 * the plugin requested is not loaded yet. 231 * 232 * @return The PluginInformation to a specific plugin, but only if the plugin is loaded. 233 * If it is not loaded, <code>null</code> is returned. 234 */ 235 private static PluginInformation getLoaded(String pluginName) { 236 for (PluginProxy p : PluginHandler.pluginList) 237 if (p.info.name.equals(pluginName)) 238 return p.info; 239 return null; 240 } 241 242 private Map<String, PluginInformation> getAvailablePlugins() { 243 SortedMap<String, PluginInformation> availablePlugins = new TreeMap<String, PluginInformation>(new Comparator<String>(){ 226 244 public int compare(String o1, String o2) { 227 245 return o1.compareToIgnoreCase(o2); … … 330 348 localPlugins.put(proxy.info.name, proxy.info); 331 349 } 350 return availablePlugins; 332 351 } 333 352 }
Note: See TracChangeset
for help on using the changeset viewer.
