diff --git a/core/resources/l10n/messages.properties b/core/resources/l10n/messages.properties index f320aa563..58eb86f12 100644 --- a/core/resources/l10n/messages.properties +++ b/core/resources/l10n/messages.properties @@ -276,6 +276,10 @@ pref.dlg.tab.Simulation = Simulation pref.dlg.tab.Launch = Launch pref.dlg.tab.Miscellaneousoptions = Miscellaneous options pref.dlg.lbl.RockSimWarning = Show warning when saving in RockSim format +pref.dlg.but.clearCachedPreferences = Clear cached preferences +pref.dlg.but.clearCachedPreferences.ttip = Clear cached preferences (UI settings, recent files, etc.) +pref.dlg.clearCachedPreferences.title = Clear cached preferences? +pref.dlg.clearCachedPreferences.message = Are you sure you want to clear cached preferences? pref.dlg.tab.Graphics = Graphics pref.dlg.lbl.DecalEditor = Graphics Editor diff --git a/swing/src/net/sf/openrocket/gui/dialogs/preferences/GeneralPreferencesPanel.java b/swing/src/net/sf/openrocket/gui/dialogs/preferences/GeneralPreferencesPanel.java index d4613d0e0..440c21a03 100644 --- a/swing/src/net/sf/openrocket/gui/dialogs/preferences/GeneralPreferencesPanel.java +++ b/swing/src/net/sf/openrocket/gui/dialogs/preferences/GeneralPreferencesPanel.java @@ -246,7 +246,21 @@ public class GeneralPreferencesPanel extends PreferencesPanel { } }); this.add(rocksimWarningDialogBox,"spanx, wrap"); - + + //// Clear cached preferences + final JButton clearCachedPreferences = new SelectColorButton(trans.get("pref.dlg.but.clearCachedPreferences")); + clearCachedPreferences.setToolTipText(trans.get("pref.dlg.but.clearCachedPreferences.ttip")); + clearCachedPreferences.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + int resultYesNo = JOptionPane.showConfirmDialog(parent, trans.get("pref.dlg.clearCachedPreferences.message"), + trans.get("pref.dlg.clearCachedPreferences.title"), JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE); + if (resultYesNo == JOptionPane.YES_OPTION) { + preferences.clearPreferences(); + } + } + }); + this.add(clearCachedPreferences, "spanx, pushy, bottom, wrap"); } diff --git a/swing/src/net/sf/openrocket/gui/util/SwingPreferences.java b/swing/src/net/sf/openrocket/gui/util/SwingPreferences.java index 6d95e208a..6d987038a 100644 --- a/swing/src/net/sf/openrocket/gui/util/SwingPreferences.java +++ b/swing/src/net/sf/openrocket/gui/util/SwingPreferences.java @@ -71,7 +71,7 @@ public class SwingPreferences extends net.sf.openrocket.startup.Preferences { */ private static final String NODENAME = (DEBUG ? "OpenRocket-debug" : "OpenRocket"); - private final Preferences PREFNODE; + private Preferences PREFNODE; public SwingPreferences() { @@ -93,7 +93,18 @@ public class SwingPreferences extends net.sf.openrocket.startup.Preferences { ////////////////////// - + public void clearPreferences() { + try { + Preferences root = Preferences.userRoot(); + if (root.nodeExists(NODENAME)) { + root.node(NODENAME).removeNode(); + } + PREFNODE = root.node(NODENAME); + log.info("Cleared preferences"); + } catch (BackingStoreException e) { + throw new BugException("Unable to clear preference node", e); + } + } /** * Store the current OpenRocket version into the preferences to allow for preferences migration.