diff --git a/core/launcher/src/main/java/org/phoebus/product/Launcher.java b/core/launcher/src/main/java/org/phoebus/product/Launcher.java
index 05b9bd88e1..396c5368c1 100644
--- a/core/launcher/src/main/java/org/phoebus/product/Launcher.java
+++ b/core/launcher/src/main/java/org/phoebus/product/Launcher.java
@@ -2,6 +2,7 @@
import javafx.application.Application;
import org.phoebus.framework.preferences.PropertyPreferenceLoader;
+import org.phoebus.framework.preferences.PropertyPreferenceWriter;
import org.phoebus.framework.spi.AppDescriptor;
import org.phoebus.framework.spi.AppResourceDescriptor;
import org.phoebus.framework.workbench.ApplicationService;
@@ -9,10 +10,7 @@
import org.phoebus.ui.application.ApplicationServer;
import org.phoebus.ui.application.PhoebusApplication;
-import java.io.File;
-import java.io.InputStream;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
+import java.io.*;
import java.lang.reflect.Method;
import java.nio.charset.Charset;
import java.util.ArrayList;
@@ -25,11 +23,14 @@
import java.util.prefs.Preferences;
import java.util.stream.Collectors;
+import static org.phoebus.ui.application.PhoebusApplication.logger;
+
@SuppressWarnings("nls")
public class Launcher {
private static final String LOGGING_OPTION = "-logging";
private static final String DEFAULT_LOGGING_FILE="/logging.properties";
private static final String LOGGING_PROP = "java.util.logging.config.file";
+ private static final String SETTINGS_SNAPSHOT = "settings_snapshot";
public static void main(final String[] original_args) throws Exception {
// First Handle arguments, potentially not even starting the UI
@@ -95,15 +96,11 @@ public static void main(final String[] original_args) throws Exception {
Locations.initialize();
// Check for site-specific settings.ini bundled into distribution
// before potentially adding command-line settings.
- final File site_settings = new File(Locations.install(), "settings.ini");
- if (site_settings.canRead())
+ final File siteSettings = new File(Locations.install(), "settings.ini");
+ if (siteSettings.canRead())
{
- logger.info("Loading bundled settings from " + site_settings.getAbsolutePath());
- final FileInputStream fileInputStream = new FileInputStream(site_settings);
- if (site_settings.getName().endsWith(".xml"))
- Preferences.importPreferences(fileInputStream);
- else
- PropertyPreferenceLoader.load(fileInputStream);
+ logger.info("Loading bundled settings from " + siteSettings.getAbsolutePath());
+ loadSettings(siteSettings.getName());
}
// Handle arguments, potentially not even starting the UI
@@ -140,11 +137,7 @@ public static void main(final String[] original_args) throws Exception {
iter.remove();
logger.info("Loading settings from " + location);
- if (location.endsWith(".xml"))
- Preferences.importPreferences(new FileInputStream(location));
- else
- PropertyPreferenceLoader.load(location);
-
+ loadSettings(location);
} else if (cmd.equals("-export_settings")) {
if (!iter.hasNext())
throw new Exception("Missing -export_settings file name");
@@ -220,6 +213,26 @@ public static void main(final String[] original_args) throws Exception {
Application.launch(PhoebusApplication.class, args.toArray(new String[args.size()]));
}
+ private static void loadSettings(String location) throws Exception {
+ if (location.endsWith(".xml"))
+ Preferences.importPreferences(new FileInputStream(location));
+ else
+ PropertyPreferenceLoader.load(location);
+
+ // Preference settings
+ final ByteArrayOutputStream prefsBuf = new ByteArrayOutputStream();
+ try
+ {
+ PropertyPreferenceWriter.save(prefsBuf);
+ }
+ catch (Exception ex)
+ {
+ logger.log(Level.WARNING, "Cannot list preferences", ex);
+ }
+
+ Preferences.userRoot().put(SETTINGS_SNAPSHOT, prefsBuf.toString());
+ }
+
private static void help() {
System.out.println(" _______ _______ _______ ______ _______ ");
System.out.println("( ____ )|\\ /|( ___ )( ____ \\( ___ \\ |\\ /|( ____ \\");
diff --git a/core/ui/src/main/java/org/phoebus/ui/help/OpenAbout.java b/core/ui/src/main/java/org/phoebus/ui/help/OpenAbout.java
index 254d9d48d5..70b5834a88 100644
--- a/core/ui/src/main/java/org/phoebus/ui/help/OpenAbout.java
+++ b/core/ui/src/main/java/org/phoebus/ui/help/OpenAbout.java
@@ -7,15 +7,11 @@
*******************************************************************************/
package org.phoebus.ui.help;
-import static org.phoebus.ui.application.PhoebusApplication.logger;
-
-import java.io.ByteArrayOutputStream;
import java.io.File;
import java.util.Arrays;
import java.util.List;
-import java.util.logging.Level;
+import java.util.prefs.Preferences;
-import org.phoebus.framework.preferences.PropertyPreferenceWriter;
import org.phoebus.framework.workbench.ApplicationService;
import org.phoebus.framework.workbench.Locations;
import org.phoebus.ui.application.Messages;
@@ -50,6 +46,7 @@
@SuppressWarnings("nls")
public class OpenAbout implements MenuEntry
{
+ private static final String SETTINGS_SNAPSHOT = "settings_snapshot";
/** Non-null while the 'about' dialog is shown */
private Alert dialog;
@@ -194,22 +191,12 @@ private Node createDetailSection()
area.setEditable(false);
final Tab props = new Tab(Messages.HelpAboutSysFea, area);
- // Preference settings
- final ByteArrayOutputStream prefs_buf = new ByteArrayOutputStream();
- try
- {
- PropertyPreferenceWriter.save(prefs_buf);
- }
- catch (Exception ex)
- {
- logger.log(Level.WARNING, "Cannot list preferences", ex);
- }
-
+ String settingsSnapshot = Preferences.userRoot().get(SETTINGS_SNAPSHOT, "");
WebView webView = new WebView();
String content = "