[vassalengine-svn-trunk] [vassalengine-svn] SF.net SVN: vassalengine:[8732] VASSAL-src/trunk/src/VA
Brought to you by:
rodneykinney,
uckelman
From: <uck...@us...> - 2013-05-30 11:12:23
|
Revision: 8732 http://sourceforge.net/p/vassalengine/svn/8732 Author: uckelman Date: 2013-05-30 11:12:18 +0000 (Thu, 30 May 2013) Log Message: ----------- Merged Brent-3.2-Work@8729. Fixed Bug 10179: Module manager is overwriting P2P server preferences Handle Global preference differently to module preferences * Write prefs to disk whenever a value is changed * Check for a new version on disk and reread before reading a pref avalue * Do not write prefs on module or module manager close Modified Paths: -------------- VASSAL-src/trunk/src/VASSAL/build/GameModule.java VASSAL-src/trunk/src/VASSAL/build/module/Chatter.java VASSAL-src/trunk/src/VASSAL/launch/ModuleManagerWindow.java VASSAL-src/trunk/src/VASSAL/preferences/Prefs.java Added Paths: ----------- VASSAL-src/trunk/src/VASSAL/preferences/GlobalPrefs.java Modified: VASSAL-src/trunk/src/VASSAL/build/GameModule.java =================================================================== --- VASSAL-src/trunk/src/VASSAL/build/GameModule.java 2013-05-30 11:01:42 UTC (rev 8731) +++ VASSAL-src/trunk/src/VASSAL/build/GameModule.java 2013-05-30 11:12:18 UTC (rev 8732) @@ -722,17 +722,18 @@ } // write and close global prefs - try { - p = getGlobalPrefs(); - p.write(); - p.close(); - } - catch (IOException e) { - WriteErrorDialog.error(e, p.getFile()); - } - finally { - IOUtils.closeQuietly(p); - } + // Bug 10179 - Global prefs are now written out each time a preference is changed + // try { + // p = getGlobalPrefs(); + // p.write(); + // p.close(); + // } + // catch (IOException e) { + // WriteErrorDialog.error(e, p.getFile()); + // } + // finally { + // IOUtils.closeQuietly(p); + // } // close the module try { Modified: VASSAL-src/trunk/src/VASSAL/build/module/Chatter.java =================================================================== --- VASSAL-src/trunk/src/VASSAL/build/module/Chatter.java 2013-05-30 11:01:42 UTC (rev 8731) +++ VASSAL-src/trunk/src/VASSAL/build/module/Chatter.java 2013-05-30 11:12:18 UTC (rev 8732) @@ -79,6 +79,11 @@ protected static final String OTHER_CHAT_COLOR = "otherChatColor"; //$NON-NLS-1$ protected static final String GAME_MSG_COLOR = "gameMessageColor"; //$NON-NLS-1$ protected static final String SYS_MSG_COLOR = "systemMessageColor"; //$NON-NLS-1$ + + protected Color gameMsg; + protected Color systemMsg; + protected Color myChat; + protected Color otherChat; public static final String getAnonymousUserName() { return Resources.getString("Chat.anonymous"); //$NON-NLS-1$ @@ -187,14 +192,42 @@ chatFont.fireUpdate(); mod.getPrefs().addOption(Resources.getString("Chatter.chat_window"), chatFont); //$NON-NLS-1$ - ColorConfigurer gameMsgColor = new ColorConfigurer(GAME_MSG_COLOR, Resources.getString("Chatter.game_messages_preference"), Color.magenta); //$NON-NLS-1$ - Prefs.getGlobalPrefs().addOption(Resources.getString("Chatter.chat_window"), gameMsgColor); //$NON-NLS-1$ - ColorConfigurer systemMsgColor = new ColorConfigurer(SYS_MSG_COLOR, Resources.getString("Chatter.system_message_preference"), new Color(160, 160, 160)); //$NON-NLS-1$ - Prefs.getGlobalPrefs().addOption(Resources.getString("Chatter.chat_window"), systemMsgColor); //$NON-NLS-1$ - ColorConfigurer myChatColor = new ColorConfigurer(MY_CHAT_COLOR, Resources.getString("Chatter.my_text_preference"), Color.gray); //$NON-NLS-1$ - Prefs.getGlobalPrefs().addOption(Resources.getString("Chatter.chat_window"), myChatColor); //$NON-NLS-1$ - ColorConfigurer otherChatColor = new ColorConfigurer(OTHER_CHAT_COLOR, Resources.getString("Chatter.other_text_preference"), Color.black); //$NON-NLS-1$ - Prefs.getGlobalPrefs().addOption(Resources.getString("Chatter.chat_window"), otherChatColor); //$NON-NLS-1$ + + //Bug 10179 - Do not re-read Chat colors each time the Chat Window is repainted. + final Prefs globalPrefs = Prefs.getGlobalPrefs(); + + final ColorConfigurer gameMsgColor = new ColorConfigurer(GAME_MSG_COLOR, Resources.getString("Chatter.game_messages_preference"), Color.magenta); //$NON-NLS-1$ + globalPrefs.addOption(Resources.getString("Chatter.chat_window"), gameMsgColor); //$NON-NLS-1$ + gameMsg = (Color) globalPrefs.getValue(GAME_MSG_COLOR); + globalPrefs.getOption(GAME_MSG_COLOR).addPropertyChangeListener(new PropertyChangeListener() { + public void propertyChange(PropertyChangeEvent e) { + gameMsg = (Color) e.getNewValue(); + }}); + + final ColorConfigurer systemMsgColor = new ColorConfigurer(SYS_MSG_COLOR, Resources.getString("Chatter.system_message_preference"), new Color(160, 160, 160)); //$NON-NLS-1$ + globalPrefs.addOption(Resources.getString("Chatter.chat_window"), systemMsgColor); //$NON-NLS-1$ + systemMsg = (Color) globalPrefs.getValue(SYS_MSG_COLOR); + globalPrefs.getOption(SYS_MSG_COLOR).addPropertyChangeListener(new PropertyChangeListener() { + public void propertyChange(PropertyChangeEvent e) { + systemMsg = (Color) e.getNewValue(); + }}); + + final ColorConfigurer myChatColor = new ColorConfigurer(MY_CHAT_COLOR, Resources.getString("Chatter.my_text_preference"), Color.gray); //$NON-NLS-1$ + globalPrefs.addOption(Resources.getString("Chatter.chat_window"), myChatColor); //$NON-NLS-1$ + myChat = (Color) globalPrefs.getValue(MY_CHAT_COLOR); + globalPrefs.getOption(MY_CHAT_COLOR).addPropertyChangeListener(new PropertyChangeListener() { + public void propertyChange(PropertyChangeEvent e) { + myChat = (Color) e.getNewValue(); + }}); + + final ColorConfigurer otherChatColor = new ColorConfigurer(OTHER_CHAT_COLOR, Resources.getString("Chatter.other_text_preference"), Color.black); //$NON-NLS-1$ + globalPrefs.addOption(Resources.getString("Chatter.chat_window"), otherChatColor); //$NON-NLS-1$ + otherChat = (Color) globalPrefs.getValue(OTHER_CHAT_COLOR); + globalPrefs.getOption(OTHER_CHAT_COLOR).addPropertyChangeListener(new PropertyChangeListener() { + public void propertyChange(PropertyChangeEvent e) { + otherChat = (Color) e.getNewValue(); + }}); + } public void add(Buildable b) { @@ -320,17 +353,17 @@ if (s.length() > 0) { switch (s.charAt(0)) { case '*': - col = (Color) Prefs.getGlobalPrefs().getValue(GAME_MSG_COLOR); + col = gameMsg; break; case '-': - col = (Color) Prefs.getGlobalPrefs().getValue(SYS_MSG_COLOR); + col = systemMsg; break; default: if (s.startsWith(formatChat(""))) { //$NON-NLS-1$ - col = (Color) Prefs.getGlobalPrefs().getValue(MY_CHAT_COLOR); + col = myChat; } else { - col = (Color) Prefs.getGlobalPrefs().getValue(OTHER_CHAT_COLOR); + col = otherChat; } break; } Modified: VASSAL-src/trunk/src/VASSAL/launch/ModuleManagerWindow.java =================================================================== --- VASSAL-src/trunk/src/VASSAL/launch/ModuleManagerWindow.java 2013-05-30 11:01:42 UTC (rev 8731) +++ VASSAL-src/trunk/src/VASSAL/launch/ModuleManagerWindow.java 2013-05-30 11:12:18 UTC (rev 8732) @@ -115,7 +115,6 @@ import VASSAL.tools.WriteErrorDialog; import VASSAL.tools.filechooser.FileChooser; import VASSAL.tools.filechooser.ModuleExtensionFileFilter; -import VASSAL.tools.io.IOUtils; import VASSAL.tools.logging.LogPane; import VASSAL.tools.menu.CheckBoxMenuItemProxy; import VASSAL.tools.menu.MenuBarProxy; @@ -189,18 +188,19 @@ public void actionPerformed(ActionEvent e) { if (!AbstractLaunchAction.shutDown()) return; - final Prefs gl = Prefs.getGlobalPrefs(); - try { - gl.write(); - gl.close(); - } - catch (IOException ex) { - WriteErrorDialog.error(ex, gl.getFile()); - } - finally { - IOUtils.closeQuietly(gl); - } - + // Bug 10179 - Global prefs are now written out each time a preference is changed + // final Prefs gl = Prefs.getGlobalPrefs(); + // try { + // gl.write(); + // gl.close(); + // } + // catch (IOException ex) { + // WriteErrorDialog.error(ex, gl.getFile()); + // } + // finally { + // IOUtils.closeQuietly(gl); + // } + logger.info("Exiting"); System.exit(0); } Copied: VASSAL-src/trunk/src/VASSAL/preferences/GlobalPrefs.java (from rev 8729, VASSAL-src/branches/Brent-3.2-Work/src/VASSAL/preferences/GlobalPrefs.java) =================================================================== --- VASSAL-src/trunk/src/VASSAL/preferences/GlobalPrefs.java (rev 0) +++ VASSAL-src/trunk/src/VASSAL/preferences/GlobalPrefs.java 2013-05-30 11:12:18 UTC (rev 8732) @@ -0,0 +1,60 @@ +/* + * $Id: GlobakPrefs.java 8428 2012-11-14 19:29:03Z uckelman $ + * + * Copyright (c) 2000-2013 by Rodney Kinney, Brent Easton + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License (LGPL) as published by the Free Software Foundation. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, copies are available + * at http://www.opensource.org. + */ + +/** + * Bug 10179 + * Global preferences are now written to disk each time a value is changed. + * Each time a value is read, check first if there is an updated copy of prefs on disk + * and read them in first. + */ +package VASSAL.preferences; + +import java.beans.PropertyChangeEvent; +import java.io.IOException; + +import VASSAL.tools.WriteErrorDialog; + +public class GlobalPrefs extends Prefs { + + protected long dtm = 0; + + public GlobalPrefs(PrefsEditor editor, String name) { + super(editor, name); + } + + protected void handleValueChange(PropertyChangeEvent evt) { + super.handleValueChange(evt); + try { + write(); + } + catch (IOException ex) { + WriteErrorDialog.error(ex, getFile().getPath()); + } + } + + public Object getValue(String key) { + final long currentDtm = getFile().lastModified(); + if (currentDtm != dtm) { + dtm = currentDtm; + read(); + init(name); + } + return super.getValue(key); + } +} \ No newline at end of file Modified: VASSAL-src/trunk/src/VASSAL/preferences/Prefs.java =================================================================== --- VASSAL-src/trunk/src/VASSAL/preferences/Prefs.java 2013-05-30 11:01:42 UTC (rev 8731) +++ VASSAL-src/trunk/src/VASSAL/preferences/Prefs.java 2013-05-30 11:12:18 UTC (rev 8732) @@ -58,7 +58,7 @@ private Map<String, Configurer> options = new HashMap<String, Configurer>(); private Properties storedValues = new Properties(); private PrefsEditor editor; - private String name; + protected String name; private Set<String> changed = new HashSet<String>(); private PropertyChangeListener changeListener; @@ -67,13 +67,17 @@ this.name = name; this.changeListener = new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent evt) { - changed.add(evt.getPropertyName()); + handleValueChange(evt); } }; editor.addPrefs(this); init(name); } + protected void handleValueChange(PropertyChangeEvent evt) { + changed.add(evt.getPropertyName()); + } + public PrefsEditor getEditor() { return editor; } @@ -167,7 +171,7 @@ } } - private void read() { + protected void read() { FileArchive fa = null; try { fa = editor.getFileArchive(); @@ -246,7 +250,7 @@ final File prefsFile = new File(Info.getHomeDir(), "Preferences"); try { - globalPrefs = new Prefs( + globalPrefs = new GlobalPrefs( new PrefsEditor(new ZipArchive(prefsFile)), "VASSAL" ); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------------ Introducing AppDynamics Lite, a free troubleshooting tool for Java/.NET Get 100% visibility into your production application - at no cost. Code-level diagnostics for performance bottlenecks with <2% overhead Download for free and get started troubleshooting in minutes. http://p.sf.net/sfu/appdyn_d2d_ap1 _______________________________________________ vassalengine-svn mailing list vas...@li... https://lists.sourceforge.net/lists/listinfo/vassalengine-svn |