diff --git a/pdex/src/processing/mode/experimental/AutoSaveUtil.java b/pdex/src/processing/mode/experimental/AutoSaveUtil.java index 6eacf7902..5ed6f7751 100644 --- a/pdex/src/processing/mode/experimental/AutoSaveUtil.java +++ b/pdex/src/processing/mode/experimental/AutoSaveUtil.java @@ -17,6 +17,9 @@ public class AutoSaveUtil { private int saveTime; + private File autosaveDir; + + private boolean isSaving; /** * * @param dedit @@ -31,27 +34,31 @@ public class AutoSaveUtil { else{ saveTime = timeOut * 60 * 1000; } + autosaveDir = new File(editor.getSketch().getFolder().getAbsolutePath() + File.separator + "_autosave"); } public void init(){ if(saveTime < 1000) return; - saveTime = 3000; + saveTime = 10 * 1000; timer = new Timer(); timer.schedule(new SaveTask(), saveTime, saveTime); + isSaving = false; } - public void shutDown(){ + public void stop(){ + while(isSaving); // save operation mustn't be interrupted timer.cancel(); + Base.removeDir(autosaveDir); } private boolean saveSketch() throws IOException{ - + isSaving = true; Sketch sc = editor.getSketch(); - File autosaveDir = new File(sc.getFolder().getAbsolutePath() + File.separator + ".autosave"); + boolean deleteOldSave = false; String oldSave = null; if(!autosaveDir.exists()){ - autosaveDir = new File(sc.getFolder().getAbsolutePath(), ".autosave"); + autosaveDir = new File(sc.getFolder().getAbsolutePath(), "_autosave"); autosaveDir.mkdir(); } else @@ -74,6 +81,7 @@ public class AutoSaveUtil { Base.showMessage("Cannot Save", "A sketch with the cleaned name\n" + "“" + sanitaryName + "” already exists."); + isSaving = false; return false; } newName = sanitaryName; @@ -93,6 +101,7 @@ public class AutoSaveUtil { Base.showMessage("Nope", "You can't save the sketch as \"" + newName + "\"\n" + "because the sketch already has a tab with that name."); + isSaving = false; return false; } } @@ -181,7 +190,7 @@ public class AutoSaveUtil { if(deleteOldSave) Base.removeDir(new File(oldSave)); - + isSaving = false; return true; } diff --git a/pdex/src/processing/mode/experimental/DebugEditor.java b/pdex/src/processing/mode/experimental/DebugEditor.java index c949225e8..2fdfab086 100755 --- a/pdex/src/processing/mode/experimental/DebugEditor.java +++ b/pdex/src/processing/mode/experimental/DebugEditor.java @@ -331,7 +331,6 @@ public class DebugEditor extends JavaEditor implements ActionListener { */ @Override public void dispose() { - autosaver.shutDown(); //System.out.println("window dispose"); // quit running debug session dbg.stopDebug(); @@ -345,6 +344,7 @@ public class DebugEditor extends JavaEditor implements ActionListener { // Added temporarily to dump error log. TODO: Remove this later public void internalCloseRunner(){ if(ExperimentalMode.errorLogsEnabled) writeErrorsToFile(); + autosaver.stop(); super.internalCloseRunner(); } diff --git a/pdex/src/processing/mode/experimental/ExperimentalMode.java b/pdex/src/processing/mode/experimental/ExperimentalMode.java index 2ac6ad394..faccbd060 100755 --- a/pdex/src/processing/mode/experimental/ExperimentalMode.java +++ b/pdex/src/processing/mode/experimental/ExperimentalMode.java @@ -260,7 +260,7 @@ public class ExperimentalMode extends JavaMode { "application.macosx", "application.windows", "application.linux", - ".autosave" + "_autosave" }; } }