From aad62bd65d80057fefdbeaf9c950df5fcb95618c Mon Sep 17 00:00:00 2001 From: Manindra Moharana Date: Sun, 2 Mar 2014 21:44:29 +0530 Subject: [PATCH] now going around in circles with autosave --- .../mode/experimental/AutoSaveUtil.java | 47 ++++++++++++++++--- .../mode/experimental/DebugEditor.java | 44 +++++++++-------- 2 files changed, 64 insertions(+), 27 deletions(-) diff --git a/pdex/src/processing/mode/experimental/AutoSaveUtil.java b/pdex/src/processing/mode/experimental/AutoSaveUtil.java index d02f510fd..3141ed65a 100644 --- a/pdex/src/processing/mode/experimental/AutoSaveUtil.java +++ b/pdex/src/processing/mode/experimental/AutoSaveUtil.java @@ -27,6 +27,8 @@ import java.util.TimerTask; import processing.app.Base; import processing.app.Sketch; +import static processing.mode.experimental.ExperimentalMode.log; + /** * Autosave utility for saving sketch backups in the background after * certain intervals @@ -50,6 +52,8 @@ public class AutoSaveUtil { private File sketchFolder, sketchBackupFolder; + private static final String AUTOSAVEFOLDER = "__autosave__"; + /** * * @param dedit @@ -63,15 +67,36 @@ public class AutoSaveUtil { } else{ saveTime = timeOut * 60 * 1000; - ExperimentalMode.log("AutoSaver Interval(mins): " + timeOut); + log("AutoSaver Interval(mins): " + timeOut); } - autosaveDir = new File(editor.getSketch().getFolder().getAbsolutePath() + File.separator + "_autosave"); - sketchFolder = editor.getSketch().getFolder(); checkIfBackup(); + if(isAutoSaveBackup){ + sketchBackupFolder = sketchFolder; + } + else{ + autosaveDir = new File(editor.getSketch().getFolder().getAbsolutePath() + File.separator + AUTOSAVEFOLDER); + sketchFolder = editor.getSketch().getFolder(); + sketchBackupFolder = autosaveDir; + } } + /** + * If the sketch path looks like ../__autosave__/../FooSketch + * then assume this is a backup sketch + */ private void checkIfBackup(){ - + File parent = sketchFolder.getParentFile().getParentFile(); + if(parent.isDirectory() && parent.getName().equals(AUTOSAVEFOLDER)){ + isAutoSaveBackup = true; + log("IS AUTOSAVE " + sketchFolder.getAbsolutePath()); + } + } + + public File getActualSketchFolder(){ + if(isAutoSaveBackup) + return sketchFolder.getParentFile().getParentFile().getParentFile(); + else + return sketchFolder; } public boolean isAutoSaveBackup() { @@ -101,7 +126,11 @@ public class AutoSaveUtil { */ public void reloadAutosaveDir(){ while(isSaving); - autosaveDir = new File(editor.getSketch().getFolder().getAbsolutePath() + File.separator + "_autosave"); + autosaveDir = new File(editor.getSketch().getFolder().getAbsolutePath() + File.separator + AUTOSAVEFOLDER); + } + + public File getAutoSaveDir(){ + return autosaveDir; } /** @@ -124,12 +153,16 @@ public class AutoSaveUtil { * Start the auto save service */ public void init(){ + if(isAutoSaveBackup) { + log("AutoSaver not started"); + return; + } if(saveTime < 10000) saveTime = 10 * 1000; saveTime = 5 * 1000; //TODO: remove timer = new Timer(); timer.schedule(new SaveTask(), saveTime, saveTime); isSaving = false; - ExperimentalMode.log("AutoSaver started"); + log("AutoSaver started"); } /** @@ -156,7 +189,7 @@ public class AutoSaveUtil { boolean deleteOldSave = false; String oldSave = null; if(!autosaveDir.exists()){ - autosaveDir = new File(sc.getFolder().getAbsolutePath(), "_autosave"); + autosaveDir = new File(sc.getFolder().getAbsolutePath(), AUTOSAVEFOLDER); autosaveDir.mkdir(); } else diff --git a/pdex/src/processing/mode/experimental/DebugEditor.java b/pdex/src/processing/mode/experimental/DebugEditor.java index 42e6d2340..ee4735086 100755 --- a/pdex/src/processing/mode/experimental/DebugEditor.java +++ b/pdex/src/processing/mode/experimental/DebugEditor.java @@ -246,9 +246,6 @@ public class DebugEditor extends JavaEditor implements ActionListener { addXQModeUI(); debugToolbarEnabled = new AtomicBoolean(false); //log("Sketch Path: " + path); - - viewingAutosaveBackup = false; - log("DebugEdit constructed. Viewing auto save false " + viewingAutosaveBackup); } private void addXQModeUI(){ @@ -744,7 +741,7 @@ public class DebugEditor extends JavaEditor implements ActionListener { */ @Override protected boolean handleOpenInternal(String path) { - log("handleOpenInternal, path: " + path); + log("handleOpenInternal, path: " + path); boolean didOpen = super.handleOpenInternal(path); if (didOpen && dbg != null) { // should already been stopped (open calls handleStop) @@ -752,16 +749,12 @@ public class DebugEditor extends JavaEditor implements ActionListener { clearBreakpointedLines(); // force clear breakpoint highlights variableInspector().reset(); // clear contents of variable inspector } - - if(!viewingAutosaveBackup){ - log("Sketch isn't a backup"); - if(autosaver != null){ - log("stopping autosaver in handleOpenInternal"); - autosaver.stop(); - } + //if(didOpen){ + loadAutoSaver(); - } - log("handleOpenInternal, viewing autosave? " + viewingAutosaveBackup); + viewingAutosaveBackup = autosaver.isAutoSaveBackup(); + log("handleOpenInternal, viewing autosave? " + viewingAutosaveBackup); + //} return didOpen; } @@ -845,17 +838,30 @@ public class DebugEditor extends JavaEditor implements ActionListener { * copied to the main sketch directory, simply reload the main sketch. */ if(viewingAutosaveBackup){ + /* File files[] = autosaver.getSketchBackupFolder().listFiles(); File src = autosaver.getSketchBackupFolder(), dst = autosaver - .getSketchFolder(); + .getActualSketchFolder(); for (File f : files) { log("Copying " + f.getAbsolutePath() + " to " + dst.getAbsolutePath()); -// if(f.isFile()) - //Base.copyFile(f, new File(dst + File.separator + f.getName())); -// else -// Base.copyDir(f, new File(dst + File.separator + f.getName())); + try { + if (f.isFile()) { + f.delete(); + Base.copyFile(f, new File(dst + File.separator + f.getName())); + } else { + Base.removeDir(f); + Base.copyDir(f, new File(dst + File.separator + f.getName())); + } + } catch (IOException e) { + e.printStackTrace(); + } } + File sk = autosaver.getActualSketchFolder(); + Base.removeDir(autosaver.getAutoSaveDir()); + //handleOpenInternal(sk.getAbsolutePath() + File.separator + sk.getName() + ".pde"); + getBase().handleOpen(sk.getAbsolutePath() + File.separator + sk.getName() + ".pde"); //viewingAutosaveBackup = false; + */ } // note modified tabs @@ -933,7 +939,6 @@ public class DebugEditor extends JavaEditor implements ActionListener { autosaver.init(); return; } - if(viewingAutosaveBackup) return; File pastSave = autosaver.getPastSave(); int response = Base .showYesNoQuestion(this, @@ -944,7 +949,6 @@ public class DebugEditor extends JavaEditor implements ActionListener { "was closed unexpectedly last time.", "Select YES to view it or NO to delete the backup."); if(response == JOptionPane.YES_OPTION){ - viewingAutosaveBackup = true; handleOpenInternal(pastSave.getAbsolutePath()); // Base.showMessage("Save it..", "Remember to save the backup sketch to a specific location if you want to."); //log(getSketch().getMainFilePath());