You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by rm...@apache.org on 2022/06/20 14:45:42 UTC
[logging-chainsaw] 03/04: Toolbar/statusbar/receiver works
This is an automated email from the ASF dual-hosted git repository.
rmiddleton pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/logging-chainsaw.git
commit a473f38b26a2ad9e32c222f2fcfcdf310fb9a1db
Author: Robert Middleton <ro...@rm5248.com>
AuthorDate: Mon Jun 20 10:00:16 2022 -0400
Toolbar/statusbar/receiver works
---
.../chainsaw/ApplicationPreferenceModelPanel.java | 10 +++-
.../log4j/chainsaw/ChainsawToolBarAndMenus.java | 65 +++++++++++-----------
src/main/java/org/apache/log4j/chainsaw/LogUI.java | 57 +++++++++++++------
.../apache/log4j/chainsaw/color/RuleColorizer.java | 7 ++-
.../log4j/chainsaw/prefs/SettingsManager.java | 15 ++++-
5 files changed, 99 insertions(+), 55 deletions(-)
diff --git a/src/main/java/org/apache/log4j/chainsaw/ApplicationPreferenceModelPanel.java b/src/main/java/org/apache/log4j/chainsaw/ApplicationPreferenceModelPanel.java
index 9678a08..dc6439b 100644
--- a/src/main/java/org/apache/log4j/chainsaw/ApplicationPreferenceModelPanel.java
+++ b/src/main/java/org/apache/log4j/chainsaw/ApplicationPreferenceModelPanel.java
@@ -34,6 +34,8 @@ import java.util.Dictionary;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Locale;
+import org.apache.commons.configuration2.AbstractConfiguration;
+import org.apache.log4j.chainsaw.prefs.SettingsManager;
/**
@@ -170,19 +172,21 @@ public class ApplicationPreferenceModelPanel extends AbstractPreferencePanel {
*
*/
private void setupListeners() {
+ final AbstractConfiguration config = SettingsManager.getInstance().getGlobalConfiguration();
+
topPlacement.addActionListener(
e -> uncommittedPreferenceModel.setTabPlacement(SwingConstants.TOP));
bottomPlacement.addActionListener(
e -> uncommittedPreferenceModel.setTabPlacement(SwingConstants.BOTTOM));
statusBar.addActionListener(
- e -> uncommittedPreferenceModel.setStatusBar(statusBar.isSelected()));
+ e -> config.setProperty("statusBar",statusBar.isSelected()));
toolBar.addActionListener(
- e -> uncommittedPreferenceModel.setToolbar(toolBar.isSelected()));
+ e -> config.setProperty("toolbar",toolBar.isSelected()));
receivers.addActionListener(
- e -> uncommittedPreferenceModel.setReceivers(receivers.isSelected()));
+ e -> config.setProperty("showReceivers",receivers.isSelected()));
uncommittedPreferenceModel.addPropertyChangeListener(
"tabPlacement",
diff --git a/src/main/java/org/apache/log4j/chainsaw/ChainsawToolBarAndMenus.java b/src/main/java/org/apache/log4j/chainsaw/ChainsawToolBarAndMenus.java
index 7fbeff3..c8e3988 100644
--- a/src/main/java/org/apache/log4j/chainsaw/ChainsawToolBarAndMenus.java
+++ b/src/main/java/org/apache/log4j/chainsaw/ChainsawToolBarAndMenus.java
@@ -33,6 +33,7 @@ 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;
@@ -67,6 +68,8 @@ class ChainsawToolBarAndMenus implements ChangeListener {
private final Collection lookAndFeelMenus = new ArrayList();
private final JCheckBoxMenuItem toggleShowReceiversCheck =
new JCheckBoxMenuItem();
+ private final JCheckBoxMenuItem toggleShowToolbarCheck =
+ new JCheckBoxMenuItem();
private final JCheckBoxMenuItem toggleLogTreeMenuItem =
new JCheckBoxMenuItem();
private final JCheckBoxMenuItem toggleScrollToBottomMenuItem =
@@ -132,20 +135,22 @@ class ChainsawToolBarAndMenus implements ChangeListener {
toggleLogTreeAction, toggleScrollToBottomAction, changeModelAction,
};
-// logui.getApplicationPreferenceModel().addPropertyChangeListener(
-// "statusBar",
-// evt -> {
-// boolean value = (Boolean) evt.getNewValue();
-// toggleStatusBarCheck.setSelected(value);
-// });
-//
-// logui.getApplicationPreferenceModel().addPropertyChangeListener(
-// "receivers",
-// evt -> {
-// boolean value = (Boolean) evt.getNewValue();
-// showReceiversButton.setSelected(value);
-// toggleShowReceiversCheck.setSelected(value);
-// });
+ SettingsManager.getInstance().getGlobalConfiguration().addEventListener(ConfigurationEvent.SET_PROPERTY,
+ evt -> {
+ if( evt.getPropertyName().equals( "statusBar" ) ){
+ boolean value = (Boolean) evt.getPropertyValue();
+ toggleStatusBarCheck.setSelected(value);
+ }
+ });
+
+ SettingsManager.getInstance().getGlobalConfiguration().addEventListener(ConfigurationEvent.SET_PROPERTY,
+ evt -> {
+ if( evt.getPropertyName().equals( "showReceivers" ) ){
+ boolean value = (Boolean) evt.getPropertyValue();
+ showReceiversButton.setSelected(value);
+ toggleShowReceiversCheck.setSelected(value);
+ }
+ });
}
/**
@@ -389,16 +394,8 @@ class ChainsawToolBarAndMenus implements ChangeListener {
AbstractConfiguration configuration = SettingsManager.getInstance().getGlobalConfiguration();
- final JCheckBoxMenuItem showToolbarCheck =
- new JCheckBoxMenuItem(toggleToolbarAction);
- showToolbarCheck.setSelected(configuration.getBoolean("toolbar", true));
-
-// logui.getApplicationPreferenceModel().addPropertyChangeListener(
-// "toolbar",
-// evt -> {
-// boolean value = (Boolean) evt.getNewValue();
-// showToolbarCheck.setSelected(value);
-// });
+ toggleShowToolbarCheck.setAction(toggleToolbarAction);
+ toggleShowToolbarCheck.setSelected(configuration.getBoolean("toolbar", true));
menuShowWelcome.setAction(toggleWelcomeVisibleAction);
@@ -439,8 +436,9 @@ class ChainsawToolBarAndMenus implements ChangeListener {
final Action toggleStatusBarAction =
new AbstractAction("Show Status bar") {
public void actionPerformed(ActionEvent arg0) {
-// logui.getApplicationPreferenceModel().setStatusBar(
-// toggleStatusBarCheck.isSelected());
+ boolean isSelected = toggleStatusBarCheck.isSelected();
+ SettingsManager.getInstance().getGlobalConfiguration()
+ .setProperty("statusBar", isSelected);
}
};
@@ -478,7 +476,7 @@ class ChainsawToolBarAndMenus implements ChangeListener {
activeTabMenu.add(toggleScrollToBottomMenuItem);
activeTabMenu.add(menuItemUseRightMouse);
- viewMenu.add(showToolbarCheck);
+ viewMenu.add(toggleShowToolbarCheck);
viewMenu.add(toggleStatusBarCheck);
viewMenu.add(toggleShowReceiversCheck);
viewMenu.add(menuShowWelcome);
@@ -624,8 +622,12 @@ class ChainsawToolBarAndMenus implements ChangeListener {
final Action action =
new AbstractAction("Show Receivers") {
public void actionPerformed(ActionEvent arg0) {
-// logui.getApplicationPreferenceModel().setReceivers(
-// !logui.getApplicationPreferenceModel().isReceivers());
+ // 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);
}
};
@@ -672,8 +674,9 @@ class ChainsawToolBarAndMenus implements ChangeListener {
final Action action =
new AbstractAction("Show Toolbar") {
public void actionPerformed(ActionEvent e) {
-// logui.getApplicationPreferenceModel().setToolbar(
-// !logui.getApplicationPreferenceModel().isToolbar());
+ boolean isSelected = toggleShowToolbarCheck.isSelected();
+ SettingsManager.getInstance().getGlobalConfiguration()
+ .setProperty("toolbar", isSelected);
}
};
diff --git a/src/main/java/org/apache/log4j/chainsaw/LogUI.java b/src/main/java/org/apache/log4j/chainsaw/LogUI.java
index 1283669..2903ec2 100644
--- a/src/main/java/org/apache/log4j/chainsaw/LogUI.java
+++ b/src/main/java/org/apache/log4j/chainsaw/LogUI.java
@@ -61,6 +61,7 @@ import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
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.zeroconf.ZeroConfPlugin;
import org.apache.logging.log4j.core.LoggerContext;
@@ -523,8 +524,6 @@ public class LogUI extends JFrame {
initGUI();
loadSettings();
- initPrefModelListeners();
-
if (m_receivers.size() == 0) {
noReceiversDefined = true;
}
@@ -755,6 +754,9 @@ public class LogUI extends JFrame {
final PopupListener tabPopupListener = new PopupListener(tabPopup);
getTabbedPane().addMouseListener(tabPopupListener);
+
+ initPrefModelListeners();
+
// this.handler.addPropertyChangeListener(
// "dataRate",
// evt -> {
@@ -1013,13 +1015,34 @@ public class LogUI extends JFrame {
// }
// }));
//
-// applicationPreferenceModel.addPropertyChangeListener(
-// "statusBar",
-// evt -> {
-// boolean value = (Boolean) evt.getNewValue();
-// setStatusBarVisible(value);
-// });
-// setStatusBarVisible(applicationPreferenceModel.isStatusBar());
+ sm.getGlobalConfiguration().addEventListener(ConfigurationEvent.SET_PROPERTY,
+ evt -> {
+ if( evt.getPropertyName().equals( "statusBar" ) ){
+ boolean value = (Boolean) evt.getPropertyValue();
+ statusBar.setVisible(value);
+ }
+ });
+ boolean showStatusBar = sm.getGlobalConfiguration().getBoolean("statusBar", true);
+ setStatusBarVisible(showStatusBar);
+
+ sm.getGlobalConfiguration().addEventListener(ConfigurationEvent.SET_PROPERTY,
+ evt -> {
+ if( evt.getPropertyName().equals( "showReceivers" ) ){
+ boolean value = (Boolean) evt.getPropertyValue();
+ if( value ){
+ showReceiverPanel();
+ }else{
+ hideReceiverPanel();
+ }
+ }
+ });
+ boolean showReceivers = sm.getGlobalConfiguration().getBoolean("showReceivers", false);
+ setStatusBarVisible(showStatusBar);
+ if( showReceivers ){
+ showReceiverPanel();
+ }else{
+ hideReceiverPanel();
+ }
//
// applicationPreferenceModel.addPropertyChangeListener(
// "receivers",
@@ -1039,12 +1062,13 @@ public class LogUI extends JFrame {
//// }
//
//
-// applicationPreferenceModel.addPropertyChangeListener(
-// "toolbar",
-// evt -> {
-// boolean value = (Boolean) evt.getNewValue();
-// toolbar.setVisible(value);
-// });
+ sm.getGlobalConfiguration().addEventListener(ConfigurationEvent.SET_PROPERTY,
+ evt -> {
+ if( evt.getPropertyName().equals( "toolbar" ) ){
+ boolean value = (Boolean) evt.getPropertyValue();
+ toolbar.setVisible(value);
+ }
+ });
boolean showToolbar = sm.getGlobalConfiguration().getBoolean("toolbar", true);
toolbar.setVisible(showToolbar);
@@ -1310,7 +1334,8 @@ public class LogUI extends JFrame {
* Shutsdown by ensuring the Appender gets a chance to close.
*/
public boolean shutdown() {
- if (getApplicationPreferenceModel().isConfirmExit()) {
+ boolean confirmExit = sm.getGlobalConfiguration().getBoolean("confirmExit", true);
+ if (confirmExit) {
if (
JOptionPane.showConfirmDialog(
LogUI.this, "Are you sure you want to exit Chainsaw?",
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 cf982ec..4965cdc 100644
--- a/src/main/java/org/apache/log4j/chainsaw/color/RuleColorizer.java
+++ b/src/main/java/org/apache/log4j/chainsaw/color/RuleColorizer.java
@@ -243,9 +243,10 @@ public class RuleColorizer implements Colorizer {
public void loadColorSettings(AbstractConfiguration configuration) {
// When we save/load the rule, we really need to load a map of rules
- // There's no real good way to do this, so we will do this the somewhat Qt-ish
- // way and have a key that first tells us how many entries we need to read,
- // and read the entries based off of their number
+ // There's no real good way to do this, so we will do this the somewhat
+ // dumb way and just load up to 32 color rules, since that seems like
+ // a good number
+// configuration.get
// configuration.getInt( "colors.", 0)
// if (!doLoadColorSettings(name)) {
// doLoadColorSettings(ChainsawConstants.DEFAULT_COLOR_RULE_NAME);
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 a4a6357..c844ade 100644
--- a/src/main/java/org/apache/log4j/chainsaw/prefs/SettingsManager.java
+++ b/src/main/java/org/apache/log4j/chainsaw/prefs/SettingsManager.java
@@ -42,9 +42,9 @@ import org.apache.logging.log4j.Logger;
* @author Scott Deboy <sdeboy@apache.org>
*/
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 static final Logger logger = LogManager.getLogger();
private PropertiesConfiguration m_configuration;
private FileBasedConfigurationBuilder<PropertiesConfiguration> m_builder;
@@ -78,8 +78,19 @@ public final class SettingsManager {
try{
PropertiesConfiguration config = m_builder.getConfiguration();
m_configuration = config;
+ return;
+ }catch( ConfigurationException ex ){
+ }
+
+ // If we get here, it is likely that we have not opened the file.
+ // Force a save to create the file
+ try{
+ m_builder.save();
+ PropertiesConfiguration config = m_builder.getConfiguration();
+ m_configuration = config;
+ return;
}catch( ConfigurationException ex ){
- logger.error( "Can't load properties??" );
+ ex.printStackTrace();
}
}