This is an automated email from the ASF dual-hosted git repository.
grobmeier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/logging-chainsaw.git
The following commit(s) were added to refs/heads/master by this push:
new e60d736 removed SettingsManager singleton in favor to injecting it
e60d736 is described below
commit e60d736a8b3a15c31690f72b90efc1408eb55e69
Author: Christian Grobmeier <[email protected]>
AuthorDate: Tue Nov 28 22:36:54 2023 +0100
removed SettingsManager singleton in favor to injecting it
---
.../chainsaw/ApplicationPreferenceModelPanel.java | 22 +++---
.../org/apache/log4j/chainsaw/ChainsawStarter.java | 19 +++---
.../log4j/chainsaw/ChainsawToolBarAndMenus.java | 28 +++-----
src/main/java/org/apache/log4j/chainsaw/LogUI.java | 79 ++++++++++------------
.../log4j/chainsaw/ReceiverConfigurationPanel.java | 18 ++---
.../log4j/chainsaw/TableColorizingRenderer.java | 6 +-
.../apache/log4j/chainsaw/color/ColorPanel.java | 14 ++--
.../apache/log4j/chainsaw/color/RuleColorizer.java | 9 ++-
.../chainsaw/components/logpanel/LogPanel.java | 42 ++++++------
.../logpanel/LogPanelPreferencePanel.java | 14 ++--
.../log4j/chainsaw/prefs/SettingsManager.java | 42 ++++--------
.../log4j/chainsaw/receivers/ReceiversPanel.java | 6 +-
.../log4j/chainsaw/zeroconf/ZeroConfPlugin.java | 6 +-
13 files changed, 137 insertions(+), 168 deletions(-)
diff --git
a/src/main/java/org/apache/log4j/chainsaw/ApplicationPreferenceModelPanel.java
b/src/main/java/org/apache/log4j/chainsaw/ApplicationPreferenceModelPanel.java
index a5e61e6..d1dbd4d 100644
---
a/src/main/java/org/apache/log4j/chainsaw/ApplicationPreferenceModelPanel.java
+++
b/src/main/java/org/apache/log4j/chainsaw/ApplicationPreferenceModelPanel.java
@@ -19,7 +19,6 @@ package org.apache.log4j.chainsaw;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
-import org.apache.log4j.chainsaw.helper.SwingHelper;
import org.apache.log4j.chainsaw.osx.OSXIntegration;
import javax.swing.*;
@@ -27,9 +26,6 @@ import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreeModel;
import java.awt.*;
-import java.io.File;
-import java.net.MalformedURLException;
-import java.net.URL;
import java.util.Dictionary;
import java.util.Enumeration;
import java.util.Hashtable;
@@ -51,23 +47,21 @@ public class ApplicationPreferenceModelPanel extends
AbstractPreferencePanel {
private JTextField cyclicBufferSize;
private GeneralAllPrefPanel generalAllPrefPanel;
private AbstractConfiguration m_globalConfiguration;
+ private SettingsManager settingsManager;
- ApplicationPreferenceModelPanel() {
- m_globalConfiguration =
SettingsManager.getInstance().getGlobalConfiguration();
+ ApplicationPreferenceModelPanel(SettingsManager settingsManager) {
+ this.m_globalConfiguration = settingsManager.getGlobalConfiguration();
+ this.settingsManager = settingsManager;
initComponents();
getOkButton().addActionListener(
e -> {
- SettingsManager.getInstance().saveGlobalSettings();
+ settingsManager.saveGlobalSettings();
hidePanel();
});
getCancelButton().addActionListener(e -> hidePanel());
}
- public void updateModel(){
-
- }
-
/* (non-Javadoc)
* @see org.apache.log4j.chainsaw.AbstractPreferencePanel#createTreeModel()
*/
@@ -128,7 +122,7 @@ public class ApplicationPreferenceModelPanel extends
AbstractPreferencePanel {
*
*/
private void setupListeners() {
- final AbstractConfiguration config =
SettingsManager.getInstance().getGlobalConfiguration();
+ final AbstractConfiguration config =
settingsManager.getGlobalConfiguration();
topPlacement.addActionListener(
e -> config.setProperty("tabPlacement", SwingConstants.TOP));
@@ -221,7 +215,7 @@ public class ApplicationPreferenceModelPanel extends
AbstractPreferencePanel {
JPanel lfPanel = new JPanel();
lfPanel.setLayout(new BoxLayout(lfPanel, BoxLayout.Y_AXIS));
lfPanel.setBorder(BorderFactory.createTitledBorder(" Look & Feel
"));
- final AbstractConfiguration configuration =
SettingsManager.getInstance().getGlobalConfiguration();
+ final AbstractConfiguration configuration =
settingsManager.getGlobalConfiguration();
for (final UIManager.LookAndFeelInfo lfInfo : lookAndFeels) {
final JRadioButton lfItem = new JRadioButton(" " +
lfInfo.getName() + " ");
@@ -272,7 +266,7 @@ public class ApplicationPreferenceModelPanel extends
AbstractPreferencePanel {
}
public void updateModel(){
- AbstractConfiguration config =
SettingsManager.getInstance().getGlobalConfiguration();
+ AbstractConfiguration config =
settingsManager.getGlobalConfiguration();
statusBar.setSelected(config.getBoolean("statusBar"));
receivers.setSelected(config.getBoolean("showReceivers"));
diff --git a/src/main/java/org/apache/log4j/chainsaw/ChainsawStarter.java
b/src/main/java/org/apache/log4j/chainsaw/ChainsawStarter.java
index 896198d..c7dc52a 100644
--- a/src/main/java/org/apache/log4j/chainsaw/ChainsawStarter.java
+++ b/src/main/java/org/apache/log4j/chainsaw/ChainsawStarter.java
@@ -21,8 +21,6 @@ import java.util.Locale;
public class ChainsawStarter {
private static Logger logger = LogManager.getLogger(ChainsawStarter.class);
-
-
/**
* Starts Chainsaw by attaching a new instance to the Log4J main root
Logger
* via a ChainsawAppender, and activates itself
@@ -34,8 +32,9 @@ public class ChainsawStarter {
System.setProperty("apple.laf.useScreenMenuBar", "true");
}
- AbstractConfiguration configuration =
SettingsManager.getInstance().getGlobalConfiguration();
+ SettingsManager settingsManager = new SettingsManager();
+ AbstractConfiguration configuration =
settingsManager.getGlobalConfiguration();
EventQueue.invokeLater(() -> {
String lookAndFeelClassName =
configuration.getString("lookAndFeelClassName");
if (lookAndFeelClassName == null ||
lookAndFeelClassName.trim().isEmpty()) {
@@ -60,7 +59,7 @@ public class ChainsawStarter {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}catch(Exception ex){}
}
- createChainsawGUI(null);
+ createChainsawGUI(settingsManager, null);
});
}
@@ -71,11 +70,11 @@ public class ChainsawStarter {
*
* @param newShutdownAction DOCUMENT ME!
*/
- public static void createChainsawGUI(Action newShutdownAction) {
- AbstractConfiguration config =
SettingsManager.getInstance().getGlobalConfiguration();
+ public static void createChainsawGUI(SettingsManager settingsManager,
Action newShutdownAction) {
SplashViewer splashViewer = new SplashViewer();
- if (config.getBoolean("okToRemoveSecurityManager", false)) {
+ AbstractConfiguration configuration =
settingsManager.getGlobalConfiguration();
+ if (configuration.getBoolean("okToRemoveSecurityManager", false)) {
System.setSecurityManager(null);
// this SHOULD set the Policy/Permission stuff for any
// code loaded from our custom classloader.
@@ -90,14 +89,14 @@ public class ChainsawStarter {
});
}
- final LogUI logUI = new LogUI();
+ final LogUI logUI = new LogUI(settingsManager);
final LoggerContext ctx = (LoggerContext)
org.apache.logging.log4j.LogManager.getContext(false);
logUI.chainsawAppender =
ctx.getConfiguration().getAppender("chainsaw");
- if (config.getBoolean("slowSplash", true)) {
+ if (configuration.getBoolean("slowSplash", true)) {
splashViewer.showSplash(logUI);
}
- logUI.cyclicBufferSize = config.getInt("cyclicBufferSize", 50000);
+ logUI.cyclicBufferSize = configuration.getInt("cyclicBufferSize",
50000);
/**
diff --git
a/src/main/java/org/apache/log4j/chainsaw/ChainsawToolBarAndMenus.java
b/src/main/java/org/apache/log4j/chainsaw/ChainsawToolBarAndMenus.java
index f19de0e..d02c965 100644
--- a/src/main/java/org/apache/log4j/chainsaw/ChainsawToolBarAndMenus.java
+++ b/src/main/java/org/apache/log4j/chainsaw/ChainsawToolBarAndMenus.java
@@ -17,6 +17,8 @@
package org.apache.log4j.chainsaw;
+import org.apache.commons.configuration2.AbstractConfiguration;
+import org.apache.commons.configuration2.event.ConfigurationEvent;
import org.apache.log4j.chainsaw.components.elements.SmallButton;
import org.apache.log4j.chainsaw.components.elements.SmallToggleButton;
import org.apache.log4j.chainsaw.components.logpanel.LogPanel;
@@ -35,9 +37,6 @@ import java.awt.event.KeyEvent;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
-import org.apache.commons.configuration2.AbstractConfiguration;
-import org.apache.commons.configuration2.event.ConfigurationEvent;
-import org.apache.log4j.chainsaw.prefs.SettingsManager;
/**
@@ -89,6 +88,7 @@ class ChainsawToolBarAndMenus implements ChangeListener {
private final JCheckBoxMenuItem menuShowWelcome = new JCheckBoxMenuItem();
private final JToolBar toolbar;
private final LogUI logui;
+ private AbstractConfiguration configuration;
private final SmallButton clearButton = new SmallButton();
private final SmallToggleButton detailPaneButton = new SmallToggleButton();
private final SmallToggleButton logTreePaneButton = new
SmallToggleButton();
@@ -98,8 +98,9 @@ class ChainsawToolBarAndMenus implements ChangeListener {
private final Action[] logPanelSpecificActions;
private final JMenu activeTabMenu = new JMenu("Current tab");
- ChainsawToolBarAndMenus(final LogUI logui) {
+ ChainsawToolBarAndMenus(final LogUI logui, AbstractConfiguration
configuration) {
this.logui = logui;
+ this.configuration = configuration;
toolbar = new JToolBar(SwingConstants.HORIZONTAL);
menuBar = new JMenuBar();
fileMenu = new FileMenu(logui);
@@ -138,7 +139,7 @@ class ChainsawToolBarAndMenus implements ChangeListener {
toggleLogTreeAction, toggleScrollToBottomAction,
changeModelAction,
};
-
SettingsManager.getInstance().getGlobalConfiguration().addEventListener(ConfigurationEvent.SET_PROPERTY,
+ configuration.addEventListener(ConfigurationEvent.SET_PROPERTY,
evt -> {
if( evt.getPropertyName().equals( "statusBar" ) ){
boolean value = (Boolean) evt.getPropertyValue();
@@ -146,7 +147,7 @@ class ChainsawToolBarAndMenus implements ChangeListener {
}
});
-
SettingsManager.getInstance().getGlobalConfiguration().addEventListener(ConfigurationEvent.SET_PROPERTY,
+ configuration.addEventListener(ConfigurationEvent.SET_PROPERTY,
evt -> {
if( evt.getPropertyName().equals( "showReceivers" ) ){
boolean value = (Boolean) evt.getPropertyValue();
@@ -395,8 +396,6 @@ class ChainsawToolBarAndMenus implements ChangeListener {
viewMenu.setMnemonic('V');
- AbstractConfiguration configuration =
SettingsManager.getInstance().getGlobalConfiguration();
-
toggleShowToolbarCheck.setAction(toggleToolbarAction);
toggleShowToolbarCheck.setSelected(configuration.getBoolean("toolbar",
true));
@@ -440,8 +439,7 @@ class ChainsawToolBarAndMenus implements ChangeListener {
new AbstractAction("Show Status bar") {
public void actionPerformed(ActionEvent arg0) {
boolean isSelected = toggleStatusBarCheck.isSelected();
- SettingsManager.getInstance().getGlobalConfiguration()
- .setProperty("statusBar", isSelected);
+ configuration.setProperty("statusBar", isSelected);
}
};
@@ -632,10 +630,8 @@ class ChainsawToolBarAndMenus implements ChangeListener {
public void actionPerformed(ActionEvent arg0) {
// Since this action can be triggered from either a button
// or a check box, get the current value and invert it.
- boolean currentValue =
SettingsManager.getInstance().getGlobalConfiguration()
- .getBoolean("showReceivers", false);
- SettingsManager.getInstance().getGlobalConfiguration()
- .setProperty("showReceivers", !currentValue);
+ boolean currentValue =
configuration.getBoolean("showReceivers", false);
+ configuration.setProperty("showReceivers", !currentValue);
}
};
@@ -683,8 +679,7 @@ class ChainsawToolBarAndMenus implements ChangeListener {
new AbstractAction("Show Toolbar") {
public void actionPerformed(ActionEvent e) {
boolean isSelected = toggleShowToolbarCheck.isSelected();
- SettingsManager.getInstance().getGlobalConfiguration()
- .setProperty("toolbar", isSelected);
+ configuration.setProperty("toolbar", isSelected);
}
};
@@ -794,7 +789,6 @@ class ChainsawToolBarAndMenus implements ChangeListener {
}
private void scanState() {
- AbstractConfiguration configuration =
SettingsManager.getInstance().getGlobalConfiguration();
boolean showReceiversByDefault =
configuration.getBoolean("showReceivers", false);
toggleStatusBarCheck.setSelected(logui.isStatusBarVisible());
diff --git a/src/main/java/org/apache/log4j/chainsaw/LogUI.java
b/src/main/java/org/apache/log4j/chainsaw/LogUI.java
index a95509e..ff531fb 100644
--- a/src/main/java/org/apache/log4j/chainsaw/LogUI.java
+++ b/src/main/java/org/apache/log4j/chainsaw/LogUI.java
@@ -114,7 +114,7 @@ public class LogUI extends JFrame {
public ChainsawAppender chainsawAppender;
private ChainsawToolBarAndMenus chainsawToolBarAndMenus;
private ChainsawAbout aboutBox;
- private final SettingsManager settingsManager =
SettingsManager.getInstance();
+ private SettingsManager settingsManager;
private final JFrame tutorialFrame = new JFrame("Chainsaw Tutorial");
private JSplitPane mainReceiverSplitPane;
private double lastMainReceiverSplitLocation =
DEFAULT_MAIN_RECEIVER_SPLIT_LOCATION;
@@ -123,7 +123,7 @@ public class LogUI extends JFrame {
public int cyclicBufferSize;
private List<ChainsawReceiver> m_receivers = new ArrayList<>();
private List<ReceiverEventListener> m_receiverListeners = new
ArrayList<>();
- private ZeroConfPlugin m_zeroConf = new ZeroConfPlugin();
+ private ZeroConfPlugin m_zeroConf = new ZeroConfPlugin(settingsManager);
private static Logger logger = LogManager.getLogger();
@@ -145,18 +145,22 @@ public class LogUI extends JFrame {
//map of tab names to rulecolorizers
private Map<String, RuleColorizer> allColorizers = new HashMap<>();
- private RuleColorizer globalRuleColorizer = new RuleColorizer(true);
- private ReceiverConfigurationPanel receiverConfigurationPanel = new
ReceiverConfigurationPanel();
+ private RuleColorizer globalRuleColorizer = new
RuleColorizer(settingsManager, true);
+ private ReceiverConfigurationPanel receiverConfigurationPanel = new
ReceiverConfigurationPanel(settingsManager);
+ private AbstractConfiguration configuration;
/**
* Constructor which builds up all the visual elements of the frame
including
* the Menu bar
*/
- public LogUI() {
+ public LogUI(SettingsManager settingsManager) {
super("Chainsaw");
+
+ this.settingsManager = settingsManager;
+ this.configuration = settingsManager.getGlobalConfiguration();
setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
-
globalRuleColorizer.setConfiguration(SettingsManager.getInstance().getGlobalConfiguration());
+ globalRuleColorizer.setConfiguration(configuration);
globalRuleColorizer.loadColorSettings();
if (ChainsawIcons.WINDOW_ICON != null) {
@@ -194,7 +198,7 @@ public class LogUI extends JFrame {
statusBar = new ChainsawStatusBar(this);
setupReceiverPanel();
- setToolBarAndMenus(new ChainsawToolBarAndMenus(this));
+ setToolBarAndMenus(new ChainsawToolBarAndMenus(this, configuration));
toolbar = getToolBarAndMenus().getToolbar();
setJMenuBar(getToolBarAndMenus().getMenubar());
@@ -227,7 +231,7 @@ public class LogUI extends JFrame {
});
- applicationPreferenceModelPanel = new
ApplicationPreferenceModelPanel();
+ applicationPreferenceModelPanel = new
ApplicationPreferenceModelPanel(settingsManager);
applicationPreferenceModelPanel.setOkCancelActionListener(
e -> preferencesFrame.setVisible(false));
@@ -246,7 +250,7 @@ public class LogUI extends JFrame {
}
private void setupReceiverPanel() {
- receiversPanel = new ReceiversPanel(this, statusBar);
+ receiversPanel = new ReceiversPanel(settingsManager, this, statusBar);
// receiversPanel.addPropertyChangeListener(
// "visible",
// evt -> getApplicationPreferenceModel().setReceivers(
@@ -311,7 +315,7 @@ public class LogUI extends JFrame {
* etc.
*/
private void loadSettings() {
- AbstractConfiguration config =
SettingsManager.getInstance().getGlobalConfiguration();
+ AbstractConfiguration config =
settingsManager.getGlobalConfiguration();
setLocation(
config.getInt(LogUI.MAIN_WINDOW_X, 0),
config.getInt(LogUI.MAIN_WINDOW_Y, 0));
int width = config.getInt(LogUI.MAIN_WINDOW_WIDTH, -1);
@@ -326,7 +330,7 @@ public class LogUI extends JFrame {
}
getToolBarAndMenus().stateChange();
- RuleColorizer colorizer = new RuleColorizer();
+ RuleColorizer colorizer = new RuleColorizer(settingsManager);
allColorizers.put(ChainsawConstants.DEFAULT_COLOR_RULE_NAME,
colorizer);
}
@@ -597,7 +601,7 @@ public class LogUI extends JFrame {
setVisible(true);
- if
(settingsManager.getGlobalConfiguration().getBoolean("showReceivers", false)) {
+ if (configuration.getBoolean("showReceivers", false)) {
showReceiverPanel();
} else {
hideReceiverPanel();
@@ -609,7 +613,7 @@ public class LogUI extends JFrame {
if (
noReceiversDefined
- &&
settingsManager.getGlobalConfiguration().getBoolean("showNoReceiverWarning",
true)) {
+ && configuration.getBoolean("showNoReceiverWarning", true)) {
SwingHelper.invokeOnEDT(this::showReceiverConfigurationPanel);
}
@@ -661,10 +665,10 @@ public class LogUI extends JFrame {
* hide those tabs out of currently loaded tabs..
*/
- if
(!settingsManager.getGlobalConfiguration().getBoolean("displayWelcomeTab",
true)) {
+ if (!configuration.getBoolean("displayWelcomeTab", true)) {
displayPanel(ChainsawTabbedPane.WELCOME_TAB, false);
}
- if
(!settingsManager.getGlobalConfiguration().getBoolean("displayZeroconfTab",
true)) {
+ if (!configuration.getBoolean("displayZeroconfTab", true)) {
displayPanel(ChainsawTabbedPane.ZEROCONF, false);
}
chainsawToolBarAndMenus.stateChange();
@@ -811,7 +815,7 @@ public class LogUI extends JFrame {
// evt ->
handler.setIdentifierExpression(evt.getNewValue().toString()));
//
handler.setIdentifierExpression(applicationPreferenceModel.getIdentifierExpression());
- int tooltipDisplayMillis =
settingsManager.getGlobalConfiguration().getInt("tooltipDisplayMillis", 4000);
+ int tooltipDisplayMillis =
configuration.getInt("tooltipDisplayMillis", 4000);
// applicationPreferenceModel.addPropertyChangeListener(
// "toolTipDisplayMillis",
// evt -> ToolTipManager.sharedInstance().setDismissDelay(
@@ -845,17 +849,17 @@ public class LogUI extends JFrame {
// }
// }));
//
-
settingsManager.getGlobalConfiguration().addEventListener(ConfigurationEvent.SET_PROPERTY,
+ configuration.addEventListener(ConfigurationEvent.SET_PROPERTY,
evt -> {
if( evt.getPropertyName().equals( "statusBar" ) ){
boolean value = (Boolean) evt.getPropertyValue();
statusBar.setVisible(value);
}
});
- boolean showStatusBar =
settingsManager.getGlobalConfiguration().getBoolean("statusBar", true);
+ boolean showStatusBar = configuration.getBoolean("statusBar", true);
setStatusBarVisible(showStatusBar);
-
settingsManager.getGlobalConfiguration().addEventListener(ConfigurationEvent.SET_PROPERTY,
+ configuration.addEventListener(ConfigurationEvent.SET_PROPERTY,
evt -> {
if( evt.getPropertyName().equals( "showReceivers" ) ){
boolean value = (Boolean) evt.getPropertyValue();
@@ -866,7 +870,7 @@ public class LogUI extends JFrame {
}
}
});
- boolean showReceivers =
settingsManager.getGlobalConfiguration().getBoolean("showReceivers", false);
+ boolean showReceivers = configuration.getBoolean("showReceivers",
false);
setStatusBarVisible(showStatusBar);
if( showReceivers ){
showReceiverPanel();
@@ -892,14 +896,14 @@ public class LogUI extends JFrame {
//// }
//
//
-
settingsManager.getGlobalConfiguration().addEventListener(ConfigurationEvent.SET_PROPERTY,
+ configuration.addEventListener(ConfigurationEvent.SET_PROPERTY,
evt -> {
if( evt.getPropertyName().equals( "toolbar" ) ){
boolean value = (Boolean) evt.getPropertyValue();
toolbar.setVisible(value);
}
});
- boolean showToolbar =
settingsManager.getGlobalConfiguration().getBoolean("toolbar", true);
+ boolean showToolbar = configuration.getBoolean("toolbar", true);
toolbar.setVisible(showToolbar);
}
@@ -1088,10 +1092,10 @@ public class LogUI extends JFrame {
*/
public boolean exit() {
for(ChainsawReceiver rx : m_receivers){
- getSettingsManager().saveSettingsForReceiver(rx);
+ settingsManager.saveSettingsForReceiver(rx);
}
- getSettingsManager().saveAllSettings();
+ settingsManager.saveAllSettings();
return shutdown();
}
@@ -1118,13 +1122,13 @@ public class LogUI extends JFrame {
}
public void showApplicationPreferences() {
- applicationPreferenceModelPanel.updateModel();
+ // applicationPreferenceModelPanel.updateModel();
preferencesFrame.setVisible(true);
}
public void loadReceiver() {
Runnable r = () -> {
- JFileChooser jfc = new
JFileChooser(SettingsManager.getSettingsDirectory());
+ JFileChooser jfc = new
JFileChooser(settingsManager.getSettingsDirectory());
int returnVal = jfc.showOpenDialog(this);
if(returnVal != JFileChooser.APPROVE_OPTION) {
return;
@@ -1135,7 +1139,7 @@ public class LogUI extends JFrame {
// Create the receiver
String fileToLoad = jfc.getSelectedFile().getName();
String receiverName = fileToLoad.split( "-" )[0];
- AbstractConfiguration config =
SettingsManager.getInstance().getSettingsForReceiverTab(receiverName);
+ AbstractConfiguration config =
settingsManager.getSettingsForReceiverTab(receiverName);
String typeToLoad = config.getString("receiver.type");
ServiceLoader<ChainsawReceiverFactory> sl =
ServiceLoader.load(ChainsawReceiverFactory.class);
@@ -1143,7 +1147,7 @@ public class LogUI extends JFrame {
if(crFactory.getReceiverName().equals(typeToLoad)){
ChainsawReceiver rx = crFactory.create();
rx.setName(receiverName);
- SettingsManager.getInstance().loadSettingsForReceiver(rx);
+ settingsManager.loadSettingsForReceiver(rx);
addReceiver(rx);
rx.start();
@@ -1194,7 +1198,7 @@ public class LogUI extends JFrame {
* Shutsdown by ensuring the Appender gets a chance to close.
*/
public boolean shutdown() {
- boolean confirmExit =
settingsManager.getGlobalConfiguration().getBoolean("confirmExit", true);
+ boolean confirmExit = configuration.getBoolean("confirmExit", true);
if (confirmExit) {
if (
JOptionPane.showConfirmDialog(
@@ -1376,19 +1380,6 @@ public class LogUI extends JFrame {
return panelMap;
}
- // public Map getLevelMap() {
- // return levelMap;
- // }
-
- /**
- * DOCUMENT ME!
- *
- * @return DOCUMENT ME!
- */
- public SettingsManager getSettingsManager() {
- return settingsManager;
- }
-
/**
* DOCUMENT ME!
*
@@ -1401,7 +1392,7 @@ public class LogUI extends JFrame {
/**
* DOCUMENT ME!
*
- * @param tbms DOCUMENT ME!
+ * @param tbms DOCUMENT ME!
*/
public void setToolBarAndMenus(ChainsawToolBarAndMenus tbms) {
this.chainsawToolBarAndMenus = tbms;
@@ -1486,7 +1477,7 @@ public class LogUI extends JFrame {
private void buildLogPanel(
boolean customExpression, final String ident, final
List<ChainsawLoggingEvent> events, final ChainsawReceiver rx)
throws IllegalArgumentException {
- final LogPanel thisPanel = new LogPanel(getStatusBar(), ident,
cyclicBufferSize, allColorizers, applicationPreferenceModel,
globalRuleColorizer);
+ final LogPanel thisPanel = new LogPanel(settingsManager,
getStatusBar(), ident, cyclicBufferSize, allColorizers,
applicationPreferenceModel, globalRuleColorizer);
if( !customExpression && rx != null ){
thisPanel.setReceiver(rx);
diff --git
a/src/main/java/org/apache/log4j/chainsaw/ReceiverConfigurationPanel.java
b/src/main/java/org/apache/log4j/chainsaw/ReceiverConfigurationPanel.java
index 7c57538..a21b756 100644
--- a/src/main/java/org/apache/log4j/chainsaw/ReceiverConfigurationPanel.java
+++ b/src/main/java/org/apache/log4j/chainsaw/ReceiverConfigurationPanel.java
@@ -47,7 +47,7 @@ import org.apache.logging.log4j.Logger;
class ReceiverConfigurationPanel extends JPanel {
private final Logger logger = LogManager.getLogger();
- private final PanelModel panelModel = new PanelModel();
+ private final PanelModel panelModel;
//network receiver widgets
private JComboBox<String> networkReceiverPortComboBox;
@@ -102,10 +102,11 @@ class ReceiverConfigurationPanel extends JPanel {
//used as frame for file open dialogs
private Container dialog;
- ReceiverConfigurationPanel() {
+ ReceiverConfigurationPanel(SettingsManager settingsManager) {
setBorder(BorderFactory.createEmptyBorder(5, 15, 5, 15));
setLayout(new GridBagLayout());
+ panelModel = new PanelModel(settingsManager);
buttonGroup = new ButtonGroup();
lowerPanel = new JPanel(new BorderLayout());
@@ -647,15 +648,6 @@ class ReceiverConfigurationPanel extends JPanel {
return result;
}
- public static void main(String[] args) {
-
- JFrame frame = new JFrame();
- frame.getContentPane().add(new ReceiverConfigurationPanel());
- frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
- frame.pack();
- frame.setVisible(true);
- }
-
/**
* @return Returns the dontWarnMeAgain.
*/
@@ -680,8 +672,8 @@ class ReceiverConfigurationPanel extends JPanel {
private String lastLogFormat;
private File saveConfigFile;
- public PanelModel() {
- file = new
File(SettingsManager.getInstance().getSettingsDirectory(),
"receiver-config.xml");
+ public PanelModel(SettingsManager settingsManager) {
+ file = new File(settingsManager.getSettingsDirectory(),
"receiver-config.xml");
}
boolean isNetworkReceiverMode() {
diff --git
a/src/main/java/org/apache/log4j/chainsaw/TableColorizingRenderer.java
b/src/main/java/org/apache/log4j/chainsaw/TableColorizingRenderer.java
index 09279d4..9a1f8bb 100644
--- a/src/main/java/org/apache/log4j/chainsaw/TableColorizingRenderer.java
+++ b/src/main/java/org/apache/log4j/chainsaw/TableColorizingRenderer.java
@@ -75,6 +75,7 @@ public class TableColorizingRenderer extends
DefaultTableCellRenderer {
private final JPanel multiLinePanel = new JPanel(new BorderLayout());
private final JPanel generalPanel = new JPanel(new BorderLayout());
private final JPanel levelPanel = new JPanel(new BorderLayout());
+ private SettingsManager settingsManager;
private ApplicationPreferenceModel applicationPreferenceModel;
private JTextPane multiLineTextPane;
private MutableAttributeSet boldAttributeSet;
@@ -89,9 +90,10 @@ public class TableColorizingRenderer extends
DefaultTableCellRenderer {
/**
* Creates a new TableColorizingRenderer object.
*/
- public TableColorizingRenderer(RuleColorizer colorizer,
ApplicationPreferenceModel applicationPreferenceModel,
+ public TableColorizingRenderer(SettingsManager settingsManager,
RuleColorizer colorizer, ApplicationPreferenceModel applicationPreferenceModel,
EventContainer eventContainer,
LogPanelPreferenceModel logPanelPreferenceModel,
boolean colorizeSearch) {
+ this.settingsManager = settingsManager;
this.applicationPreferenceModel = applicationPreferenceModel;
this.logPanelPreferenceModel = logPanelPreferenceModel;
this.eventContainer = eventContainer;
@@ -404,7 +406,7 @@ public class TableColorizingRenderer extends
DefaultTableCellRenderer {
Color background;
Color foreground;
Rule loggerRule = colorizer.getLoggerRule();
- AbstractConfiguration configuration =
SettingsManager.getInstance().getGlobalConfiguration();
+ AbstractConfiguration configuration =
settingsManager.getGlobalConfiguration();
//use logger colors in table instead of event colors if event passes
logger rule
if (loggerRule != null &&
loggerRule.evaluate(loggingEventWrapper.getLoggingEvent(), null)) {
background = configuration.get(Color.class,
"searchBackgroundColor", ChainsawConstants.FIND_LOGGER_BACKGROUND);
diff --git a/src/main/java/org/apache/log4j/chainsaw/color/ColorPanel.java
b/src/main/java/org/apache/log4j/chainsaw/color/ColorPanel.java
index 8ddcbee..127dbed 100644
--- a/src/main/java/org/apache/log4j/chainsaw/color/ColorPanel.java
+++ b/src/main/java/org/apache/log4j/chainsaw/color/ColorPanel.java
@@ -82,14 +82,16 @@ public class ColorPanel extends JPanel {
private JCheckBox globalRulesCheckbox;
private final LogPanel parentLogPanel;
private JLabel rulesLabel;
+ private SettingsManager settingsManager;
- public ColorPanel(final RuleColorizer globalColorizer,
+ public ColorPanel(SettingsManager settingsManager, final RuleColorizer
globalColorizer,
final FilterModel filterModel,
final Map<String, RuleColorizer> allLogPanelColorizers,
final LogPanel parent) {
super(new BorderLayout());
+ this.settingsManager = settingsManager;
- AbstractConfiguration configuration =
SettingsManager.getInstance().getGlobalConfiguration();
+ AbstractConfiguration configuration =
settingsManager.getGlobalConfiguration();
this.filterModel = filterModel;
this.allLogPanelColorizers = allLogPanelColorizers;
@@ -227,7 +229,7 @@ public class ColorPanel extends JPanel {
Object selectedItem =
loadPanelColorizersComboBox.getSelectedItem();
if (selectedItem != null) {
RuleColorizer sourceColorizer =
allLogPanelColorizers.get(selectedItem.toString());
- RuleColorizer newColorizer = new RuleColorizer();
+ RuleColorizer newColorizer = new
RuleColorizer(settingsManager);
newColorizer.setRules(sourceColorizer.getRules());
parent.setRuleColorizer(newColorizer);
updateColors();
@@ -270,7 +272,7 @@ public class ColorPanel extends JPanel {
}
}
- AbstractConfiguration configuration =
SettingsManager.getInstance().getGlobalConfiguration();
+ AbstractConfiguration configuration =
settingsManager.getGlobalConfiguration();
//update search and alternating colors, since they may have changed
from another color panel
searchDataVectorEntry.set(0, configuration.get(Color.class,
"searchBackgroundColor", ChainsawConstants.FIND_LOGGER_BACKGROUND));
searchDataVectorEntry.set(1, configuration.get(Color.class,
"searchForegroundColor", ChainsawConstants.FIND_LOGGER_FOREGROUND));
@@ -445,7 +447,7 @@ public class ColorPanel extends JPanel {
private void saveSearchColors() {
Vector thisVector = searchTableModel.getDataVector().get(0);
- AbstractConfiguration globalConfig =
SettingsManager.getInstance().getGlobalConfiguration();
+ AbstractConfiguration globalConfig =
settingsManager.getGlobalConfiguration();
globalConfig.setProperty("searchBackgroundColor",
RuleColorizer.colorToRGBString((Color) thisVector.get(0)));
globalConfig.setProperty("searchForegroundColor",
RuleColorizer.colorToRGBString((Color) thisVector.get(1)));
}
@@ -541,7 +543,7 @@ public class ColorPanel extends JPanel {
if( globalRulesCheckbox.isSelected() ){
parentLogPanel.setRuleColorizer(globalColorizer);
}else{
- parentLogPanel.setRuleColorizer(new
RuleColorizer());
+ parentLogPanel.setRuleColorizer(new
RuleColorizer(settingsManager));
}
componentChanged();
parentLogPanel.getCurrentRuleColorizer().addPropertyChangeListener(
diff --git a/src/main/java/org/apache/log4j/chainsaw/color/RuleColorizer.java
b/src/main/java/org/apache/log4j/chainsaw/color/RuleColorizer.java
index d79bc50..e61c482 100644
--- a/src/main/java/org/apache/log4j/chainsaw/color/RuleColorizer.java
+++ b/src/main/java/org/apache/log4j/chainsaw/color/RuleColorizer.java
@@ -61,6 +61,7 @@ public class RuleColorizer implements Colorizer {
private static final String DEFAULT_WARN_EXPRESSION = "level == WARN";
private static final String DEFAULT_FATAL_ERROR_EXCEPTION_EXPRESSION =
"level == FATAL || level == ERROR || exception exists";
private static final String DEFAULT_MARKER_EXPRESSION = "prop.marker
exists";
+ private SettingsManager settingsManager;
public static List<ColorRule> defaultRules(){
List<ColorRule> rulesList = new ArrayList<>();
@@ -85,12 +86,14 @@ public class RuleColorizer implements Colorizer {
return rulesList;
}
- public RuleColorizer() {
+ public RuleColorizer(SettingsManager settingsManager) {
+ this.settingsManager = settingsManager;
this.rules = defaultRules();
isGlobal = false;
}
- public RuleColorizer(boolean isGlobal){
+ public RuleColorizer(SettingsManager settingsManager, boolean isGlobal){
+ this.settingsManager = settingsManager;
this.rules = defaultRules();
this.isGlobal = isGlobal;
}
@@ -185,7 +188,7 @@ public class RuleColorizer implements Colorizer {
}
public void setUseDefaultSettings(boolean useDefaultSettings){
- if( configuration ==
SettingsManager.getInstance().getGlobalConfiguration() ){
+ if( configuration == settingsManager.getGlobalConfiguration() ){
return;
}
diff --git
a/src/main/java/org/apache/log4j/chainsaw/components/logpanel/LogPanel.java
b/src/main/java/org/apache/log4j/chainsaw/components/logpanel/LogPanel.java
index 4e9a9e5..3f807bd 100644
--- a/src/main/java/org/apache/log4j/chainsaw/components/logpanel/LogPanel.java
+++ b/src/main/java/org/apache/log4j/chainsaw/components/logpanel/LogPanel.java
@@ -62,7 +62,6 @@ import
org.apache.commons.configuration2.AbstractConfiguration;
import org.apache.commons.configuration2.event.ConfigurationEvent;
import org.apache.log4j.chainsaw.logevents.ChainsawLoggingEvent;
import org.apache.log4j.chainsaw.logevents.Level;
-import org.apache.log4j.spi.LoggingEventFieldResolver;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -120,6 +119,7 @@ public class LogPanel extends DockablePanel implements
ChainsawEventBatchListene
private static final DateFormat TIMESTAMP_DATE_FORMAT = new
SimpleDateFormat(Constants.TIMESTAMP_RULE_FORMAT);
private static final double DEFAULT_DETAIL_SPLIT_LOCATION = 0.71d;
private static final double DEFAULT_LOG_TREE_SPLIT_LOCATION = 0.2d;
+ private SettingsManager settingsManager;
private final String identifier;
private final ChainsawStatusBar statusBar;
private final JFrame logPanelPreferencesFrame = new JFrame();
@@ -188,26 +188,29 @@ public class LogPanel extends DockablePanel implements
ChainsawEventBatchListene
* Creates a new LogPanel object. If a LogPanel with this identifier has
* been loaded previously, reload settings saved on last exit.
*
- * @param statusBar shared status bar, provided by main application
- * @param identifier used to load and save settings
+ * @param settingsManager
+ * @param statusBar shared status bar, provided by main application
+ * @param identifier used to load and save settings
*/
- public LogPanel(final ChainsawStatusBar statusBar,
- final String identifier,
- int cyclicBufferSize,
+ public LogPanel(SettingsManager settingsManager, final ChainsawStatusBar
statusBar,
+ final String identifier,
+ int cyclicBufferSize,
Map<String, RuleColorizer> allColorizers,
final ApplicationPreferenceModel
applicationPreferenceModel,
RuleColorizer globalRuleColorizer) {
+ this.settingsManager = settingsManager;
+
this.identifier = identifier;
this.statusBar = statusBar;
this.applicationPreferenceModel = applicationPreferenceModel;
- this.logPanelPreferencesPanel = new
LogPanelPreferencePanel(identifier);
+ this.logPanelPreferencesPanel = new
LogPanelPreferencePanel(settingsManager, identifier);
this.colorizer = globalRuleColorizer;
this.m_globalColorizer = globalRuleColorizer;
this.m_allColorizers = allColorizers;
logger.debug("creating logpanel for {}", identifier);
- m_configuration =
SettingsManager.getInstance().getCombinedSettingsForRecevierTab(identifier);
- AbstractConfiguration tabConfig =
SettingsManager.getInstance().getSettingsForReceiverTab(identifier);
+ m_configuration =
settingsManager.getCombinedSettingsForRecevierTab(identifier);
+ AbstractConfiguration tabConfig =
settingsManager.getSettingsForReceiverTab(identifier);
setLayout(new BorderLayout());
@@ -692,7 +695,7 @@ public class LogPanel extends DockablePanel implements
ChainsawEventBatchListene
((ImageIcon) ChainsawIcons.ICON_PREFERENCES).getImage());
allColorizers.put(identifier, colorizer);
- colorPanel = new ColorPanel(m_globalColorizer, filterModel,
allColorizers, this);
+ colorPanel = new ColorPanel(settingsManager, m_globalColorizer,
filterModel, allColorizers, this);
colorFrame.getContentPane().add(colorPanel);
@@ -848,12 +851,12 @@ public class LogPanel extends DockablePanel implements
ChainsawEventBatchListene
}
});
- renderer = new TableColorizingRenderer(colorizer,
applicationPreferenceModel, tableModel, preferenceModel, true);
+ renderer = new TableColorizingRenderer(settingsManager, colorizer,
applicationPreferenceModel, tableModel, preferenceModel, true);
renderer.setToolTipsVisible(preferenceModel.isToolTips());
table.setDefaultRenderer(Object.class, renderer);
- searchRenderer = new TableColorizingRenderer(colorizer,
applicationPreferenceModel, searchModel, preferenceModel, false);
+ searchRenderer = new TableColorizingRenderer(settingsManager,
colorizer, applicationPreferenceModel, searchModel, preferenceModel, false);
searchRenderer.setToolTipsVisible(preferenceModel.isToolTips());
searchTable.setDefaultRenderer(Object.class, searchRenderer);
@@ -1937,7 +1940,6 @@ public class LogPanel extends DockablePanel implements
ChainsawEventBatchListene
* Accessor
*
* @return identifier
- * @see EventBatchListener
*/
public String getInterestedIdentifier() {
return getIdentifier();
@@ -2027,12 +2029,12 @@ public class LogPanel extends DockablePanel implements
ChainsawEventBatchListene
}
}
- AbstractConfiguration configuration =
SettingsManager.getInstance().getSettingsForReceiverTab(identifier);
+ AbstractConfiguration configuration =
settingsManager.getSettingsForReceiverTab(identifier);
if( configuration.getBoolean( "color.rules.default", true ) ){
colorizer = m_globalColorizer;
}else{
- setRuleColorizer(new RuleColorizer());
+ setRuleColorizer(new RuleColorizer(settingsManager));
colorizer.setConfiguration(configuration);
colorizer.loadColorSettings();
}
@@ -2158,7 +2160,7 @@ public class LogPanel extends DockablePanel implements
ChainsawEventBatchListene
if( colorizer == m_globalColorizer ){
// Current colorizer is the global one, so set our new colorizer
colorizer = newRuleColor;
- AbstractConfiguration configuration =
SettingsManager.getInstance().getSettingsForReceiverTab(identifier);
+ AbstractConfiguration configuration =
settingsManager.getSettingsForReceiverTab(identifier);
colorizer.setConfiguration(configuration);
colorizer.setUseDefaultSettings(false);
@@ -2204,7 +2206,7 @@ public class LogPanel extends DockablePanel implements
ChainsawEventBatchListene
* Toggle panel preference for detail visibility on or off
*/
public void toggleDetailVisible() {
- AbstractConfiguration config =
SettingsManager.getInstance().getSettingsForReceiverTab(identifier);
+ AbstractConfiguration config =
settingsManager.getSettingsForReceiverTab(identifier);
boolean visible = config.getBoolean("logpanel.detailColumnVisible");
config.setProperty("logpanel.detailColumnVisible", !visible);
@@ -2216,7 +2218,7 @@ public class LogPanel extends DockablePanel implements
ChainsawEventBatchListene
* @return detail visibility flag
*/
public boolean isDetailVisible() {
- AbstractConfiguration config =
SettingsManager.getInstance().getSettingsForReceiverTab(identifier);
+ AbstractConfiguration config =
settingsManager.getSettingsForReceiverTab(identifier);
boolean visible = config.getBoolean("logpanel.detailColumnVisible");
return visible;
@@ -2230,7 +2232,7 @@ public class LogPanel extends DockablePanel implements
ChainsawEventBatchListene
* Toggle panel preference for logger tree visibility on or off
*/
public void toggleLogTreeVisible() {
- AbstractConfiguration config =
SettingsManager.getInstance().getSettingsForReceiverTab(identifier);
+ AbstractConfiguration config =
settingsManager.getSettingsForReceiverTab(identifier);
boolean visible = config.getBoolean("logpanel.logTreePanelVisible");
config.setProperty("logpanel.logTreePanelVisible", !visible);
@@ -2242,7 +2244,7 @@ public class LogPanel extends DockablePanel implements
ChainsawEventBatchListene
* @return logger tree visibility flag
*/
public boolean isLogTreeVisible() {
- AbstractConfiguration config =
SettingsManager.getInstance().getSettingsForReceiverTab(identifier);
+ AbstractConfiguration config =
settingsManager.getSettingsForReceiverTab(identifier);
return config.getBoolean("logpanel.logTreePanelVisible");
}
diff --git
a/src/main/java/org/apache/log4j/chainsaw/components/logpanel/LogPanelPreferencePanel.java
b/src/main/java/org/apache/log4j/chainsaw/components/logpanel/LogPanelPreferencePanel.java
index 7fdcb40..098feca 100644
---
a/src/main/java/org/apache/log4j/chainsaw/components/logpanel/LogPanelPreferencePanel.java
+++
b/src/main/java/org/apache/log4j/chainsaw/components/logpanel/LogPanelPreferencePanel.java
@@ -49,11 +49,13 @@ public class LogPanelPreferencePanel extends
AbstractPreferencePanel {
private final ModifiableListModel columnListModel = new
ModifiableListModel();
private ApplicationPreferenceModel appPreferenceModel;
+ private SettingsManager settingsManager;
private final String m_panelIdentifier;
//~ Constructors
============================================================
- public LogPanelPreferencePanel(String panelIdent) {
+ public LogPanelPreferencePanel(SettingsManager settingsManager, String
panelIdent) {
+ this.settingsManager = settingsManager;
m_panelIdentifier = panelIdent;
initComponents();
@@ -109,7 +111,7 @@ public class LogPanelPreferencePanel extends
AbstractPreferencePanel {
final JList columnList = new JList();
columnList.setVisibleRowCount(17);
- AbstractConfiguration mergedConfig =
SettingsManager.getInstance().getCombinedSettingsForRecevierTab(m_panelIdentifier);
+ AbstractConfiguration mergedConfig =
settingsManager.getCombinedSettingsForRecevierTab(m_panelIdentifier);
String[] columnsOrder = mergedConfig.getStringArray(
"table.columns.order" );
@@ -197,7 +199,7 @@ public class LogPanelPreferencePanel extends
AbstractPreferencePanel {
private void initComponents() {
setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
- AbstractConfiguration config =
SettingsManager.getInstance().getCombinedSettingsForRecevierTab(m_panelIdentifier);
+ AbstractConfiguration config =
settingsManager.getCombinedSettingsForRecevierTab(m_panelIdentifier);
JPanel dateFormatPanel = new JPanel();
@@ -445,7 +447,7 @@ public class LogPanelPreferencePanel extends
AbstractPreferencePanel {
* DOCUMENT ME!
*/
private void initPanelComponents() {
- AbstractConfiguration config =
SettingsManager.getInstance().getCombinedSettingsForRecevierTab(m_panelIdentifier);
+ AbstractConfiguration config =
settingsManager.getCombinedSettingsForRecevierTab(m_panelIdentifier);
JTextComponentFormatter.applySystemFontAndSize(clearTableExpression);
setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
@@ -485,8 +487,8 @@ public class LogPanelPreferencePanel extends
AbstractPreferencePanel {
* DOCUMENT ME!
*/
private void setupListeners() {
- Configuration config =
SettingsManager.getInstance().getCombinedSettingsForRecevierTab(m_panelIdentifier).getConfiguration(0);
- AbstractConfiguration tabConfig =
SettingsManager.getInstance().getSettingsForReceiverTab(m_panelIdentifier);
+ Configuration config =
settingsManager.getCombinedSettingsForRecevierTab(m_panelIdentifier).getConfiguration(0);
+ AbstractConfiguration tabConfig =
settingsManager.getSettingsForReceiverTab(m_panelIdentifier);
ActionListener wrapMessageListener = e ->
config.setProperty("logpanel.wrapMsg", wrapMessage.isSelected());
diff --git a/src/main/java/org/apache/log4j/chainsaw/prefs/SettingsManager.java
b/src/main/java/org/apache/log4j/chainsaw/prefs/SettingsManager.java
index a1cb3c1..421be92 100644
--- a/src/main/java/org/apache/log4j/chainsaw/prefs/SettingsManager.java
+++ b/src/main/java/org/apache/log4j/chainsaw/prefs/SettingsManager.java
@@ -16,24 +16,9 @@
*/
package org.apache.log4j.chainsaw.prefs;
-import java.beans.IntrospectionException;
-import java.beans.PropertyDescriptor;
-import javax.swing.event.EventListenerList;
-import java.io.*;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.net.URL;
-import java.net.URLEncoder;
-import java.util.EventListener;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Properties;
-import java.util.ServiceLoader;
-import java.util.logging.Level;
import org.apache.commons.configuration2.AbstractConfiguration;
import org.apache.commons.configuration2.CombinedConfiguration;
import org.apache.commons.configuration2.PropertiesConfiguration;
-import org.apache.commons.configuration2.builder.BasicConfigurationBuilder;
import org.apache.commons.configuration2.builder.FileBasedConfigurationBuilder;
import
org.apache.commons.configuration2.builder.fluent.FileBasedBuilderParameters;
import org.apache.commons.configuration2.builder.fluent.Parameters;
@@ -45,6 +30,16 @@ import org.apache.log4j.chainsaw.ChainsawReceiverFactory;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
+import java.beans.IntrospectionException;
+import java.beans.PropertyDescriptor;
+import java.io.File;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.ServiceLoader;
+
/**
* SettingManager allows components to register interest in Saving/Loading
@@ -55,7 +50,7 @@ import org.apache.logging.log4j.Logger;
*/
public final class SettingsManager {
private static final Logger logger = LogManager.getLogger();
- private static final SettingsManager instance = new SettingsManager();
+
private static final String GLOBAL_SETTINGS_FILE_NAME =
"chainsaw.settings.properties";
private class TabSettingsData{
@@ -75,7 +70,7 @@ public final class SettingsManager {
* Initialises the SettingsManager by loading the default Properties from
* a resource
*/
- private SettingsManager() {
+ public SettingsManager() {
m_tabSettings = new HashMap<>();
Parameters params = new Parameters();
File f = new File(getSettingsDirectory(), GLOBAL_SETTINGS_FILE_NAME);
@@ -133,15 +128,6 @@ public final class SettingsManager {
// }
}
- /**
- * Returns the singleton instance of the SettingsManager
- *
- * @return settings manager
- */
- public static SettingsManager getInstance() {
- return instance;
- }
-
public AbstractConfiguration getGlobalConfiguration(){
return m_configuration;
}
@@ -161,8 +147,6 @@ public final class SettingsManager {
return m_tabSettings.get( identifier ).tabSettings;
}
- PropertiesConfiguration configuration = null;
-
// Either we don't contain the key, or we got an exception.
Regardless,
// create a new configuration that we can use
FileBasedBuilderParameters params = new Parameters().fileBased();
@@ -176,7 +160,7 @@ public final class SettingsManager {
}
FileBasedConfigurationBuilder<PropertiesConfiguration> builder =
- new FileBasedConfigurationBuilder<PropertiesConfiguration>(
+ new FileBasedConfigurationBuilder<>(
PropertiesConfiguration.class)
.configure(params
.setListDelimiterHandler(new
DefaultListDelimiterHandler(','))
diff --git
a/src/main/java/org/apache/log4j/chainsaw/receivers/ReceiversPanel.java
b/src/main/java/org/apache/log4j/chainsaw/receivers/ReceiversPanel.java
index 7f1cc7c..b0f1212 100644
--- a/src/main/java/org/apache/log4j/chainsaw/receivers/ReceiversPanel.java
+++ b/src/main/java/org/apache/log4j/chainsaw/receivers/ReceiversPanel.java
@@ -86,10 +86,12 @@ public class ReceiversPanel extends JPanel implements
SettingsListener {
private final LogUI m_parent;
private final Map<Class,PropertyDescriptor[]> m_classToProperties =
new HashMap<>();
+ private SettingsManager settingsManager;
private final ChainsawStatusBar m_statusBar;
- public ReceiversPanel(LogUI parentUi, ChainsawStatusBar sb) {
+ public ReceiversPanel(SettingsManager settingsManager, LogUI parentUi,
ChainsawStatusBar sb) {
super(new BorderLayout());
+ this.settingsManager = settingsManager;
m_statusBar = sb;
m_parent = parentUi;
final ReceiversTreeModel model = new ReceiversTreeModel();
@@ -529,7 +531,7 @@ public class ReceiversPanel extends JPanel implements
SettingsListener {
*/
public void saveSettings(SaveSettingsEvent event) {
- File file = new
File(SettingsManager.getInstance().getSettingsDirectory(),
"receiver-config.xml");
+ File file = new File(settingsManager.getSettingsDirectory(),
"receiver-config.xml");
m_parent.saveReceiversToFile(file);
}
diff --git
a/src/main/java/org/apache/log4j/chainsaw/zeroconf/ZeroConfPlugin.java
b/src/main/java/org/apache/log4j/chainsaw/zeroconf/ZeroConfPlugin.java
index fc80264..3337b11 100644
--- a/src/main/java/org/apache/log4j/chainsaw/zeroconf/ZeroConfPlugin.java
+++ b/src/main/java/org/apache/log4j/chainsaw/zeroconf/ZeroConfPlugin.java
@@ -85,9 +85,11 @@ public class ZeroConfPlugin extends DockablePanel {
private static final String NEW_UDP_APPENDER_SERVICE_NAME =
"_log4j._udp.local.";
private JmDNS jmDNS;
+ private SettingsManager settingsManager;
- public ZeroConfPlugin() {
+ public ZeroConfPlugin(SettingsManager settingsManager) {
setName("Zeroconf");
+ this.settingsManager = settingsManager;
deviceTable.setRowHeight(ChainsawConstants.DEFAULT_ROW_HEIGHT);
try{
activateOptions();
@@ -107,7 +109,7 @@ public class ZeroConfPlugin extends DockablePanel {
}
private File getPreferenceFileLocation() {
- return new File(SettingsManager.getInstance().getSettingsDirectory(),
"zeroconfprefs.xml");
+ return new File(settingsManager.getSettingsDirectory(),
"zeroconfprefs.xml");
}
private void activateOptions() throws IOException {