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 = ""; - content += prefs_buf.toString(); + content += settingsSnapshot; content += ""; webView.getEngine().loadContent(content); @@ -217,7 +204,6 @@ private Node createDetailSection() final Tab prefs = new Tab(Messages.HelpAboutPrefs, webView); - final TabPane tabs = new TabPane(apps, envs, props, prefs); - return tabs; + return new TabPane(apps, envs, props, prefs); } }