From: <her...@us...> - 2006-10-20 17:13:34
|
Revision: 7627 http://svn.sourceforge.net/jedit/?rev=7627&view=rev Author: hertzhaft Date: 2006-10-20 10:13:12 -0700 (Fri, 20 Oct 2006) Log Message: ----------- Automatic reload of a changed buffer without prompting (feature request #1578785), not persistent yet. Autoreload settings configurable per buffer. Factored out options/BufferOptionPane. Modified Paths: -------------- jEdit/trunk/org/gjt/sp/jedit/Buffer.java jEdit/trunk/org/gjt/sp/jedit/gui/BufferOptions.java jEdit/trunk/org/gjt/sp/jedit/jEdit.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/GeneralOptionPane.java jEdit/trunk/org/gjt/sp/jedit/perspective.dtd Added Paths: ----------- jEdit/trunk/org/gjt/sp/jedit/options/BufferOptionPane.java Modified: jEdit/trunk/org/gjt/sp/jedit/Buffer.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/Buffer.java 2006-10-20 13:45:04 UTC (rev 7626) +++ jEdit/trunk/org/gjt/sp/jedit/Buffer.java 2006-10-20 17:13:12 UTC (rev 7627) @@ -588,6 +588,49 @@ this.modTime = modTime; } //}}} + //{{{ getAutoReload() method + /** + * Returns the status of the AUTORELOAD flag + * If true, reload changed files automatically + */ + public boolean getAutoReload() + { + return getFlag(AUTORELOAD); + } //}}} + + //{{{ setAutoReload() method + /** + * Sets the status of the AUTORELOAD flag + * @param value # If true, reload changed files automatically + */ + public void setAutoReload(boolean value) + { + setFlag(AUTORELOAD, value); + } //}}} + + //{{{ getAutoReloadDialog() method + /** + * Returns the status of the AUTORELOAD_DIALOG flag + * If true, prompt for reloading or notify user + * when the file has changed on disk + */ + public boolean getAutoReloadDialog() + { + return getFlag(AUTORELOAD_DIALOG); + } //}}} + + //{{{ setAutoReloadDialog() method + /** + * Sets the status of the AUTORELOAD_DIALOG flag + * @param value # If true, prompt for reloading or notify user + * when the file has changed on disk + + */ + public void setAutoReloadDialog(boolean value) + { + setFlag(AUTORELOAD_DIALOG, value); + } //}}} + //{{{ getVFS() method /** * Returns the virtual filesystem responsible for loading and @@ -1493,6 +1536,8 @@ */ setFlag(UNTITLED,newFile); setFlag(NEW_FILE,newFile); + setFlag(AUTORELOAD,jEdit.getBooleanProperty("autoReload")); + setFlag(AUTORELOAD_DIALOG,jEdit.getBooleanProperty("autoReloadDialog")); } //}}} //{{{ commitTemporary() method @@ -1556,6 +1601,8 @@ private static final int NEW_FILE = 3; private static final int UNTITLED = 4; private static final int AUTOSAVE_DIRTY = 5; + private static final int AUTORELOAD = 6; + private static final int AUTORELOAD_DIALOG = 7; private static final int TEMPORARY = 10; private static final int MARKERS_CHANGED = 12; //}}} Modified: jEdit/trunk/org/gjt/sp/jedit/gui/BufferOptions.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/gui/BufferOptions.java 2006-10-20 13:45:04 UTC (rev 7626) +++ jEdit/trunk/org/gjt/sp/jedit/gui/BufferOptions.java 2006-10-20 17:13:12 UTC (rev 7627) @@ -49,324 +49,73 @@ //{{{ Imports import javax.swing.border.EmptyBorder; - import javax.swing.*; - import java.awt.*; - import java.awt.event.*; import java.util.Arrays; import org.gjt.sp.jedit.buffer.FoldHandler; import org.gjt.sp.jedit.buffer.JEditBuffer; +import org.gjt.sp.jedit.options.BufferOptionPane; import org.gjt.sp.jedit.*; //}}} - - /** * Buffer-specific options dialog. - * @author Slava Pestov - * @version $Id$ - * - */ public class BufferOptions extends EnhancedDialog - { - //{{{ BufferOptions constructor public BufferOptions(View view, Buffer buffer) - { - super(view,jEdit.getProperty("buffer-options.title"),true); - this.view = view; - this.buffer = buffer; - - JPanel content = new JPanel(new BorderLayout()); - content.setBorder(new EmptyBorder(12,12,12,12)); - setContentPane(content); - - ActionHandler actionListener = new ActionHandler(); + panel = new BufferOptionPane(); - AbstractOptionPane panel = new AbstractOptionPane(null); - - - - panel.addComponent(GUIUtilities.createMultilineLabel( - - jEdit.getProperty("buffer-options.caption"))); - - - - panel.addSeparator("buffer-options.loading-saving"); - - - - //{{{ Line separator - - String[] lineSeps = { jEdit.getProperty("lineSep.unix"), - - jEdit.getProperty("lineSep.windows"), - - jEdit.getProperty("lineSep.mac") }; - - lineSeparator = new JComboBox(lineSeps); - - String lineSep = buffer.getStringProperty(JEditBuffer.LINESEP); - - if(lineSep == null) - - lineSep = System.getProperty("line.separator"); - - if("\n".equals(lineSep)) - - lineSeparator.setSelectedIndex(0); - - else if("\r\n".equals(lineSep)) - - lineSeparator.setSelectedIndex(1); - - else if("\r".equals(lineSep)) - - lineSeparator.setSelectedIndex(2); - - panel.addComponent(jEdit.getProperty("buffer-options.lineSeparator"), - - lineSeparator); - - //}}} - - - - //{{{ Encoding - - String[] encodings = MiscUtilities.getEncodings(true); - - Arrays.sort(encodings,new MiscUtilities.StringICaseCompare()); - - encoding = new JComboBox(encodings); - - encoding.setEditable(true); - - encoding.setSelectedItem(buffer.getStringProperty(JEditBuffer.ENCODING)); - - panel.addComponent(jEdit.getProperty("buffer-options.encoding"), - - encoding); - - //}}} - - - - //{{{ GZipped setting - - gzipped = new JCheckBox(jEdit.getProperty( - - "buffer-options.gzipped")); - - gzipped.setSelected(buffer.getBooleanProperty(Buffer.GZIPPED)); - - panel.addComponent(gzipped); - - //}}} - - - - panel.addSeparator("buffer-options.editing"); - - - - //{{{ Edit mode - - modes = jEdit.getModes(); - - Arrays.sort(modes,new MiscUtilities.StringICaseCompare()); - - mode = new JComboBox(modes); - - mode.setSelectedItem(buffer.getMode()); - - mode.addActionListener(actionListener); - - panel.addComponent(jEdit.getProperty("buffer-options.mode"),mode); - - //}}} - - - - //{{{ Fold mode - - String[] foldModes = FoldHandler.getFoldModes(); - - - - folding = new JComboBox(foldModes); - - folding.setSelectedItem(buffer.getStringProperty("folding")); - - panel.addComponent(jEdit.getProperty("options.editing.folding"), - - folding); - - //}}} - - - - //{{{ Wrap mode - - String[] wrapModes = { - - "none", - - "soft", - - "hard" - - }; - - - - wrap = new JComboBox(wrapModes); - - wrap.setSelectedItem(buffer.getStringProperty("wrap")); - - panel.addComponent(jEdit.getProperty("options.editing.wrap"), - - wrap); - - //}}} - - - - //{{{ Max line length - - String[] lineLengths = { "0", "72", "76", "80" }; - - - - maxLineLen = new JComboBox(lineLengths); - - maxLineLen.setEditable(true); - - maxLineLen.setSelectedItem(buffer.getStringProperty("maxLineLen")); - - panel.addComponent(jEdit.getProperty("options.editing.maxLineLen"), - - maxLineLen); - - //}}} - - - - //{{{ Tab size - - String[] tabSizes = { "2", "4", "8" }; - - tabSize = new JComboBox(tabSizes); - - tabSize.setEditable(true); - - tabSize.setSelectedItem(buffer.getStringProperty("tabSize")); - - panel.addComponent(jEdit.getProperty("options.editing.tabSize"),tabSize); - - //}}} - - - - //{{{ Indent size - - indentSize = new JComboBox(tabSizes); - - indentSize.setEditable(true); - - indentSize.setSelectedItem(buffer.getStringProperty("indentSize")); - - panel.addComponent(jEdit.getProperty("options.editing.indentSize"), - - indentSize); - - //}}} - - - - //{{{ Soft tabs - - noTabs = new JCheckBox(jEdit.getProperty( - - "options.editing.noTabs")); - - noTabs.setSelected(buffer.getBooleanProperty("noTabs")); - - panel.addComponent(noTabs); - - //}}} - - - content.add(BorderLayout.NORTH,panel); - - //{{{ Buttons JPanel buttons = new JPanel(); - buttons.setLayout(new BoxLayout(buttons,BoxLayout.X_AXIS)); - buttons.setBorder(new EmptyBorder(12,0,0,0)); - buttons.add(Box.createGlue()); ok = new JButton(jEdit.getProperty("common.ok")); - ok.addActionListener(actionListener); - getRootPane().setDefaultButton(ok); - buttons.add(ok); buttons.add(Box.createHorizontalStrut(6)); cancel = new JButton(jEdit.getProperty("common.cancel")); - cancel.addActionListener(actionListener); - buttons.add(cancel); buttons.add(Box.createGlue()); - content.add(BorderLayout.SOUTH,buttons); //}}} - - pack(); - setLocationRelativeTo(view); - setVisible(true); - } //}}} @@ -374,263 +123,38 @@ //{{{ ok() method public void ok() - { - - int index = lineSeparator.getSelectedIndex(); - - String lineSep; - - if(index == 0) - - lineSep = "\n"; - - else if(index == 1) - - lineSep = "\r\n"; - - else if(index == 2) - - lineSep = "\r"; - - else - - throw new InternalError(); - - - - String oldLineSep = buffer.getStringProperty(JEditBuffer.LINESEP); - - if(oldLineSep == null) - - oldLineSep = System.getProperty("line.separator"); - - if(!oldLineSep.equals(lineSep)) - - { - - buffer.setStringProperty("lineSeparator",lineSep); - - buffer.setDirty(true); - - } - - - - String encoding = (String)this.encoding.getSelectedItem(); - - String oldEncoding = buffer.getStringProperty(JEditBuffer.ENCODING); - - if(!oldEncoding.equals(encoding)) - - { - - buffer.setStringProperty(JEditBuffer.ENCODING,encoding); - - buffer.setDirty(true); - - } - - - - boolean gzippedValue = gzipped.isSelected(); - - boolean oldGzipped = buffer.getBooleanProperty( - - Buffer.GZIPPED); - - if(gzippedValue != oldGzipped) - - { - - buffer.setBooleanProperty(Buffer.GZIPPED,gzippedValue); - - buffer.setDirty(true); - - } - - - - buffer.setStringProperty("folding",(String)folding.getSelectedItem()); - - - - buffer.setStringProperty("wrap",(String)wrap.getSelectedItem()); - - - - try - - { - - buffer.setProperty("maxLineLen",new Integer( - - maxLineLen.getSelectedItem().toString())); - - } - - catch(NumberFormatException nf) - - { - - } - - - - try - - { - - buffer.setProperty("tabSize",new Integer( - - tabSize.getSelectedItem().toString())); - - } - - catch(NumberFormatException nf) - - { - - } - - - - try - - { - - buffer.setProperty("indentSize",new Integer( - - indentSize.getSelectedItem().toString())); - - } - - catch(NumberFormatException nf) - - { - - } - - - - buffer.setBooleanProperty("noTabs",noTabs.isSelected()); - - - - index = mode.getSelectedIndex(); - - buffer.setMode(modes[index]); - - - + panel.save(); dispose(); - } //}}} - - //{{{ cancel() method public void cancel() - { - dispose(); - } //}}} - - //{{{ Private members private View view; - private Buffer buffer; - - private Mode[] modes; - - private JComboBox mode; - - private JComboBox lineSeparator; - - private JComboBox encoding; - - private JCheckBox gzipped; - - private JComboBox folding; - - private JComboBox wrap; - - private JComboBox maxLineLen; - - private JComboBox tabSize; - - private JComboBox indentSize; - - private JCheckBox noTabs; - + private BufferOptionPane panel; private JButton ok; - private JButton cancel; - //}}} - - - //{{{ ActionHandler class class ActionHandler implements ActionListener - { - //{{{ actionPerformed() method - public void actionPerformed(ActionEvent evt) - { - Object source = evt.getSource(); - if(source == ok) - ok(); - else if(source == cancel) - cancel(); - - else if(source == mode) - - { - - Mode _mode = (Mode)mode.getSelectedItem(); - - folding.setSelectedItem(_mode.getProperty( - - "folding")); - - wrap.setSelectedItem(_mode.getProperty( - - "wrap")); - - maxLineLen.setSelectedItem(_mode.getProperty( - - "maxLineLen")); - - tabSize.setSelectedItem(_mode.getProperty( - - "tabSize")); - - indentSize.setSelectedItem(_mode.getProperty( - - "indentSize")); - - noTabs.setSelected(_mode.getBooleanProperty( - - "noTabs")); - - } - } //}}} } //}}} Modified: jEdit/trunk/org/gjt/sp/jedit/jEdit.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/jEdit.java 2006-10-20 13:45:04 UTC (rev 7626) +++ jEdit/trunk/org/gjt/sp/jedit/jEdit.java 2006-10-20 17:13:12 UTC (rev 7627) @@ -2010,12 +2010,9 @@ // still need to call the status check even if the option is // off, so that the write protection is updated if it changes // on disk - boolean showDialogSetting = getBooleanProperty( - "autoReloadDialog"); // auto reload changed buffers? - boolean autoReloadSetting = getBooleanProperty( - "autoReload"); + boolean autoReload = getBooleanProperty("autoReload"); // the problem with this is that if we have two edit panes // looking at the same buffer and the file is reloaded both @@ -2034,7 +2031,7 @@ Buffer buffer = buffersFirst; int[] states = new int[bufferCount]; int i = 0; - boolean show = false; + boolean notifyFileChanged = false; while(buffer != null) { states[i] = buffer.checkFileStatus(view); @@ -2042,15 +2039,21 @@ switch(states[i]) { case Buffer.FILE_CHANGED: - if(autoReloadSetting - && showDialogSetting - && !buffer.isDirty()) + if(buffer.getAutoReload()) { - buffer.load(view,true); + if(buffer.isDirty()) + notifyFileChanged = true; + else + buffer.load(view,true); } - /* fall through */ + else // no automatic reload even if general setting is true + autoReload = false; + // don't notify user if "do nothing" was chosen + if(buffer.getAutoReloadDialog()) + notifyFileChanged = true; + break; case Buffer.FILE_DELETED: - show = true; + notifyFileChanged = true; break; } @@ -2058,8 +2061,8 @@ i++; } - if(show && showDialogSetting) - new FilesChangedDialog(view,states,autoReloadSetting); + if(notifyFileChanged) + new FilesChangedDialog(view,states,autoReload); } //}}} //}}} Modified: jEdit/trunk/org/gjt/sp/jedit/jedit.props =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/jedit.props 2006-10-20 13:45:04 UTC (rev 7626) +++ jEdit/trunk/org/gjt/sp/jedit/jedit.props 2006-10-20 17:13:12 UTC (rev 7627) @@ -95,10 +95,13 @@ # Check modification status on focus? -# If this is true, show a dialog; if false, do nothing +# if false and autoReload == false, do nothing +# if false and autoReload == true, autoreload silently +# If true and autoReload == false, prompt for reloading +# if true and autoReload == true, reload and notify user (message box) autoReloadDialog=true -# If this is true, auto reload; if false, 'reload' button in dialog +# If this is true, auto reload; if false, use 'reload' button in dialog autoReload=true #}}} Modified: jEdit/trunk/org/gjt/sp/jedit/jedit_gui.props =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/jedit_gui.props 2006-10-20 13:45:04 UTC (rev 7626) +++ jEdit/trunk/org/gjt/sp/jedit/jedit_gui.props 2006-10-20 17:13:12 UTC (rev 7627) @@ -1605,7 +1605,8 @@ options.general.checkModStatus=If open files are changed on disk: options.general.checkModStatus.nothing=do nothing options.general.checkModStatus.prompt=prompt -options.general.checkModStatus.reload=automatically reload +options.general.checkModStatus.reload=automatically reload and notify user +options.general.checkModStatus.silentReload=autoreload without notification options.general.recentFiles=Recent files to remember: options.general.sortRecent=Sort recent file list options.general.saveCaret=Save caret positions in recent file list Added: jEdit/trunk/org/gjt/sp/jedit/options/BufferOptionPane.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/options/BufferOptionPane.java (rev 0) +++ jEdit/trunk/org/gjt/sp/jedit/options/BufferOptionPane.java 2006-10-20 17:13:12 UTC (rev 7627) @@ -0,0 +1,330 @@ +/* + * BufferOptionPane.java - + * :tabSize=8:indentSize=8:noTabs=false: + * :folding=explicit:collapseFolds=1: + * + * Copyright (C) 1998, 2003 Slava Pestov + * Portions copyright (C) 1999 mike dillon + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +package org.gjt.sp.jedit.options; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.Arrays; + +import javax.swing.JCheckBox; +import javax.swing.JComboBox; + +import org.gjt.sp.jedit.AbstractOptionPane; +import org.gjt.sp.jedit.Buffer; +import org.gjt.sp.jedit.GUIUtilities; +import org.gjt.sp.jedit.MiscUtilities; +import org.gjt.sp.jedit.Mode; +import org.gjt.sp.jedit.jEdit; +import org.gjt.sp.jedit.buffer.FoldHandler; + + +public class BufferOptionPane extends AbstractOptionPane +{ + JComboBox encoding; + JComboBox lineSeparator; + JCheckBox gzipped; + Mode[] modes; + JComboBox mode; + JComboBox folding; + JComboBox wrap; + JComboBox maxLineLen; + JComboBox tabSize; + JComboBox indentSize; + JComboBox checkModStatus; + JCheckBox noTabs; + Buffer buffer; + + + public BufferOptionPane() + { + super("Buffer Options"); + init(); + } + + protected void _init() + { + + + buffer = jEdit.getActiveView().getBuffer(); + String filename = buffer.getName(); + setName("Buffer: " + filename); + addComponent(GUIUtilities.createMultilineLabel( + jEdit.getProperty("buffer-options.caption"))); + + addSeparator("buffer-options.loading-saving"); + + //{{{ Line separator + String[] lineSeps = { jEdit.getProperty("lineSep.unix"), + jEdit.getProperty("lineSep.windows"), + jEdit.getProperty("lineSep.mac") }; + lineSeparator = new JComboBox(lineSeps); + String lineSep = buffer.getStringProperty(Buffer.LINESEP); + if(lineSep == null) + lineSep = System.getProperty("line.separator"); + if("\n".equals(lineSep)) + lineSeparator.setSelectedIndex(0); + else if("\r\n".equals(lineSep)) + lineSeparator.setSelectedIndex(1); + else if("\r".equals(lineSep)) + lineSeparator.setSelectedIndex(2); + addComponent(jEdit.getProperty("buffer-options.lineSeparator"), + lineSeparator); + //}}} + + //{{{ Encoding + String[] encodings = MiscUtilities.getEncodings(); + Arrays.sort(encodings,new MiscUtilities.StringICaseCompare()); + encoding = new JComboBox(encodings); + encoding.setEditable(true); + encoding.setSelectedItem(buffer.getStringProperty(Buffer.ENCODING)); + addComponent(jEdit.getProperty("buffer-options.encoding"), + encoding); + //}}} + + //{{{ GZipped setting + gzipped = new JCheckBox(jEdit.getProperty( + "buffer-options.gzipped")); + gzipped.setSelected(buffer.getBooleanProperty(Buffer.GZIPPED)); + addComponent(gzipped); + //}}} + + //{{{ Autoreload settings + /* Check mod status on focus */ + String[] modCheckOptions = { + jEdit.getProperty("options.general.checkModStatus.nothing"), + jEdit.getProperty("options.general.checkModStatus.prompt"), + jEdit.getProperty("options.general.checkModStatus.reload"), + jEdit.getProperty("options.general.checkModStatus.silentReload") + }; + checkModStatus = new JComboBox(modCheckOptions); + if(buffer.getAutoReload()) { + if(buffer.getAutoReloadDialog()) + // reload and notify + checkModStatus.setSelectedIndex(2); + else // reload silently + checkModStatus.setSelectedIndex(3); + } + else { + if(buffer.getAutoReloadDialog()) + // prompt + checkModStatus.setSelectedIndex(1); + else // do nothing + checkModStatus.setSelectedIndex(0); + } + addComponent(jEdit.getProperty("options.general.checkModStatus"), + checkModStatus); + + // }}} + + addSeparator("buffer-options.editing"); + + //{{{ Edit mode + modes = jEdit.getModes(); + MiscUtilities.quicksort(modes,new MiscUtilities.StringICaseCompare()); + mode = new JComboBox(modes); + mode.setSelectedItem(buffer.getMode()); + ActionHandler actionListener = new ActionHandler(); + mode.addActionListener(actionListener); + addComponent(jEdit.getProperty("buffer-options.mode"),mode); + //}}} + + //{{{ Fold mode + String[] foldModes = FoldHandler.getFoldModes(); + + folding = new JComboBox(foldModes); + folding.setSelectedItem(buffer.getStringProperty("folding")); + addComponent(jEdit.getProperty("options.editing.folding"), + folding); + //}}} + + //{{{ Wrap mode + String[] wrapModes = { + "none", + "soft", + "hard" + }; + + wrap = new JComboBox(wrapModes); + wrap.setSelectedItem(buffer.getStringProperty("wrap")); + addComponent(jEdit.getProperty("options.editing.wrap"), + wrap); + //}}} + + //{{{ Max line length + String[] lineLengths = { "0", "72", "76", "80" }; + + maxLineLen = new JComboBox(lineLengths); + maxLineLen.setEditable(true); + maxLineLen.setSelectedItem(buffer.getStringProperty("maxLineLen")); + addComponent(jEdit.getProperty("options.editing.maxLineLen"), + maxLineLen); + //}}} + + //{{{ Tab size + String[] tabSizes = { "2", "4", "8" }; + tabSize = new JComboBox(tabSizes); + tabSize.setEditable(true); + tabSize.setSelectedItem(buffer.getStringProperty("tabSize")); + addComponent(jEdit.getProperty("options.editing.tabSize"),tabSize); + //}}} + + //{{{ Indent size + indentSize = new JComboBox(tabSizes); + indentSize.setEditable(true); + indentSize.setSelectedItem(buffer.getStringProperty("indentSize")); + addComponent(jEdit.getProperty("options.editing.indentSize"), + indentSize); + //}}} + + //{{{ Soft tabs + noTabs = new JCheckBox(jEdit.getProperty( + "options.editing.noTabs")); + noTabs.setSelected(buffer.getBooleanProperty("noTabs")); + addComponent(noTabs); + + } + + + protected void _save() + { + int index = lineSeparator.getSelectedIndex(); + String lineSep; + if(index == 0) + lineSep = "\n"; + else if(index == 1) + lineSep = "\r\n"; + else if(index == 2) + lineSep = "\r"; + else + throw new InternalError(); + + String oldLineSep = buffer.getStringProperty(Buffer.LINESEP); + if(oldLineSep == null) + oldLineSep = System.getProperty("line.separator"); + if(!oldLineSep.equals(lineSep)) + { + buffer.setStringProperty("lineSeparator",lineSep); + buffer.setDirty(true); + } + + String encoding = (String)this.encoding.getSelectedItem(); + String oldEncoding = buffer.getStringProperty(Buffer.ENCODING); + if(!oldEncoding.equals(encoding)) + { + buffer.setStringProperty(Buffer.ENCODING,encoding); + buffer.setDirty(true); + } + + boolean gzippedValue = gzipped.isSelected(); + boolean oldGzipped = buffer.getBooleanProperty( + Buffer.GZIPPED); + if(gzippedValue != oldGzipped) + { + buffer.setBooleanProperty(Buffer.GZIPPED,gzippedValue); + buffer.setDirty(true); + } + + buffer.setStringProperty("folding",(String)folding.getSelectedItem()); + + buffer.setStringProperty("wrap",(String)wrap.getSelectedItem()); + + try + { + buffer.setProperty("maxLineLen",new Integer( + maxLineLen.getSelectedItem().toString())); + } + catch(NumberFormatException nf) + { + } + + try + { + buffer.setProperty("tabSize",new Integer( + tabSize.getSelectedItem().toString())); + } + catch(NumberFormatException nf) + { + } + + try + { + buffer.setProperty("indentSize",new Integer( + indentSize.getSelectedItem().toString())); + } + catch(NumberFormatException nf) + { + } + + buffer.setBooleanProperty("noTabs",noTabs.isSelected()); + + index = mode.getSelectedIndex(); + buffer.setMode(modes[index]); + switch(checkModStatus.getSelectedIndex()) + { + case 0: + buffer.setAutoReloadDialog(false); + buffer.setAutoReload(false); + break; + case 1: + buffer.setAutoReloadDialog(true); + buffer.setAutoReload(false); + break; + case 2: + buffer.setAutoReloadDialog(true); + buffer.setAutoReload(true); + break; + case 3: + buffer.setAutoReloadDialog(false); + buffer.setAutoReload(true); + break; + } + } + + + class ActionHandler implements ActionListener + { + //{{{ actionPerformed() method + public void actionPerformed(ActionEvent evt) + { + Object source = evt.getSource(); + if(source == mode) + { + Mode _mode = (Mode)mode.getSelectedItem(); + folding.setSelectedItem(_mode.getProperty( + "folding")); + wrap.setSelectedItem(_mode.getProperty( + "wrap")); + maxLineLen.setSelectedItem(_mode.getProperty( + "maxLineLen")); + tabSize.setSelectedItem(_mode.getProperty( + "tabSize")); + indentSize.setSelectedItem(_mode.getProperty( + "indentSize")); + noTabs.setSelected(_mode.getBooleanProperty( + "noTabs")); + } + } //}}} + } //}}} + +} Modified: jEdit/trunk/org/gjt/sp/jedit/options/GeneralOptionPane.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/options/GeneralOptionPane.java 2006-10-20 13:45:04 UTC (rev 7626) +++ jEdit/trunk/org/gjt/sp/jedit/options/GeneralOptionPane.java 2006-10-20 17:13:12 UTC (rev 7627) @@ -78,15 +78,24 @@ String[] modCheckOptions = { jEdit.getProperty("options.general.checkModStatus.nothing"), jEdit.getProperty("options.general.checkModStatus.prompt"), - jEdit.getProperty("options.general.checkModStatus.reload") + jEdit.getProperty("options.general.checkModStatus.reload"), + jEdit.getProperty("options.general.checkModStatus.silentreload") }; checkModStatus = new JComboBox(modCheckOptions); - if(jEdit.getBooleanProperty("autoReload")) - checkModStatus.setSelectedIndex(2); - else if(jEdit.getBooleanProperty("autoReloadDialog")) - checkModStatus.setSelectedIndex(1); - else - checkModStatus.setSelectedIndex(0); + if(jEdit.getBooleanProperty("autoReload")) { + if(jEdit.getBooleanProperty("autoReloadDialog")) + // reload and notify + checkModStatus.setSelectedIndex(2); + else // reload silently + checkModStatus.setSelectedIndex(3); + } + else { + if(jEdit.getBooleanProperty("autoReloadDialog")) + // prompt + checkModStatus.setSelectedIndex(1); + else // do nothing + checkModStatus.setSelectedIndex(0); + } addComponent(jEdit.getProperty("options.general.checkModStatus"), checkModStatus); @@ -199,6 +208,10 @@ jEdit.setBooleanProperty("autoReloadDialog",true); jEdit.setBooleanProperty("autoReload",true); break; + case 3: + jEdit.setBooleanProperty("autoReloadDialog",false); + jEdit.setBooleanProperty("autoReload",true); + break; } jEdit.setProperty("recentFiles",recentFiles.getText()); jEdit.setBooleanProperty("sortRecent",sortRecent.isSelected()); Modified: jEdit/trunk/org/gjt/sp/jedit/perspective.dtd =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/perspective.dtd 2006-10-20 13:45:04 UTC (rev 7626) +++ jEdit/trunk/org/gjt/sp/jedit/perspective.dtd 2006-10-20 17:13:12 UTC (rev 7627) @@ -5,6 +5,9 @@ <!-- BUFFER element --> <!ELEMENT BUFFER ( #PCDATA ) > +<!ATTLIST BUFFER + AUTORELOAD %att-bool; "TRUE" + AUTORELOAD_DIALOG %att-bool; "TRUE" > <!-- VIEW element --> <!ELEMENT VIEW ( PANES | GEOMETRY | DOCKING ) > This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |