svn commit: r986570 - in /logging/chainsaw/trunk/src/main: java/org/apache/log4j/chainsaw/ resources/org/apache/log4j/chainsaw/help/

[email protected]
Newsgroups gmane.comp.apache.logging
Message-ID <[email protected]>
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>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.