From: <kp...@us...> - 2007-10-18 09:09:03
|
Revision: 10915 http://jedit.svn.sourceforge.net/jedit/?rev=10915&view=rev Author: kpouer Date: 2007-10-18 02:08:59 -0700 (Thu, 18 Oct 2007) Log Message: ----------- It is now possible to deactivate two stage save on slow VFS in the Saving & backups option panel (Feature #1811747) Modified Paths: -------------- jEdit/trunk/doc/CHANGES.txt jEdit/trunk/org/gjt/sp/jedit/Buffer.java jEdit/trunk/org/gjt/sp/jedit/bufferio/BufferSaveRequest.java jEdit/trunk/org/gjt/sp/jedit/jedit.props jEdit/trunk/org/gjt/sp/jedit/jedit_gui.props jEdit/trunk/org/gjt/sp/jedit/options/SaveBackupOptionPane.java Modified: jEdit/trunk/doc/CHANGES.txt =================================================================== --- jEdit/trunk/doc/CHANGES.txt 2007-10-18 07:06:20 UTC (rev 10914) +++ jEdit/trunk/doc/CHANGES.txt 2007-10-18 09:08:59 UTC (rev 10915) @@ -67,6 +67,9 @@ the user if he wants to stop hypersearch if a result count limit is reached. By default the count is 1000. It checks the limit before each file so it is possible that a few more results are found before asking (Matthieu Casanova) + +- It is now possible to deactivate two stage save on slow VFS in the Saving & + backups option panel (Feature #1811747) (Matthieu Casanova) }}} {{{ Editing Modified: jEdit/trunk/org/gjt/sp/jedit/Buffer.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/Buffer.java 2007-10-18 07:06:20 UTC (rev 10914) +++ jEdit/trunk/org/gjt/sp/jedit/Buffer.java 2007-10-18 09:08:59 UTC (rev 10915) @@ -24,23 +24,37 @@ package org.gjt.sp.jedit; //{{{ Imports + +import org.gjt.sp.jedit.browser.VFSBrowser; +import org.gjt.sp.jedit.buffer.*; +import org.gjt.sp.jedit.bufferio.BufferAutosaveRequest; +import org.gjt.sp.jedit.bufferio.BufferIORequest; +import org.gjt.sp.jedit.bufferio.BufferSaveRequest; +import org.gjt.sp.jedit.bufferio.MarkersSaveRequest; +import org.gjt.sp.jedit.gui.StyleEditor; +import org.gjt.sp.jedit.io.FileVFS; +import org.gjt.sp.jedit.io.VFS; +import org.gjt.sp.jedit.io.VFSFile; +import org.gjt.sp.jedit.io.VFSManager; +import org.gjt.sp.jedit.msg.BufferUpdate; +import org.gjt.sp.jedit.syntax.DefaultTokenHandler; +import org.gjt.sp.jedit.syntax.ParserRuleSet; +import org.gjt.sp.jedit.syntax.SyntaxStyle; +import org.gjt.sp.jedit.syntax.Token; +import org.gjt.sp.jedit.textarea.JEditTextArea; +import org.gjt.sp.jedit.textarea.Selection; +import org.gjt.sp.util.IntegerArray; +import org.gjt.sp.util.Log; + import javax.swing.*; -import javax.swing.text.*; +import javax.swing.text.AttributeSet; +import javax.swing.text.Segment; import java.io.File; import java.io.IOException; import java.net.Socket; -import java.util.*; -import org.gjt.sp.jedit.browser.VFSBrowser; -import org.gjt.sp.jedit.buffer.*; -import org.gjt.sp.jedit.gui.StyleEditor; -import org.gjt.sp.jedit.io.*; -import org.gjt.sp.jedit.msg.*; -import org.gjt.sp.jedit.syntax.*; -import org.gjt.sp.jedit.textarea.*; -import org.gjt.sp.jedit.bufferio.BufferIORequest; -import org.gjt.sp.jedit.bufferio.BufferAutosaveRequest; -import org.gjt.sp.jedit.bufferio.MarkersSaveRequest; -import org.gjt.sp.util.*; +import java.util.Enumeration; +import java.util.Hashtable; +import java.util.Vector; //}}} /** @@ -513,7 +527,7 @@ if(!MiscUtilities.isURL(savePath)) savePath = MiscUtilities.resolveSymlinks(savePath); savePath = vfs.getTwoStageSaveName(savePath); - if (jEdit.getBooleanProperty("twoStageSave") && (!vfsRenameCap || savePath == null)) + if (BufferSaveRequest.wantTwoStageSave(this) && (!vfsRenameCap || savePath == null)) { // the file is writeable but the vfs cannot do two stage. We must overwrite // readonly flag Modified: jEdit/trunk/org/gjt/sp/jedit/bufferio/BufferSaveRequest.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/bufferio/BufferSaveRequest.java 2007-10-18 07:06:20 UTC (rev 10914) +++ jEdit/trunk/org/gjt/sp/jedit/bufferio/BufferSaveRequest.java 2007-10-18 09:08:59 UTC (rev 10915) @@ -221,8 +221,17 @@ //{{{ wantTwoStageSave() method public static boolean wantTwoStageSave(Buffer buffer) { - return !buffer.getBooleanProperty("forbidTwoStageSave") && + + boolean wantTwoStageSave = !buffer.getBooleanProperty("forbidTwoStageSave") && (buffer.getBooleanProperty("overwriteReadonly") || jEdit.getBooleanProperty("twoStageSave")); + + if (wantTwoStageSave) + { + VFS vfs = VFSManager.getVFSForPath(buffer.getPath()); + boolean vfsLowLatencyCap = (vfs.getCapabilities() & VFS.LOW_LATENCY_CAP) != 0; + return vfsLowLatencyCap || jEdit.getBooleanProperty("twoStageSaveLowLatency"); + } + return false; }//}}} } Modified: jEdit/trunk/org/gjt/sp/jedit/jedit.props =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/jedit.props 2007-10-18 07:06:20 UTC (rev 10914) +++ jEdit/trunk/org/gjt/sp/jedit/jedit.props 2007-10-18 09:08:59 UTC (rev 10915) @@ -56,6 +56,9 @@ # Two-stage save (save to #filename#save# first, then filename) twoStageSave=true +# Two-stage save on low latency (it will be activated only if twoStageSave is on) +twoStageSaveLowLatency=true + # Strip trailing EOL stripTrailingEOL=true Modified: jEdit/trunk/org/gjt/sp/jedit/jedit_gui.props =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/jedit_gui.props 2007-10-18 07:06:20 UTC (rev 10914) +++ jEdit/trunk/org/gjt/sp/jedit/jedit_gui.props 2007-10-18 09:08:59 UTC (rev 10915) @@ -1862,6 +1862,7 @@ options.save-back.backupSuffix=Backup filename suffix: options.save-back.backupEverySave=Backup on every save options.save-back.twoStageSave=Two-stage save (safer but resets file owner on Unix) +options.save-back.twoStageSaveLowLatency=Activate two stage save on low latency FS options.save-back.confirmSaveAll="Save All Buffers" asks for confirmation options.save-back.autosaveUntitled=Autosave untitled buffers #}}} Modified: jEdit/trunk/org/gjt/sp/jedit/options/SaveBackupOptionPane.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/options/SaveBackupOptionPane.java 2007-10-18 07:06:20 UTC (rev 10914) +++ jEdit/trunk/org/gjt/sp/jedit/options/SaveBackupOptionPane.java 2007-10-18 09:08:59 UTC (rev 10915) @@ -53,7 +53,17 @@ twoStageSave.setSelected(jEdit.getBooleanProperty( "twoStageSave")); addComponent(twoStageSave); + ActionListener myActionListener = new MyActionListener(); + twoStageSave.addActionListener(myActionListener); + /* Two-stage save low latency */ + twoStageSaveLowLatency = new JCheckBox(jEdit.getProperty( + "options.save-back.twoStageSaveLowLatency")); + twoStageSaveLowLatency.setSelected(jEdit.getBooleanProperty( + "twoStageSaveLowLatency")); + twoStageSaveLowLatency.setEnabled(twoStageSave.isSelected()); + addComponent(twoStageSaveLowLatency); + /* Confirm save all */ confirmSaveAll = new JCheckBox(jEdit.getProperty( "options.save-back.confirmSaveAll")); @@ -80,7 +90,7 @@ backupDirectory = new JTextField(jEdit.getProperty( "backup.directory")); JButton browseBackupDirectory = new JButton("..."); - browseBackupDirectory.addActionListener(new MyActionListener()); + browseBackupDirectory.addActionListener(myActionListener); JPanel panel = new JPanel(new BorderLayout()); panel.add(backupDirectory); panel.add(browseBackupDirectory, BorderLayout.EAST); @@ -109,6 +119,7 @@ protected void _save() { jEdit.setBooleanProperty("twoStageSave",twoStageSave.isSelected()); + jEdit.setBooleanProperty("twoStageSaveLowLatency",twoStageSaveLowLatency.isSelected()); jEdit.setBooleanProperty("confirmSaveAll",confirmSaveAll.isSelected()); jEdit.setProperty("autosave", this.autosave.getText()); jEdit.setProperty("backups",backups.getText()); @@ -135,6 +146,7 @@ //{{{ Private members private JCheckBox twoStageSave; + private JCheckBox twoStageSaveLowLatency; private JCheckBox confirmSaveAll; private JTextField autosave; private JCheckBox autosaveUntitled; @@ -145,17 +157,26 @@ private JCheckBox backupEverySave; //}}} + //{{{ MyActionListener class private class MyActionListener implements ActionListener { public void actionPerformed(ActionEvent e) { - String[] choosenFolder = - GUIUtilities.showVFSFileDialog(null, + if (e.getSource() == twoStageSave) + { + twoStageSaveLowLatency.setEnabled(twoStageSave.isSelected()); + } + else + { + String[] choosenFolder = + GUIUtilities.showVFSFileDialog(null, backupDirectory.getText(), VFSBrowser.CHOOSE_DIRECTORY_DIALOG, false); - if (choosenFolder != null) - backupDirectory.setText(choosenFolder[0]); + if (choosenFolder != null) + backupDirectory.setText(choosenFolder[0]); + } } - } + } //}}} + } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |