Author: sdeboy
Date: Thu Aug  5 03:43:26 2010
New Revision: 982459

URL: http://svn.apache.org/viewvc?rev=982459&view=rev
Log:
Minor scrollToRow update - now synchronous if called from the EDT

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

Modified: 
logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/JSortTable.java
URL: 
http://svn.apache.org/viewvc/logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/JSortTable.java?rev=982459&r1=982458&r2=982459&view=diff
==============================================================================
--- 
logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/JSortTable.java 
(original)
+++ 
logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/JSortTable.java 
Thu Aug  5 03:43:26 2010
@@ -93,6 +93,7 @@ public class JSortTable extends JTable i
     getTableHeader().resizeAndRepaint();
   }
 
+  //Allow synchronous updates if already on the EDT
   public void scrollTo(final int row, final int col) {
     SwingHelper.invokeOnEDT(new Runnable() {
       public void run() {

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=982459&r1=982458&r2=982459&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 
Thu Aug  5 03:43:26 2010
@@ -990,6 +990,7 @@ public class LogPanel extends DockablePa
     //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
+    //assuming notification is called on the EDT so we can in the current EDT 
call update the scroll & selection
     tableModel.addPropertyChangeListener("refilter", new 
PropertyChangeListener() {
         private LoggingEvent currentEvent;
         public void propertyChange(PropertyChangeEvent evt) {
@@ -998,27 +999,9 @@ public class LogPanel extends DockablePa
             if (evt.getNewValue().equals(Boolean.TRUE)) {
                 currentEvent = tableModel.getRow(table.getSelectedRow());
             } else {
-                //events are still coming in..wait until all events are added 
before resetting current row
-                new Thread(new Runnable() {
-                    public void run() {
-                        try
-                        {
-                            Thread.sleep(500);
-                        }
-                        catch (InterruptedException e)
-                        {
-                            e.printStackTrace();
-                        }
-                        EventQueue.invokeLater(new Runnable() {
-                            public void run() {
-                                //refilter is about to begin...get current 
selected row
-                                if (currentEvent != null) {
-                                    
table.scrollToRow(tableModel.getRowIndex(currentEvent));
-                                }
-                            }
-                        });
-                    }
-                }).start();
+                if (currentEvent != null) {
+                    table.scrollToRow(tableModel.getRowIndex(currentEvent));
+                }
             }
         }
     });


Reply via email to