You are viewing a plain text version of this content. The canonical link for it is here.
Posted to general@logging.apache.org by sd...@apache.org on 2010/04/05 08:08:37 UTC

svn commit: r930804 - in /logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw: ChainsawCyclicBufferTableModel.java LogPanel.java

Author: sdeboy
Date: Mon Apr  5 06:08:37 2010
New Revision: 930804

URL: http://svn.apache.org/viewvc?rev=930804&view=rev
Log:
Updates to refresh detail pane if event (marker) or detail pane layout change

Modified:
    logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/ChainsawCyclicBufferTableModel.java
    logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogPanel.java

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=930804&r1=930803&r2=930804&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 Mon Apr  5 06:08:37 2010
@@ -332,10 +332,7 @@ class ChainsawCyclicBufferTableModel ext
   }
 
     public void removePropertyFromEvents(String propName) {
-        for (Iterator iter = unfilteredList.iterator();iter.hasNext();) {
-            LoggingEvent event = (LoggingEvent)iter.next();
-            event.removeProperty(propName);
-        }
+        //first remove the event from any displayed events, so we can fire row updated event
         for (int i=0;i<filteredList.size();i++) {
             LoggingEvent event = (LoggingEvent)filteredList.get(i);
             Object result = event.removeProperty(propName);
@@ -343,6 +340,11 @@ class ChainsawCyclicBufferTableModel ext
                 fireRowUpdated(i, false);
             }
         }
+        //now remove the event from all events
+        for (Iterator iter = unfilteredList.iterator();iter.hasNext();) {
+            LoggingEvent event = (LoggingEvent)iter.next();
+            event.removeProperty(propName);
+        }
     }
 
     public void updateEventsWithFindRule(Rule findRule) {

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=930804&r1=930803&r2=930804&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 Mon Apr  5 06:08:37 2010
@@ -1041,10 +1041,13 @@ public class LogPanel extends DockablePa
         
     tableModel.addTableModelListener(new TableModelListener() {
 		public void tableChanged(TableModelEvent e) {
-			detailPaneUpdater.setSelectedRow(table.getSelectedRow());
+            int currentRow = table.getSelectedRow();
+            if (e.getFirstRow() <= currentRow && e.getLastRow() >= currentRow) {
+                //current row has changed - update
+                detailPaneUpdater.setAndUpdateSelectedRow(table.getSelectedRow());
+            }
 		}
     });
-    
     addPropertyChangeListener(
       "detailPaneConversionPattern", detailPaneUpdater);
 
@@ -2926,10 +2929,18 @@ public class LogPanel extends DockablePa
       updateDetailPane();
     }
 
+    private void setAndUpdateSelectedRow(int row) {
+        selectedRow = row;
+        updateDetailPane(true);
+    }
+
+    private void updateDetailPane() {
+        updateDetailPane(false);
+    }
     /**
      * Update detail pane
      */
-    private void updateDetailPane() {
+    private void updateDetailPane(boolean force) {
             /*
              * Don't bother doing anything if it's not visible. Note: the isVisible() method on
              * Component is not really accurate here because when the button to toggle display of
@@ -2940,7 +2951,7 @@ public class LogPanel extends DockablePa
       }
 
 	      ExtendedLoggingEvent event = null;
-	      if (selectedRow != -1 && (lastRow != selectedRow)) {
+	      if (force || (selectedRow != -1 && (lastRow != selectedRow))) {
 	        event = tableModel.getRow(selectedRow);
 	
 	        if (event != null) {
@@ -2991,7 +3002,7 @@ public class LogPanel extends DockablePa
       SwingUtilities.invokeLater(
         new Runnable() {
           public void run() {
-            updateDetailPane();
+            updateDetailPane(true);
           }
         });
     }
@@ -3025,6 +3036,7 @@ public class LogPanel extends DockablePa
             } else {
                 currentEvent.setProperty(ChainsawConstants.LOG4J_MARKER_COL_NAME_LOWERCASE, textField.getText());
             }
+            tableModel.fireRowUpdated(table.getSelectedRow(), true);
             ChangeEvent event = new ChangeEvent(table);
             for (Iterator iter = cellEditorListeners.iterator();iter.hasNext();) {
                 ((CellEditorListener)iter.next()).editingStopped(event);