Author: sdeboy
Date: Wed Aug 18 05:52:10 2010
New Revision: 986570
URL: http://svn.apache.org/viewvc?rev=986570&view=rev
Log:
Cyclic flag is now persisted & restored on a per-tab basis
Modified:
logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/ChainsawCyclicBufferTableModel.java
logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/EventContainer.java
logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogPanel.java
logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogPanelPreferenceModel.java
logging/chainsaw/trunk/src/main/resources/org/apache/log4j/chainsaw/help/release-notes.html
Modified:
logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/ChainsawCyclicBufferTableModel.java
URL:
http://svn.apache.org/viewvc/logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/ChainsawCyclicBufferTableModel.java?rev=986570&r1=986569&r2=986570&view=diff
==============================================================================
---
logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/ChainsawCyclicBufferTableModel.java
(original)
+++
logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/ChainsawCyclicBufferTableModel.java
Wed Aug 18 05:52:10 2010
@@ -63,6 +63,7 @@ class ChainsawCyclicBufferTableModel ext
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 = DEFAULT_CAPACITY;
List unfilteredList;
@@ -475,7 +476,7 @@ class ChainsawCyclicBufferTableModel ext
public ExtendedLoggingEvent getRow(int row) {
synchronized (mutex) {
- if (row < filteredList.size()) {
+ if (row < filteredList.size() && row > -1) {
return (ExtendedLoggingEvent) filteredList.get(row);
}
}
@@ -613,7 +614,7 @@ class ChainsawCyclicBufferTableModel ext
* memory...)
*/
synchronized(mutex) {
- if (isCyclic()) {
+ if (cyclic) {
CyclicBufferList bufferList = (CyclicBufferList) unfilteredList;
if (bufferList.size() == bufferList.getMaxSize()) {
reachedCapacity = true;
@@ -717,14 +718,6 @@ class ChainsawCyclicBufferTableModel ext
}
/**
- * Returns true if this model is Cyclic (bounded) or not
- * @return true/false
- */
- public boolean isCyclic() {
- return cyclic;
- }
-
- /**
* @return
*/
public int getMaxSize() {
@@ -825,12 +818,12 @@ class ChainsawCyclicBufferTableModel ext
monitor.setMillisToDecideToPopup(250);
monitor.setMillisToPopup(100);
logger.debug(
- "Changing Model, isCyclic is now " + isCyclic());
+ "Changing Model, isCyclic is now " + cyclic);
List newUnfilteredList = null;
List newFilteredList = null;
- if (isCyclic()) {
+ if (cyclic) {
newUnfilteredList = new CyclicBufferList(cyclicBufferSize);
newFilteredList = new CyclicBufferList(cyclicBufferSize);
} else {
Modified:
logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/EventContainer.java
URL:
http://svn.apache.org/viewvc/logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/EventContainer.java?rev=986570&r1=986569&r2=986570&view=diff
==============================================================================
---
logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/EventContainer.java
(original)
+++
logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/EventContainer.java
Wed Aug 18 05:52:10 2010
@@ -68,12 +68,6 @@ public interface EventContainer extends
List getMatchingEvents(Rule rule);
/**
- * Returns true if this model is Cyclic (bounded) or not.
- * @return true/false
- */
- boolean isCyclic();
-
- /**
* Configures this model to use Cyclic or non-cyclic models.
* This method should fire a property Change event if
* it involves an actual change in the underlying model.
Modified:
logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogPanel.java
URL:
http://svn.apache.org/viewvc/logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogPanel.java?rev=986570&r1=986569&r2=986570&view=diff
==============================================================================
---
logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogPanel.java
(original)
+++
logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogPanel.java
Wed Aug 18 05:52:10 2010
@@ -683,7 +683,7 @@ public class LogPanel extends DockablePa
boolean warning100 = false;
public void eventCountChanged(int currentCount, int totalCount) {
- if (tableModel.isCyclic()) {
+ if (preferenceModel.isCyclic()) {
double percent =
((double) totalCount) / ((ChainsawCyclicBufferTableModel)
tableModel)
.getMaxSize();
@@ -972,21 +972,6 @@ public class LogPanel extends DockablePa
}
});
- tableModel.addPropertyChangeListener(
- "cyclic",
- new PropertyChangeListener() {
- public void propertyChange(PropertyChangeEvent arg0) {
- if (tableModel.isCyclic()) {
- MessageCenter.getInstance().getLogger().warn(
- "Changed to Cyclic Mode. Maximum # events kept: "
- + tableModel.getMaxSize());
- } else {
- MessageCenter.getInstance().getLogger().warn(
- "Changed to Unlimited Mode. Warning, you may run out of
memory.");
- }
- }
- });
-
//if the table is refiltered, try to reselect the last selected row
//refilter with a newValue of TRUE means refiltering is about to begin
//refilter with a newValue of FALSE means refiltering is complete
@@ -997,7 +982,10 @@ public class LogPanel extends DockablePa
//if new value is true, filtering is about to begin
//if new value is false, filtering is complete
if (evt.getNewValue().equals(Boolean.TRUE)) {
- currentEvent = tableModel.getRow(table.getSelectedRow());
+ int currentRow = table.getSelectedRow();
+ if (currentRow > -1) {
+ currentEvent = tableModel.getRow(currentRow);
+ }
} else {
if (currentEvent != null) {
table.scrollToRow(tableModel.getRowIndex(currentEvent));
@@ -1918,6 +1906,8 @@ public class LogPanel extends DockablePa
} else {
loadDefaultColumnSettings(event);
}
+ //ensure tablemodel cyclic flag is updated
+ tableModel.setCyclic(preferenceModel.isCyclic());
//may be panel configs that don't have these values
lowerPanel.setDividerLocation(lowerPanelDividerLocation);
nameTreeAndMainPanelSplit.setDividerLocation(treeDividerLocation);
@@ -2211,7 +2201,10 @@ public class LogPanel extends DockablePa
* events or an ArrayList of events
*/
void toggleCyclic() {
- tableModel.setCyclic(!tableModel.isCyclic());
+ boolean toggledCyclic = !preferenceModel.isCyclic();
+
+ preferenceModel.setCyclic(toggledCyclic);
+ tableModel.setCyclic(toggledCyclic);
}
/**
@@ -2220,7 +2213,7 @@ public class LogPanel extends DockablePa
* @return flag answering if LoggingEvent container is a cyclic buffer
*/
boolean isCyclic() {
- return tableModel.isCyclic();
+ return preferenceModel.isCyclic();
}
public void updateFindRule(String ruleText) {
Modified:
logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogPanelPreferenceModel.java
URL:
http://svn.apache.org/viewvc/logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogPanelPreferenceModel.java?rev=986570&r1=986569&r2=986570&view=diff
==============================================================================
---
logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogPanelPreferenceModel.java
(original)
+++
logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogPanelPreferenceModel.java
Wed Aug 18 05:52:10 2010
@@ -86,6 +86,8 @@ public class LogPanelPreferenceModel imp
private boolean highlightSearchMatchText;
private String hiddenExpression;
private String clearTableExpression;
+ //default to cyclic mode
+ private boolean cyclic = true;
/**
* Returns an <b>unmodifiable</b> list of the columns.
@@ -99,6 +101,14 @@ public class LogPanelPreferenceModel imp
public List getColumns() {
return Collections.unmodifiableList(allColumns);
}
+
+ public void setCyclic(boolean cyclic) {
+ this.cyclic = cyclic;
+ }
+
+ public boolean isCyclic() {
+ return cyclic;
+ }
/**
* Returns an <b>unmodifiable</b> list of the visible columns.
@@ -222,6 +232,7 @@ public class LogPanelPreferenceModel imp
* all the properties from
*/
public void apply(LogPanelPreferenceModel model) {
+ setCyclic(model.isCyclic());
setLoggerPrecision(model.getLoggerPrecision());
setDateFormatPattern(model.getDateFormatPattern());
setLevelIcons(model.isLevelIcons());
Modified:
logging/chainsaw/trunk/src/main/resources/org/apache/log4j/chainsaw/help/release-notes.html
URL:
http://svn.apache.org/viewvc/logging/chainsaw/trunk/src/main/resources/org/apache/log4j/chainsaw/help/release-notes.html?rev=986570&r1=986569&r2=986570&view=diff
==============================================================================
---
logging/chainsaw/trunk/src/main/resources/org/apache/log4j/chainsaw/help/release-notes.html
(original)
+++
logging/chainsaw/trunk/src/main/resources/org/apache/log4j/chainsaw/help/release-notes.html
Wed Aug 18 05:52:10 2010
@@ -10,9 +10,13 @@
<b>NOTE:</b> The mechanism and format used to persist settings in Chainsaw is
subject to change. If you are experiencing problems displaying events in
Chainsaw, please delete everything in the $user.dir/.chainsaw directory and
restart Chainsaw.
<br>
<h1>2.1</h1>
+<h2>17 Aug 2010</h2>
+<ul>
+<li>Cyclic flag is now persisted & restored on a per-tab basis</li>
+</ul>
<h2>3 Aug 2010</h2>
<ul>
-<li>Now clearing the logger name tree when the table is cleared.</li>
+<li>Now clearing the logger name tree when the table is cleared</li>
</ul>
<h2>21 Jul 2010</h2>
<ul>