Ignore:
Timestamp:
2010-11-29T08:24:10+01:00 (13 years ago)
Author:
bastiK
Message:

see #5559 - ExtendedDialog.showDialog() blocks when called in main thread, so move gui stuff to edt. This problem is highly system dependent (i could never reproduce it myself, but seems to be quite common)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/data/AutosaveTask.java

    r3675 r3679  
    55
    66import java.io.File;
    7 import java.io.FileInputStream;
    8 import java.io.FileNotFoundException;
    97import java.io.IOException;
    108import java.util.ArrayList;
     
    2220
    2321import org.openstreetmap.josm.Main;
     22import org.openstreetmap.josm.actions.OpenFileAction.OpenFileTask;
    2423import org.openstreetmap.josm.data.osm.DataSet;
    2524import org.openstreetmap.josm.data.osm.event.AbstractDatasetChangedEvent;
     
    3231import org.openstreetmap.josm.gui.layer.Layer;
    3332import org.openstreetmap.josm.gui.layer.OsmDataLayer;
    34 import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
    35 import org.openstreetmap.josm.io.IllegalDataException;
    3633import org.openstreetmap.josm.io.OsmExporter;
    37 import org.openstreetmap.josm.io.OsmReader;
    38 
     34
     35/**
     36 * Saves data layers periodically so they can be recovered in case of a crash.
     37 */
    3938public class AutosaveTask extends TimerTask implements LayerChangeListener, Listener {
    4039
     
    5554        final Deque<File> backupFiles = new LinkedList<File>();
    5655    }
    57 
    58     //"data layer 1_20100711_1330"
    5956
    6057    private final DataSetListenerAdapter datasetAdapter = new DataSetListenerAdapter(this);
     
    261258    }
    262259
    263     public List<OsmDataLayer> getUnsavedLayers() {
    264         List<OsmDataLayer> result = new ArrayList<OsmDataLayer>();
    265 
    266         for (File f: getUnsavedLayersFiles()) {
    267             try {
    268                 DataSet ds = OsmReader.parseDataSet(new FileInputStream(f), NullProgressMonitor.INSTANCE);
    269                 String layerName = f.getName();
    270                 layerName = layerName.substring(0, layerName.lastIndexOf('.'));
    271                 result.add(new OsmDataLayer(ds, layerName, null));
    272                 moveToDeletedLayersFolder(f);
    273             } catch (FileNotFoundException e) {
    274                 // Should not happen
    275                 System.err.println("File " + f.getAbsolutePath() + " not found");
    276             } catch (IllegalDataException e) {
    277                 System.err.println(tr("Unable to read autosaved osm data ({0}) - {1}", f.getAbsoluteFile(), e.getMessage()));
    278             }
    279         }
    280 
    281         return result;
     260    public void recoverUnsavedLayers() {
     261        List<File> files = getUnsavedLayersFiles();
     262        final OpenFileTask openFileTsk = new OpenFileTask(files, null, tr("Restoring files"));
     263        Main.worker.submit(openFileTsk);
     264        Main.worker.submit(new Runnable() {
     265            public void run() {
     266                for (File f: openFileTsk.getSuccessfullyOpenedFiles()) {
     267                    moveToDeletedLayersFolder(f);
     268                }
     269            }         
     270        });
    282271    }
    283272
Note: See TracChangeset for help on using the changeset viewer.