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
The following commit(s) were added to refs/heads/master by this push:
new 573d37e Column names and orders seem to be correct now
573d37e is described below
commit 573d37e4da6c37faeee8b613cd5e21dc9975e57f
Author: Robert Middleton <[email protected]>
AuthorDate: Fri Jul 8 22:16:39 2022 -0400
Column names and orders seem to be correct now
---
.../chainsaw/ChainsawCyclicBufferTableModel.java | 52 +++-
.../java/org/apache/log4j/chainsaw/LogPanel.java | 322 +++++++++++++--------
2 files changed, 241 insertions(+), 133 deletions(-)
diff --git
a/src/main/java/org/apache/log4j/chainsaw/ChainsawCyclicBufferTableModel.java
b/src/main/java/org/apache/log4j/chainsaw/ChainsawCyclicBufferTableModel.java
index 5c84ea6..6bb5dea 100644
---
a/src/main/java/org/apache/log4j/chainsaw/ChainsawCyclicBufferTableModel.java
+++
b/src/main/java/org/apache/log4j/chainsaw/ChainsawCyclicBufferTableModel.java
@@ -52,14 +52,13 @@ import
org.apache.log4j.chainsaw.logevents.ChainsawLoggingEvent;
class ChainsawCyclicBufferTableModel extends AbstractTableModel
implements EventContainer, PropertyChangeListener {
- private static final int DEFAULT_CAPACITY = 5000;
//cyclic field used internally in this class, but not exposed via the
eventcontainer
private boolean cyclic = true;
- private int cyclicBufferSize;
+ private final int cyclicBufferSize;
//original list of LoggingEventWrapper instances
- List unfilteredList;
+ private List unfilteredList;
//filtered list of LoggingEventWrapper instances
- List filteredList;
+ private List filteredList;
private boolean currentSortAscending;
private int currentSortColumn;
private final EventListenerList eventListenerList = new
EventListenerList();
@@ -74,7 +73,7 @@ class ChainsawCyclicBufferTableModel extends
AbstractTableModel
//because we may be using a cyclic buffer, if an ID is not provided in the
property,
//use and increment this row counter as the ID for each received row
- int uniqueRow;
+ private int uniqueRow;
private final Set uniquePropertyKeys = new HashSet();
private Rule ruleMediator;
private final PropertyChangeSupport propertySupport = new
PropertyChangeSupport(this);
@@ -94,6 +93,7 @@ class ChainsawCyclicBufferTableModel extends
AbstractTableModel
/* (non-Javadoc)
* @see
java.beans.PropertyChangeListener#propertyChange(java.beans.PropertyChangeEvent)
*/
+ @Override
public void propertyChange(PropertyChangeEvent evt) {
if (evt.getSource() instanceof Rule) {
if (evt.getSource() == ruleMediator &&
evt.getPropertyName().equals("findRule")) {
@@ -107,6 +107,7 @@ class ChainsawCyclicBufferTableModel extends
AbstractTableModel
}
}
+ @Override
public List<LoggingEventWrapper> getMatchingEvents(Rule rule) {
List<LoggingEventWrapper> list = new ArrayList<>();
List unfilteredCopy;
@@ -125,6 +126,7 @@ class ChainsawCyclicBufferTableModel extends
AbstractTableModel
return list;
}
+ @Override
public void reFilter() {
final int previousSize;
final int newSize;
@@ -187,6 +189,7 @@ class ChainsawCyclicBufferTableModel extends
AbstractTableModel
});
}
+ @Override
public int locate(Rule rule, int startLocation, boolean searchForward) {
List filteredListCopy;
synchronized (mutex) {
@@ -224,6 +227,7 @@ class ChainsawCyclicBufferTableModel extends
AbstractTableModel
/**
* @param l
*/
+ @Override
public void removeLoggerNameListener(LoggerNameListener l) {
loggerNameModelDelegate.removeLoggerNameListener(l);
}
@@ -232,16 +236,19 @@ class ChainsawCyclicBufferTableModel extends
AbstractTableModel
* @param loggerName
* @return
*/
+ @Override
public boolean addLoggerName(String loggerName) {
return loggerNameModelDelegate.addLoggerName(loggerName);
}
+ @Override
public String toString() {
return "ChainsawCyclicBufferTableModel{" +
"name='" + tableModelName + '\'' +
'}';
}
+ @Override
public void reset() {
loggerNameModelDelegate.reset();
}
@@ -249,6 +256,7 @@ class ChainsawCyclicBufferTableModel extends
AbstractTableModel
/**
* @param l
*/
+ @Override
public void addLoggerNameListener(LoggerNameListener l) {
loggerNameModelDelegate.addLoggerNameListener(l);
}
@@ -256,18 +264,22 @@ class ChainsawCyclicBufferTableModel extends
AbstractTableModel
/**
* @return
*/
+ @Override
public Collection getLoggerNames() {
return loggerNameModelDelegate.getLoggerNames();
}
+ @Override
public void addEventCountListener(EventCountListener listener) {
eventListenerList.add(EventCountListener.class, listener);
}
+ @Override
public boolean isSortable(int col) {
return true;
}
+ @Override
public void notifyCountListeners() {
EventCountListener[] listeners =
eventListenerList.getListeners(EventCountListener.class);
@@ -290,6 +302,7 @@ class ChainsawCyclicBufferTableModel extends
AbstractTableModel
* <p>
* In any case, the model ensures the Filtered list is made up to date in
a separate thread.
*/
+ @Override
public void setRuleMediator(RuleMediator ruleMediator) {
if (this.ruleMediator != null) {
this.ruleMediator.removePropertyChangeListener(this);
@@ -306,6 +319,7 @@ class ChainsawCyclicBufferTableModel extends
AbstractTableModel
/* (non-Javadoc)
* @see org.apache.log4j.chainsaw.EventContainer#sort()
*/
+ @Override
public void sort() {
boolean sort;
final int filteredListSize;
@@ -331,10 +345,12 @@ class ChainsawCyclicBufferTableModel extends
AbstractTableModel
}
}
+ @Override
public boolean isSortEnabled() {
return sortEnabled;
}
+ @Override
public void sortColumn(int col, boolean ascending) {
logger.debug("request to sort col=" + col);
currentSortAscending = ascending;
@@ -346,6 +362,7 @@ class ChainsawCyclicBufferTableModel extends
AbstractTableModel
/* (non-Javadoc)
* @see org.apache.log4j.chainsaw.EventContainer#clear()
*/
+ @Override
public void clearModel() {
reachedCapacity = false;
@@ -361,13 +378,14 @@ class ChainsawCyclicBufferTableModel extends
AbstractTableModel
loggerNameModelDelegate.reset();
}
+ @Override
public List getAllEvents() {
synchronized (mutex) {
return new ArrayList(unfilteredList);
}
}
-
+ @Override
public List getFilteredEvents() {
synchronized (mutex) {
@@ -375,12 +393,14 @@ class ChainsawCyclicBufferTableModel extends
AbstractTableModel
}
}
+ @Override
public int getRowIndex(LoggingEventWrapper loggingEventWrapper) {
synchronized (mutex) {
return filteredList.indexOf(loggingEventWrapper);
}
}
+ @Override
public void removePropertyFromEvents(String propName) {
//first remove the event from any displayed events, so we can fire row
updated event
List filteredListCopy;
@@ -403,6 +423,7 @@ class ChainsawCyclicBufferTableModel extends
AbstractTableModel
}
}
+ @Override
public int updateEventsWithFindRule(Rule findRule) {
int count = 0;
List unfilteredListCopy;
@@ -420,6 +441,7 @@ class ChainsawCyclicBufferTableModel extends
AbstractTableModel
return count;
}
+ @Override
public int findColoredRow(int startLocation, boolean searchForward) {
List filteredListCopy;
synchronized (mutex) {
@@ -462,6 +484,7 @@ class ChainsawCyclicBufferTableModel extends
AbstractTableModel
return -1;
}
+ @Override
public int getSearchMatchCount() {
int searchMatchCount = 0;
synchronized (mutex) {
@@ -475,14 +498,17 @@ class ChainsawCyclicBufferTableModel extends
AbstractTableModel
return searchMatchCount;
}
+ @Override
public int getColumnCount() {
return columnNames.size();
}
+ @Override
public String getColumnName(int column) {
return columnNames.get(column);
}
+ @Override
public LoggingEventWrapper getRow(int row) {
synchronized (mutex) {
if (row < filteredList.size() && row > -1) {
@@ -493,12 +519,14 @@ class ChainsawCyclicBufferTableModel extends
AbstractTableModel
return null;
}
+ @Override
public int getRowCount() {
synchronized (mutex) {
return filteredList.size();
}
}
+ @Override
public Object getValueAt(int rowIndex, int columnIndex) {
ChainsawLoggingEvent event = null;
@@ -586,6 +614,7 @@ class ChainsawCyclicBufferTableModel extends
AbstractTableModel
return "";
}
+ @Override
public boolean isAddRow(LoggingEventWrapper loggingEventWrapper) {
Object id =
loggingEventWrapper.getLoggingEvent().getProperty(Constants.LOG4J_ID_KEY);
@@ -672,6 +701,7 @@ class ChainsawCyclicBufferTableModel extends
AbstractTableModel
}
}
+ @Override
public void fireTableEvent(final int begin, final int end, final int
count) {
SwingHelper.invokeOnEDT(() -> {
if (cyclic) {
@@ -695,6 +725,7 @@ class ChainsawCyclicBufferTableModel extends
AbstractTableModel
});
}
+ @Override
public void fireRowUpdated(int row, boolean checkForNewColumns) {
LoggingEventWrapper loggingEventWrapper = getRow(row);
if (loggingEventWrapper != null) {
@@ -727,6 +758,7 @@ class ChainsawCyclicBufferTableModel extends
AbstractTableModel
/**
* @return
*/
+ @Override
public int getMaxSize() {
return cyclicBufferSize;
}
@@ -734,6 +766,7 @@ class ChainsawCyclicBufferTableModel extends
AbstractTableModel
/* (non-Javadoc)
* @see
org.apache.log4j.chainsaw.EventContainer#addNewKeyListener(org.apache.log4j.chainsaw.NewKeyListener)
*/
+ @Override
public void addNewKeyListener(NewKeyListener l) {
eventListenerList.add(NewKeyListener.class, l);
}
@@ -741,6 +774,7 @@ class ChainsawCyclicBufferTableModel extends
AbstractTableModel
/* (non-Javadoc)
* @see
org.apache.log4j.chainsaw.EventContainer#removeNewKeyListener(org.apache.log4j.chainsaw.NewKeyListener)
*/
+ @Override
public void removeNewKeyListener(NewKeyListener l) {
eventListenerList.remove(NewKeyListener.class, l);
}
@@ -748,6 +782,7 @@ class ChainsawCyclicBufferTableModel extends
AbstractTableModel
/* (non-Javadoc)
* @see javax.swing.table.TableModel#isCellEditable(int, int)
*/
+ @Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
if
(getColumnName(columnIndex).equalsIgnoreCase(ChainsawConstants.LOG4J_MARKER_COL_NAME_LOWERCASE))
{
return true;
@@ -760,6 +795,7 @@ class ChainsawCyclicBufferTableModel extends
AbstractTableModel
/* (non-Javadoc)
* @see org.apache.log4j.chainsaw.EventContainer#setCyclic(boolean)
*/
+ @Override
public void setCyclic(final boolean cyclic) {
if (this.cyclic == cyclic) {
return;
@@ -773,6 +809,7 @@ class ChainsawCyclicBufferTableModel extends
AbstractTableModel
/* (non-Javadoc)
* @see
org.apache.log4j.chainsaw.EventContainer#addPropertyChangeListener(java.beans.PropertyChangeListener)
*/
+ @Override
public void addPropertyChangeListener(PropertyChangeListener l) {
propertySupport.addPropertyChangeListener(l);
}
@@ -780,6 +817,7 @@ class ChainsawCyclicBufferTableModel extends
AbstractTableModel
/* (non-Javadoc)
* @see
org.apache.log4j.chainsaw.EventContainer#addPropertyChangeListener(java.lang.String,
java.beans.PropertyChangeListener)
*/
+ @Override
public void addPropertyChangeListener(
String propertyName, PropertyChangeListener l) {
propertySupport.addPropertyChangeListener(propertyName, l);
@@ -788,6 +826,7 @@ class ChainsawCyclicBufferTableModel extends
AbstractTableModel
/* (non-Javadoc)
* @see org.apache.log4j.chainsaw.EventContainer#size()
*/
+ @Override
public int size() {
synchronized (mutex) {
return unfilteredList.size();
@@ -798,6 +837,7 @@ class ChainsawCyclicBufferTableModel extends
AbstractTableModel
/* (non-Javadoc)
* @see
java.beans.PropertyChangeListener#propertyChange(java.beans.PropertyChangeEvent)
*/
+ @Override
public void propertyChange(PropertyChangeEvent arg0) {
Thread thread =
new Thread(
diff --git a/src/main/java/org/apache/log4j/chainsaw/LogPanel.java
b/src/main/java/org/apache/log4j/chainsaw/LogPanel.java
index 13d3d05..3b4c28b 100644
--- a/src/main/java/org/apache/log4j/chainsaw/LogPanel.java
+++ b/src/main/java/org/apache/log4j/chainsaw/LogPanel.java
@@ -60,6 +60,7 @@ import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.List;
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;
@@ -181,6 +182,7 @@ public class LogPanel extends DockablePanel implements
ChainsawEventBatchListene
private EventTimeDeltaMatchThumbnail eventTimeDeltaMatchThumbnail;
private boolean isDetailPanelVisible;
private ChainsawReceiver m_receiver;
+ private AbstractConfiguration m_configuration;
/**
* Creates a new LogPanel object. If a LogPanel with this identifier has
@@ -200,6 +202,8 @@ public class LogPanel extends DockablePanel implements
ChainsawEventBatchListene
this.logPanelPreferencesPanel = new
LogPanelPreferencePanel(preferenceModel, applicationPreferenceModel);
logger.debug("creating logpanel for {}", identifier);
+ m_configuration =
SettingsManager.getInstance().getSettingsForReceiverTab(identifier);
+
setLayout(new BorderLayout());
String prototypeValue = "1231231231231231231231";
@@ -279,12 +283,13 @@ public class LogPanel extends DockablePanel implements
ChainsawEventBatchListene
undockedFrame.setSize(new Dimension(1024, 768));
undockedFrame.pack();
- preferenceModel.addPropertyChangeListener(
- "scrollToBottom",
+ m_configuration.addEventListener(ConfigurationEvent.SET_PROPERTY,
evt -> {
- boolean value = (Boolean) evt.getNewValue();
- if (value) {
- scrollToBottom();
+ if( evt.getPropertyName().equals( "scrollToBottom" ) ){
+ boolean value = (Boolean) evt.getPropertyValue();
+ if (value) {
+ scrollToBottom();
+ }
}
});
/*
@@ -300,14 +305,14 @@ public class LogPanel extends DockablePanel implements
ChainsawEventBatchListene
new JRadioButtonMenuItem(
new AbstractAction("Use ISO8601Format") {
public void actionPerformed(ActionEvent e) {
- preferenceModel.setDateFormatPattern("ISO8601");
+// preferenceModel.setDateFormatPattern("ISO8601");
}
});
final JRadioButtonMenuItem simpleTimeButton =
new JRadioButtonMenuItem(
new AbstractAction("Use simple time") {
public void actionPerformed(ActionEvent e) {
- preferenceModel.setDateFormatPattern("HH:mm:ss");
+// preferenceModel.setDateFormatPattern("HH:mm:ss");
}
});
@@ -321,102 +326,130 @@ public class LogPanel extends DockablePanel implements
ChainsawEventBatchListene
final JCheckBoxMenuItem menuItemLoggerTree =
new JCheckBoxMenuItem("Show Logger Tree");
menuItemLoggerTree.addActionListener(
- e -> preferenceModel.setLogTreePanelVisible(
- menuItemLoggerTree.isSelected()));
+ e -> { m_configuration.setProperty("logpanel.logTreePanelVisible",
+ menuItemLoggerTree.isSelected());});
menuItemLoggerTree.setIcon(new ImageIcon(ChainsawIcons.WINDOW_ICON));
final JCheckBoxMenuItem menuItemToggleDetails =
new JCheckBoxMenuItem("Show Detail Pane");
menuItemToggleDetails.addActionListener(
- e -> preferenceModel.setDetailPaneVisible(
- menuItemToggleDetails.isSelected()));
+ e -> { m_configuration.setProperty("logpanel.detailColumnVisible",
+ menuItemToggleDetails.isSelected());});
menuItemToggleDetails.setIcon(new ImageIcon(ChainsawIcons.INFO));
/*
* add preferencemodel listeners
*/
- preferenceModel.addPropertyChangeListener("levelIcons",
- new PropertyChangeListener() {
- public void propertyChange(PropertyChangeEvent evt) {
- boolean useIcons = (Boolean) evt.getNewValue();
- renderer.setLevelUseIcons(useIcons);
- table.tableChanged(new TableModelEvent(tableModel));
- searchRenderer.setLevelUseIcons(useIcons);
- searchTable.tableChanged(new TableModelEvent(searchModel));
- }
- });
+// preferenceModel.addPropertyChangeListener("levelIcons",
+// new PropertyChangeListener() {
+// public void propertyChange(PropertyChangeEvent evt) {
+// boolean useIcons = (Boolean) evt.getNewValue();
+// renderer.setLevelUseIcons(useIcons);
+// table.tableChanged(new TableModelEvent(tableModel));
+// searchRenderer.setLevelUseIcons(useIcons);
+// searchTable.tableChanged(new
TableModelEvent(searchModel));
+// }
+// });
/*
* add preferencemodel listeners
*/
- preferenceModel.addPropertyChangeListener("wrapMessage",
- new PropertyChangeListener() {
- public void propertyChange(PropertyChangeEvent evt) {
- boolean wrap = (Boolean) evt.getNewValue();
- renderer.setWrapMessage(wrap);
- table.tableChanged(new TableModelEvent(tableModel));
- searchRenderer.setWrapMessage(wrap);
- searchTable.tableChanged(new TableModelEvent(searchModel));
+ m_configuration.addEventListener(ConfigurationEvent.SET_PROPERTY,
+ new
org.apache.commons.configuration2.event.EventListener<ConfigurationEvent>(){
+ @Override
+ public void onEvent(ConfigurationEvent evt) {
+ if( evt.getPropertyName().equals( "logpanel.wrapMessage" )
){
+ boolean wrap = (Boolean) evt.getPropertyValue();
+ renderer.setWrapMessage(wrap);
+ table.tableChanged(new TableModelEvent(tableModel));
+ searchRenderer.setWrapMessage(wrap);
+ searchTable.tableChanged(new
TableModelEvent(searchModel));
+ }
}
- });
- preferenceModel.addPropertyChangeListener("searchResultsVisible",
- evt -> {
- boolean displaySearchResultsInDetailsIfAvailable = (Boolean)
evt.getNewValue();
- if (displaySearchResultsInDetailsIfAvailable) {
- showSearchResults();
- } else {
- hideSearchResults();
+ } );
+
+ m_configuration.addEventListener(ConfigurationEvent.SET_PROPERTY,
+ new
org.apache.commons.configuration2.event.EventListener<ConfigurationEvent>(){
+ @Override
+ public void onEvent(ConfigurationEvent evt) {
+ if( evt.getPropertyName().equals(
"logpanel.searchResultsVisible" ) ){
+ boolean displaySearchResultsInDetailsIfAvailable =
(Boolean) evt.getPropertyValue();
+ if (displaySearchResultsInDetailsIfAvailable) {
+ showSearchResults();
+ } else {
+ hideSearchResults();
+ }
+ }
}
- });
- preferenceModel.addPropertyChangeListener("highlightSearchMatchText",
- new PropertyChangeListener() {
- public void propertyChange(PropertyChangeEvent evt) {
- boolean highlightText = (Boolean) evt.getNewValue();
- renderer.setHighlightSearchMatchText(highlightText);
- table.tableChanged(new TableModelEvent(tableModel));
- searchRenderer.setHighlightSearchMatchText(highlightText);
- searchTable.tableChanged(new TableModelEvent(searchModel));
+ } );
+
+ m_configuration.addEventListener(ConfigurationEvent.SET_PROPERTY,
+ new
org.apache.commons.configuration2.event.EventListener<ConfigurationEvent>(){
+ @Override
+ public void onEvent(ConfigurationEvent evt) {
+ if( evt.getPropertyName().equals(
"logpanel.highlightSearchMatchText" ) ){
+ boolean highlightText = (Boolean)
evt.getPropertyValue();
+ renderer.setHighlightSearchMatchText(highlightText);
+ table.tableChanged(new TableModelEvent(tableModel));
+
searchRenderer.setHighlightSearchMatchText(highlightText);
+ searchTable.tableChanged(new
TableModelEvent(searchModel));
+ }
}
- });
- preferenceModel.addPropertyChangeListener(
- "detailPaneVisible",
- evt -> {
- boolean detailPaneVisible = (Boolean) evt.getNewValue();
+ } );
- if (detailPaneVisible) {
- showDetailPane();
- } else {
- //don't hide the detail pane if search results are being
displayed
- if (!searchResultsDisplayed) {
- hideDetailPane();
+ m_configuration.addEventListener(ConfigurationEvent.SET_PROPERTY,
+ new
org.apache.commons.configuration2.event.EventListener<ConfigurationEvent>(){
+ @Override
+ public void onEvent(ConfigurationEvent evt) {
+ if( evt.getPropertyName().equals(
"logpanel.detailPaneVisible" ) ){
+ boolean detailPaneVisible = (Boolean)
evt.getPropertyValue();
+ if (detailPaneVisible) {
+ showDetailPane();
+ } else {
+ //don't hide the detail pane if search results are
being displayed
+ if (!searchResultsDisplayed) {
+ hideDetailPane();
+ }
+ }
}
}
- });
- preferenceModel.addPropertyChangeListener(
- "logTreePanelVisible",
- evt -> {
- boolean newValue = (Boolean) evt.getNewValue();
+ } );
- if (newValue) {
- showLogTreePanel();
- } else {
- hideLogTreePanel();
+ m_configuration.addEventListener(ConfigurationEvent.SET_PROPERTY,
+ new
org.apache.commons.configuration2.event.EventListener<ConfigurationEvent>(){
+ @Override
+ public void onEvent(ConfigurationEvent evt) {
+ if( evt.getPropertyName().equals(
"logpanel.logTreePanelVisible" ) ){
+ boolean newValue = (Boolean) evt.getPropertyValue();
+ if (newValue) {
+ showLogTreePanel();
+ } else {
+ hideLogTreePanel();
+ }
+ }
}
- });
- preferenceModel.addPropertyChangeListener("toolTips",
- new PropertyChangeListener() {
- public void propertyChange(PropertyChangeEvent evt) {
- boolean toolTips = (Boolean) evt.getNewValue();
- renderer.setToolTipsVisible(toolTips);
- searchRenderer.setToolTipsVisible(toolTips);
+ } );
+
+ m_configuration.addEventListener(ConfigurationEvent.SET_PROPERTY,
+ new
org.apache.commons.configuration2.event.EventListener<ConfigurationEvent>(){
+ @Override
+ public void onEvent(ConfigurationEvent evt) {
+ if( evt.getPropertyName().equals( "logpanel.toolTips" ) ){
+ boolean toolTips = (Boolean) evt.getPropertyValue();
+ renderer.setToolTipsVisible(toolTips);
+ searchRenderer.setToolTipsVisible(toolTips);
+ searchToggleToolTips.setSelected(toolTips);
+ mainToggleToolTips.setSelected(toolTips);
+ }
}
- });
+
+ } );
preferenceModel.addPropertyChangeListener("visibleColumns",
new PropertyChangeListener() {
@@ -483,50 +516,51 @@ public class LogPanel extends DockablePanel implements
ChainsawEventBatchListene
preferenceModel.addPropertyChangeListener("dateFormatPattern",
datePrefsChangeListener);
preferenceModel.addPropertyChangeListener("dateFormatTimeZone",
datePrefsChangeListener);
- preferenceModel.addPropertyChangeListener("clearTableExpression", evt
-> {
- LogPanelPreferenceModel model = (LogPanelPreferenceModel)
evt.getSource();
- String expression = model.getClearTableExpression();
- try {
- clearTableExpressionRule = ExpressionRule.getRule(expression);
- logger.info("clearTableExpressionRule set to: " + expression);
- } catch (Exception e) {
- logger.info("clearTableExpressionRule invalid - ignoring: " +
expression);
- clearTableExpressionRule = null;
- }
- });
-
- preferenceModel.addPropertyChangeListener("loggerPrecision",
- new PropertyChangeListener() {
- public void propertyChange(PropertyChangeEvent evt) {
+ m_configuration.addEventListener(ConfigurationEvent.SET_PROPERTY,
+ evt -> {
+ if( evt.getPropertyName().equals(
"logpanel.clearTableExpression" ) ){
LogPanelPreferenceModel model = (LogPanelPreferenceModel)
evt.getSource();
-
- renderer.setLoggerPrecision(model.getLoggerPrecision());
- table.tableChanged(new TableModelEvent(tableModel));
-
-
searchRenderer.setLoggerPrecision(model.getLoggerPrecision());
- searchTable.tableChanged(new TableModelEvent(searchModel));
+ String expression = model.getClearTableExpression();
+ try {
+ clearTableExpressionRule =
ExpressionRule.getRule(expression);
+ logger.info("clearTableExpressionRule set to: " +
expression);
+ } catch (Exception e) {
+ logger.info("clearTableExpressionRule invalid -
ignoring: " + expression);
+ clearTableExpressionRule = null;
+ }
}
});
- preferenceModel.addPropertyChangeListener("toolTips",
- evt -> {
- boolean value = (Boolean) evt.getNewValue();
- searchToggleToolTips.setSelected(value);
- mainToggleToolTips.setSelected(value);
+ m_configuration.addEventListener(ConfigurationEvent.SET_PROPERTY,
+ new
org.apache.commons.configuration2.event.EventListener<ConfigurationEvent>(){
+ @Override
+ public void onEvent(ConfigurationEvent evt) {
+ if( evt.getPropertyName().equals(
"logpanel.loggerPrecision" ) ){
+ LogPanelPreferenceModel model =
(LogPanelPreferenceModel) evt.getSource();
+
+
renderer.setLoggerPrecision(model.getLoggerPrecision());
+ table.tableChanged(new TableModelEvent(tableModel));
+
+
searchRenderer.setLoggerPrecision(model.getLoggerPrecision());
+ searchTable.tableChanged(new
TableModelEvent(searchModel));
+ }
+ }
});
- preferenceModel.addPropertyChangeListener(
- "logTreePanelVisible",
+ m_configuration.addEventListener(ConfigurationEvent.SET_PROPERTY,
evt -> {
- boolean value = (Boolean) evt.getNewValue();
- menuItemLoggerTree.setSelected(value);
+ if(
evt.getPropertyName().equals("logpanel.logTreePanelVisible") ){
+ boolean value = (Boolean) evt.getPropertyValue();
+ menuItemLoggerTree.setSelected(value);
+ }
});
- preferenceModel.addPropertyChangeListener(
- "detailPaneVisible",
+ m_configuration.addEventListener(ConfigurationEvent.SET_PROPERTY,
evt -> {
- boolean value = (Boolean) evt.getNewValue();
- menuItemToggleDetails.setSelected(value);
+ if( evt.getPropertyName().equals("logpanel.detailPaneVisible")
){
+ boolean value = (Boolean) evt.getPropertyValue();
+ menuItemToggleDetails.setSelected(value);
+ }
});
// applicationPreferenceModel.addPropertyChangeListener("searchColor",
new PropertyChangeListener() {
@@ -1952,7 +1986,7 @@ public class LogPanel extends DockablePanel implements
ChainsawEventBatchListene
private void loadSettings() {
logger.info( "Loading settings for panel with identifier {}",
identifier );
- AbstractConfiguration config =
SettingsManager.getInstance().getSettingsForReceiverTab(identifier);
+ AbstractConfiguration config = m_configuration;
Iterator<String> iter = config.getKeys();
while( iter.hasNext() ){
logger.debug( "Key: {}", iter.next() );
@@ -1969,14 +2003,44 @@ public class LogPanel extends DockablePanel implements
ChainsawEventBatchListene
String[] columnsOrder = config.getStringArray( "table.columns.order" );
Integer[] columnWidths = (Integer[])config.getArray(Integer.class,
"table.columns.widths" );
- TableColumnModel columnModel = table.getColumnModel();
+ List<TableColumn> columns = new ArrayList<>();
for( int index = 0; index < columnsOrder.length; index++ ){
- logger.debug( "Loading column {}", columnsOrder[index] );
- TableColumn column = new TableColumn(index);
- column.setHeaderValue(columnsOrder[index]);
- preferenceModel.addColumn(column);
- preferenceModel.setColumnVisible(columnsOrder[index], true);
+ int columnIndex = 0;
+ for( String s : ChainsawColumns.getColumnsNames() ){
+ if( s.equals( columnsOrder[index] ) ){
+ logger.debug( "Loading column {}. Index of data: {}",
columnsOrder[index], columnIndex );
+ TableColumn column = new TableColumn(columnIndex);
+ column.setHeaderValue(columnsOrder[index]);
+ column.setPreferredWidth(columnWidths[index]);
+ columns.add(column);
+ break;
+ }
+ columnIndex++;
+ }
+
+// preferenceModel.addColumn(column);
+// preferenceModel.setColumnVisible(columnsOrder[index], true);
}
+ TableColumnModel columnModel = table.getColumnModel();
+ //remove previous columns
+ while (columnModel.getColumnCount() > 0) {
+ columnModel.removeColumn(columnModel.getColumn(0));
+ }
+ //add columns in order
+ for (TableColumn col : columns) {
+ columnModel.addColumn(col);
+ }
+
+// TableColumnModel searchColumnModel = searchTable.getColumnModel();
+// //remove previous columns
+// while (searchColumnModel.getColumnCount() > 0) {
+// searchColumnModel.removeColumn(searchColumnModel.getColumn(0));
+// }
+// //add visible column order columns
+// for (Object o : preferenceModel.getVisibleColumnOrder()) {
+// TableColumn col = (TableColumn) o;
+// searchColumnModel.addColumn(col);
+// }
boolean isCyclic = config.getBoolean( "logpanel.cyclic" );
tableModel.setCyclic( isCyclic );
@@ -2236,8 +2300,10 @@ public class LogPanel extends DockablePanel implements
ChainsawEventBatchListene
* Toggle panel preference for logger tree visibility on or off
*/
void toggleLogTreeVisible() {
- preferenceModel.setLogTreePanelVisible(
- !preferenceModel.isLogTreePanelVisible());
+ AbstractConfiguration config =
SettingsManager.getInstance().getSettingsForReceiverTab(identifier);
+
+ boolean visible = config.getBoolean("logpanel.logTreePanelVisible");
+ config.setProperty("logpanel.logTreePanelVisible", !visible);
}
/**
@@ -2246,7 +2312,9 @@ public class LogPanel extends DockablePanel implements
ChainsawEventBatchListene
* @return logger tree visibility flag
*/
boolean isLogTreeVisible() {
- return preferenceModel.isLogTreePanelVisible();
+ AbstractConfiguration config =
SettingsManager.getInstance().getSettingsForReceiverTab(identifier);
+
+ return config.getBoolean("logpanel.logTreePanelVisible");
}
/**
@@ -3570,7 +3638,7 @@ public class LogPanel extends DockablePanel implements
ChainsawEventBatchListene
}
private class MarkerCellEditor implements TableCellEditor {
- JTable currentTable;
+ JTable currentTableMarkerCell;
JTextField textField = new JTextField();
Set<CellEditorListener> cellEditorListeners = new HashSet<>();
private LoggingEventWrapper currentLoggingEventWrapper;
@@ -3603,7 +3671,7 @@ public class LogPanel extends DockablePanel implements
ChainsawEventBatchListene
searchModel.fireRowUpdated(index, true);
}
- ChangeEvent event = new ChangeEvent(currentTable);
+ ChangeEvent event = new ChangeEvent(currentTableMarkerCell);
Set<CellEditorListener> cellEditorListenersCopy;
synchronized (mutex) {
cellEditorListenersCopy = new HashSet<>(cellEditorListeners);
@@ -3612,9 +3680,9 @@ public class LogPanel extends DockablePanel implements
ChainsawEventBatchListene
for (Object aCellEditorListenersCopy : cellEditorListenersCopy) {
((CellEditorListener)
aCellEditorListenersCopy).editingStopped(event);
}
- currentTable.setRowHeight(currentRowHeight);
+ currentTableMarkerCell.setRowHeight(currentRowHeight);
currentLoggingEventWrapper = null;
- currentTable = null;
+ currentTableMarkerCell = null;
return true;
}
@@ -3625,13 +3693,13 @@ public class LogPanel extends DockablePanel implements
ChainsawEventBatchListene
cellEditorListenersCopy = new HashSet<>(cellEditorListeners);
}
- ChangeEvent event = new ChangeEvent(currentTable);
+ ChangeEvent event = new ChangeEvent(currentTableMarkerCell);
for (Object aCellEditorListenersCopy : cellEditorListenersCopy) {
((CellEditorListener)
aCellEditorListenersCopy).editingCanceled(event);
}
- currentTable.setRowHeight(currentRowHeight);
+ currentTableMarkerCell.setRowHeight(currentRowHeight);
currentLoggingEventWrapper = null;
- currentTable = null;
+ currentTableMarkerCell = null;
}
public void addCellEditorListener(CellEditorListener l) {
@@ -3647,7 +3715,7 @@ public class LogPanel extends DockablePanel implements
ChainsawEventBatchListene
}
public Component getTableCellEditorComponent(JTable table, Object
value, boolean isSelected, int row, int column) {
- currentTable = table;
+ currentTableMarkerCell = table;
currentLoggingEventWrapper = ((EventContainer)
table.getModel()).getRow(row);
if (currentLoggingEventWrapper != null) {
textField.setText(currentLoggingEventWrapper.getLoggingEvent().getProperty(ChainsawConstants.LOG4J_MARKER_COL_NAME_LOWERCASE));
@@ -3733,7 +3801,7 @@ public class LogPanel extends DockablePanel implements
ChainsawEventBatchListene
int widthToUse = Math.max(2, (int) (delta *
widthMaxMillisDeltaRenderRatio));
eventHeight = Math.min(maxEventHeight, eventHeight + 3);
// eventHeight = maxEventHeight;
- drawEvent(applicationPreferenceModel.getDeltaColor(),
(verticalLocation - eventHeight + 1), eventHeight, g, startX, widthToUse);
+// drawEvent(applicationPreferenceModel.getDeltaColor(),
(verticalLocation - eventHeight + 1), eventHeight, g, startX, widthToUse);
// System.out.println("painting error -
rownum: " + wrapper.rowNum + ", location: " + verticalLocation + ", height: " +
eventHeight + ", component height: " + componentHeight + ", row count: " +
rowCount);
}
}