diff options
author | Jiri Vanek <[email protected]> | 2013-12-20 11:20:39 +0100 |
---|---|---|
committer | Jiri Vanek <[email protected]> | 2013-12-20 11:20:39 +0100 |
commit | 99428f6f586269f4b5856f93adb71385f6c64c97 (patch) | |
tree | f13560c1d4d7200583dc858b1ad8c387023f5013 /netx/net/sourceforge/jnlp/util/logging/JavaConsole.java | |
parent | c3b3c491051c08e035593a25850e537168bb1db9 (diff) |
singletons logic, logs and test cleanup/fixes
Diffstat (limited to 'netx/net/sourceforge/jnlp/util/logging/JavaConsole.java')
-rw-r--r-- | netx/net/sourceforge/jnlp/util/logging/JavaConsole.java | 56 |
1 files changed, 28 insertions, 28 deletions
diff --git a/netx/net/sourceforge/jnlp/util/logging/JavaConsole.java b/netx/net/sourceforge/jnlp/util/logging/JavaConsole.java index 2ee601e..3b7d438 100644 --- a/netx/net/sourceforge/jnlp/util/logging/JavaConsole.java +++ b/netx/net/sourceforge/jnlp/util/logging/JavaConsole.java @@ -62,15 +62,12 @@ import javax.swing.JScrollPane; import javax.swing.JSplitPane; import javax.swing.JTextArea; import javax.swing.SwingUtilities; -import javax.swing.UIManager; import javax.swing.border.EmptyBorder; import javax.swing.border.TitledBorder; import net.sourceforge.jnlp.config.DeploymentConfiguration; import net.sourceforge.jnlp.runtime.JNLPRuntime; import net.sourceforge.jnlp.util.ImageResources; import net.sourceforge.jnlp.util.logging.headers.Header; -import net.sourceforge.jnlp.util.logging.headers.JavaMessage; -import net.sourceforge.jnlp.util.logging.headers.MessageWithHeader; import net.sourceforge.jnlp.util.logging.headers.PluginMessage; /** @@ -86,11 +83,14 @@ public class JavaConsole { private static JavaConsole console; private static Dimension lastSize; + private static class JavaConsoleHolder { + + //https://en.wikipedia.org/wiki/Double-checked_locking#Usage_in_Java + //https://en.wikipedia.org/wiki/Initialization_on_demand_holder_idiom + private static final JavaConsole INSTANCE = new JavaConsole(); + } public static JavaConsole getConsole() { - if (console == null) { - console = new JavaConsole(); - } - return console; + return JavaConsoleHolder.INSTANCE; } public static boolean isEnabled() { @@ -119,15 +119,22 @@ public class JavaConsole { private JDialog consoleWindow; private JTextArea stdErrText; private JTextArea stdOutText; - private JPanel contentPanel = new JPanel(); + private JPanel contentPanel; private ClassLoaderInfoProvider classLoaderInfoProvider; + private boolean initialized = false; + + private String stdErrTextSrc = ""; + private String stdOutTextSrc = ""; public JavaConsole() { - initialize(); + } private void initializeWindow() { + if (!initialized){ + initialize(); + } initializeWindow(lastSize, contentPanel); } @@ -160,13 +167,6 @@ public class JavaConsole { */ private void initialize() { - try { - UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); - } catch (Exception e) { - OutputController.getLogger().log(OutputController.Level.ERROR_ALL, e); - } - - contentPanel = new JPanel(); contentPanel.setLayout(new GridBagLayout()); @@ -296,6 +296,7 @@ public class JavaConsole { splitPane.setDividerLocation(0.5); splitPane.setResizeWeight(0.5); + initialized = true; } public void showConsole() { @@ -416,22 +417,21 @@ public class JavaConsole { } - void addMessage(Header header, String message) { - if (!LogConfig.getLogConfig().isEnableHeaders()){ + synchronized void addMessage(Header header, String message) { + String headerString = ""; + if (LogConfig.getLogConfig().isEnableHeaders()){ + headerString = header.toString(); + } if (header.level.isError()){ - stdErrText.setText(stdErrText.getText() + message + "\n"); + stdErrTextSrc += headerString + message +"\n"; } if (header.level.isOutput()){ - stdOutText.setText(stdOutText.getText() + message + "\n"); + stdOutTextSrc += headerString + message + "\n"; } - } else { - if (header.level.isError()){ - stdErrText.setText(stdErrText.getText( )+ header.toString() + message +"\n"); + if (initialized){ + stdErrText.setText(stdErrTextSrc); + stdOutText.setText(stdOutTextSrc); } - if (header.level.isOutput()){ - stdOutText.setText(stdOutText.getText() + header.toString() + message + "\n"); - } - } } /** @@ -440,7 +440,7 @@ public class JavaConsole { */ private void processPluginMessage(String s) { PluginMessage pm = new PluginMessage(s); - addMessage(pm.getHeader(), pm.getMessage()); + OutputController.getLogger().log(pm); } |