Changeset 3378 in josm
- Timestamp:
- 2010-07-20T08:54:22+02:00 (15 years ago)
- Location:
- trunk/src/org/openstreetmap/josm
- Files:
-
- 1 added
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/Main.java
r3340 r3378 362 362 363 363 I18n.fixJFileChooser(); 364 364 365 365 // init default coordinate format 366 366 // … … 508 508 } 509 509 510 public static boolean exitJosm(boolean exit) { 511 if (Main.saveUnsavedModifications()) { 512 Main.saveGuiGeometry(); 513 // Remove all layers because somebody may rely on layerRemoved events (like AutosaveTask) 514 if (Main.isDisplayingMapView()) { 515 Collection<Layer> layers = new ArrayList<Layer>(Main.map.mapView.getAllLayers()); 516 for (Layer l: layers) { 517 Main.map.mapView.removeLayer(l); 518 } 519 } 520 if (exit) { 521 System.exit(0); 522 return true; 523 } else 524 return true; 525 } else 526 return false; 527 } 528 510 529 /** 511 530 * The type of a command line parameter, to be used in switch statements. -
trunk/src/org/openstreetmap/josm/actions/ExitAction.java
r2715 r3378 2 2 package org.openstreetmap.josm.actions; 3 3 4 import static org.openstreetmap.josm.gui.help.HelpUtil.ht; 4 5 import static org.openstreetmap.josm.tools.I18n.tr; 5 import static org.openstreetmap.josm.gui.help.HelpUtil.ht;6 6 7 7 import java.awt.event.ActionEvent; … … 27 27 28 28 public void actionPerformed(ActionEvent e) { 29 if (Main.saveUnsavedModifications()) { 30 Main.saveGuiGeometry(); 31 System.exit(0); 32 } 29 Main.exitJosm(true); 33 30 } 34 31 } -
trunk/src/org/openstreetmap/josm/data/osm/DataSet.java
r3362 r3378 15 15 import java.util.List; 16 16 import java.util.Map; 17 import java.util.concurrent.CopyOnWriteArrayList; 17 18 import java.util.concurrent.locks.Lock; 18 19 import java.util.concurrent.locks.ReadWriteLock; … … 69 70 private Storage<OsmPrimitive> allPrimitives = new Storage<OsmPrimitive>(new IdHash(), 16, true); 70 71 private Map<PrimitiveId, OsmPrimitive> primitivesMap = allPrimitives.foreignKey(new IdHash()); 71 private List<DataSetListener> listeners = new ArrayList<DataSetListener>(); 72 private CopyOnWriteArrayList<DataSetListener> listeners = new CopyOnWriteArrayList<DataSetListener>(); 72 73 73 74 // Number of open calls to beginUpdate … … 839 840 840 841 public void addDataSetListener(DataSetListener dsl) { 841 listeners.add(dsl); 842 listeners.addIfAbsent(dsl); 842 843 } 843 844 … … 1001 1002 * Marks all "invisible" objects as deleted. These objects should be always marked as 1002 1003 * deleted when downloaded from the server. They can be undeleted later if necessary. 1003 * 1004 * 1004 1005 */ 1005 1006 public void deleteInvisible() { -
trunk/src/org/openstreetmap/josm/gui/MainApplication.java
r3287 r3378 25 25 26 26 import org.openstreetmap.josm.Main; 27 import org.openstreetmap.josm.data.AutosaveTask; 28 import org.openstreetmap.josm.gui.layer.OsmDataLayer; 27 29 import org.openstreetmap.josm.gui.preferences.server.OAuthAccessTokenHolder; 28 30 import org.openstreetmap.josm.gui.progress.ProgressMonitor; … … 59 61 mainFrame.addWindowListener(new WindowAdapter(){ 60 62 @Override public void windowClosing(final WindowEvent arg0) { 61 if (!Main.saveUnsavedModifications()) 62 return; 63 Main.saveGuiGeometry(); 64 System.exit(0); 63 Main.exitJosm(true); 65 64 } 66 65 }); … … 240 239 } 241 240 241 AutosaveTask autosaveTask = new AutosaveTask(); 242 List<OsmDataLayer> unsavedLayers = autosaveTask.getUnsavedLayers(); 243 if (!unsavedLayers.isEmpty()) { 244 ExtendedDialog dialog = new ExtendedDialog( 245 Main.parent, 246 tr("Unsaved osm data"), 247 new String[] {tr("Restore"), tr("Cancel")} 248 ); 249 dialog.setContent(tr("JOSM found {0} unsaved osm data layers. It looks like JOSM crashed last time. Do you want to restore data?", 250 unsavedLayers.size())); 251 dialog.setButtonIcons(new String[] {"ok.png", "cancel.png"}); 252 dialog.showDialog(); 253 if (dialog.getValue() == 1) { 254 for (OsmDataLayer layer: unsavedLayers) { 255 Main.main.addLayer(layer); 256 } 257 } 258 259 260 } 261 autosaveTask.schedule(); 262 263 242 264 EventQueue.invokeLater(new Runnable() { 243 265 public void run() { -
trunk/src/org/openstreetmap/josm/io/OsmExporter.java
r3083 r3378 68 68 69 69 OsmWriter w = new OsmWriter(new PrintWriter(writer), false, layer.data.getVersion()); 70 w.header(); 71 w.writeDataSources(layer.data); 72 w.writeContent(layer.data); 73 w.footer(); 74 w.close(); 70 layer.data.getReadLock().lock(); 71 try { 72 w.header(); 73 w.writeDataSources(layer.data); 74 w.writeContent(layer.data); 75 w.footer(); 76 w.close(); 77 } finally { 78 layer.data.getReadLock().unlock(); 79 } 75 80 // FIXME - how to close? 76 81 if (!Main.pref.getBoolean("save.keepbackup") && (tmpFile != null)) { -
trunk/src/org/openstreetmap/josm/tools/PlatformHookOsx.java
r3083 r3378 48 48 //System.out.println("Going to handle method "+method+" (short: "+method.getName()+") with event "+args[0]); 49 49 if (method.getName().equals("handleQuit")) { 50 handled = Main. saveUnsavedModifications();50 handled = Main.exitJosm(false); 51 51 } else if (method.getName().equals("handleAbout")) { 52 52 Main.main.menu.about.actionPerformed(null);
Note:
See TracChangeset
for help on using the changeset viewer.