Fix options not updating after different tries
This commit is contained in:
parent
abb742bcc6
commit
0f09497275
@ -18,6 +18,9 @@ public class PreferencesOptionPanel extends JPanel {
|
|||||||
private static final Translator trans = Application.getTranslator();
|
private static final Translator trans = Application.getTranslator();
|
||||||
private static final Preferences prefs = Application.getPreferences();
|
private static final Preferences prefs = Application.getPreferences();
|
||||||
|
|
||||||
|
private final JCheckBox exportUserDirectories;
|
||||||
|
private final JCheckBox exportWindowInfo;
|
||||||
|
|
||||||
public PreferencesOptionPanel() {
|
public PreferencesOptionPanel() {
|
||||||
super(new MigLayout("fill, ins 0"));
|
super(new MigLayout("fill, ins 0"));
|
||||||
|
|
||||||
@ -25,7 +28,7 @@ public class PreferencesOptionPanel extends JPanel {
|
|||||||
panel.setBorder(BorderFactory.createTitledBorder(trans.get("PreferencesOptionPanel.title")));
|
panel.setBorder(BorderFactory.createTitledBorder(trans.get("PreferencesOptionPanel.title")));
|
||||||
|
|
||||||
// Export user directories
|
// Export user directories
|
||||||
JCheckBox exportUserDirectories = new JCheckBox(trans.get("PreferencesOptionPanel.checkbox.userDirectories"));
|
exportUserDirectories = new JCheckBox(trans.get("PreferencesOptionPanel.checkbox.userDirectories"));
|
||||||
exportUserDirectories.setToolTipText(trans.get("PreferencesOptionPanel.checkbox.userDirectories.ttip"));
|
exportUserDirectories.setToolTipText(trans.get("PreferencesOptionPanel.checkbox.userDirectories.ttip"));
|
||||||
exportUserDirectories.setSelected(prefs.getExportUserDirectories());
|
exportUserDirectories.setSelected(prefs.getExportUserDirectories());
|
||||||
exportUserDirectories.addItemListener(new ItemListener() {
|
exportUserDirectories.addItemListener(new ItemListener() {
|
||||||
@ -37,7 +40,7 @@ public class PreferencesOptionPanel extends JPanel {
|
|||||||
panel.add(exportUserDirectories, "wrap");
|
panel.add(exportUserDirectories, "wrap");
|
||||||
|
|
||||||
// Export window information (position, size...)
|
// Export window information (position, size...)
|
||||||
JCheckBox exportWindowInfo = new JCheckBox(trans.get("PreferencesOptionPanel.checkbox.windowInfo"));
|
exportWindowInfo = new JCheckBox(trans.get("PreferencesOptionPanel.checkbox.windowInfo"));
|
||||||
exportWindowInfo.setToolTipText(trans.get("PreferencesOptionPanel.checkbox.windowInfo.ttip"));
|
exportWindowInfo.setToolTipText(trans.get("PreferencesOptionPanel.checkbox.windowInfo.ttip"));
|
||||||
exportWindowInfo.setSelected(prefs.getExportWindowInformation());
|
exportWindowInfo.setSelected(prefs.getExportWindowInformation());
|
||||||
exportWindowInfo.addItemListener(new ItemListener() {
|
exportWindowInfo.addItemListener(new ItemListener() {
|
||||||
@ -51,4 +54,12 @@ public class PreferencesOptionPanel extends JPanel {
|
|||||||
|
|
||||||
this.add(panel, "growx, north");
|
this.add(panel, "growx, north");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isIgnoreUserDirectories() {
|
||||||
|
return !exportUserDirectories.isSelected();
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isIgnoreWindowInformation() {
|
||||||
|
return !exportWindowInfo.isSelected();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -44,29 +44,14 @@ public abstract class PreferencesExporter {
|
|||||||
private static final List<String> prefixKeysToIgnore = new ArrayList<>(); // Preference keys to ignore when exporting user directories (= keys that start with these prefixes), e.g.
|
private static final List<String> prefixKeysToIgnore = new ArrayList<>(); // Preference keys to ignore when exporting user directories (= keys that start with these prefixes), e.g.
|
||||||
private static final List<String> nodesToIgnore = new ArrayList<>(); // Preferences nodes that should not be exported
|
private static final List<String> nodesToIgnore = new ArrayList<>(); // Preferences nodes that should not be exported
|
||||||
|
|
||||||
static {
|
|
||||||
if (!prefs.getExportUserDirectories()) {
|
|
||||||
keysToIgnore.add(net.sf.openrocket.startup.Preferences.USER_THRUST_CURVES_KEY);
|
|
||||||
keysToIgnore.add(net.sf.openrocket.startup.Preferences.DEFAULT_DIRECTORY);
|
|
||||||
prefixKeysToIgnore.add(MRUDesignFile.MRU_FILE_LIST_PROPERTY);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!prefs.getExportWindowInformation()) {
|
|
||||||
nodesToIgnore.add(SwingPreferences.NODE_WINDOWS);
|
|
||||||
nodesToIgnore.add(SwingPreferences.NODE_TABLES);
|
|
||||||
}
|
|
||||||
|
|
||||||
keysToIgnore.add(SwingPreferences.UPDATE_PLATFORM); // Don't export platform-specific settings
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public static boolean exportPreferences(Window parent, Preferences preferences) {
|
public static boolean exportPreferences(Window parent, Preferences preferences) {
|
||||||
JFileChooser chooser = new SaveFileChooser();
|
JFileChooser chooser = new SaveFileChooser();
|
||||||
chooser.setDialogTitle(trans.get("PreferencesExporter.chooser.title"));
|
chooser.setDialogTitle(trans.get("PreferencesExporter.chooser.title"));
|
||||||
chooser.setAcceptAllFileFilterUsed(false);
|
chooser.setAcceptAllFileFilterUsed(false);
|
||||||
chooser.setFileFilter(FileHelper.XML_FILTER);
|
chooser.setFileFilter(FileHelper.XML_FILTER);
|
||||||
chooser.setCurrentDirectory(((SwingPreferences) Application.getPreferences()).getDefaultDirectory());
|
chooser.setCurrentDirectory(((SwingPreferences) Application.getPreferences()).getDefaultDirectory());
|
||||||
chooser.setAccessory(new PreferencesOptionPanel());
|
PreferencesOptionPanel options = new PreferencesOptionPanel();
|
||||||
|
chooser.setAccessory(options);
|
||||||
|
|
||||||
// TODO: update this dynamically instead of hard-coded values
|
// TODO: update this dynamically instead of hard-coded values
|
||||||
// The macOS file chooser has an issue where it does not update its size when the accessory is added.
|
// The macOS file chooser has an issue where it does not update its size when the accessory is added.
|
||||||
@ -96,6 +81,11 @@ public abstract class PreferencesExporter {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Decide which keys/nodes to ignore
|
||||||
|
boolean ignoreUserDirectories = options.isIgnoreUserDirectories();
|
||||||
|
boolean ignoreWindowInformation = options.isIgnoreWindowInformation();
|
||||||
|
fillIgnoreKeys(ignoreUserDirectories, ignoreWindowInformation);
|
||||||
|
|
||||||
try (FileOutputStream fos = new FileOutputStream(newFile)) {
|
try (FileOutputStream fos = new FileOutputStream(newFile)) {
|
||||||
if (keysToIgnore.isEmpty() && nodesToIgnore.isEmpty() && prefixKeysToIgnore.isEmpty()) {
|
if (keysToIgnore.isEmpty() && nodesToIgnore.isEmpty() && prefixKeysToIgnore.isEmpty()) {
|
||||||
// Export all preferences
|
// Export all preferences
|
||||||
@ -112,6 +102,25 @@ public abstract class PreferencesExporter {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void fillIgnoreKeys(boolean ignoreUserDirectories, boolean ignoreWindowInformation) {
|
||||||
|
keysToIgnore.clear();
|
||||||
|
prefixKeysToIgnore.clear();
|
||||||
|
nodesToIgnore.clear();
|
||||||
|
|
||||||
|
if (ignoreUserDirectories) {
|
||||||
|
keysToIgnore.add(net.sf.openrocket.startup.Preferences.USER_THRUST_CURVES_KEY);
|
||||||
|
keysToIgnore.add(net.sf.openrocket.startup.Preferences.DEFAULT_DIRECTORY);
|
||||||
|
prefixKeysToIgnore.add(MRUDesignFile.MRU_FILE_LIST_PROPERTY);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ignoreWindowInformation) {
|
||||||
|
nodesToIgnore.add(SwingPreferences.NODE_WINDOWS);
|
||||||
|
nodesToIgnore.add(SwingPreferences.NODE_TABLES);
|
||||||
|
}
|
||||||
|
|
||||||
|
keysToIgnore.add(SwingPreferences.UPDATE_PLATFORM); // Don't export platform-specific settings
|
||||||
|
}
|
||||||
|
|
||||||
private static void exportFilteredPreferences(Preferences preferences, FileOutputStream fos) throws BackingStoreException, IOException {
|
private static void exportFilteredPreferences(Preferences preferences, FileOutputStream fos) throws BackingStoreException, IOException {
|
||||||
// Filter out user directories
|
// Filter out user directories
|
||||||
Preferences root = Preferences.userRoot();
|
Preferences root = Preferences.userRoot();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user