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

[email protected]
Newsgroups gmane.comp.apache.logging
Message-ID <[email protected]>
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);
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.