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 2007/08/23 23:33:09 UTC

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

Author: sdeboy
Date: Thu Aug 23 14:33:08 2007
New Revision: 569153

URL: http://svn.apache.org/viewvc?rev=569153&view=rev
Log:
fix scroll to bottom
 - 'find' no longer bypasses - find now deactivates scroll to bottom.
     To re-activate, press ctrl-b or click the scroll to bottom button
 - button state/default scroll state didn't match preference model

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

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=569153&r1=569152&r2=569153&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 23 14:33:08 2007
@@ -75,6 +75,7 @@
 import javax.swing.BoxLayout;
 import javax.swing.ButtonGroup;
 import javax.swing.ImageIcon;
+import javax.swing.JButton;
 import javax.swing.JCheckBoxMenuItem;
 import javax.swing.JComboBox;
 import javax.swing.JComponent;
@@ -90,7 +91,6 @@
 import javax.swing.JSeparator;
 import javax.swing.JSplitPane;
 import javax.swing.JTable;
-import javax.swing.JButton;
 import javax.swing.JTextArea;
 import javax.swing.JTextField;
 import javax.swing.JToolBar;
@@ -223,9 +223,7 @@
   private double lastDetailPanelSplitLocation = DEFAULT_DETAIL_SPLIT_LOCATION;
   private double lastLogTreePanelSplitLocation =
     DEFAULT_LOG_TREE_SPLIT_LOCATION;
-  private boolean bypassScrollFind;
   private Point currentPoint;
-  private boolean scroll;
   private boolean paused = false;
   private Rule findRule;
   private final JPanel findPanel;
@@ -254,8 +252,6 @@
     logger.debug("creating logpanel for " + identifier);
 
     setLayout(new BorderLayout());
-    scroll = true;
-
     findPanel = new JPanel();
 
     final Map columnNameKeywordMap = new HashMap();
@@ -298,7 +294,7 @@
 
     setDetailPaneConversionPattern(
       DefaultLayoutFactory.getDefaultPatternLayout());
-    ((EventDetailLayout) detailLayout).setConversionPattern(
+      detailLayout.setConversionPattern(
       DefaultLayoutFactory.getDefaultPatternLayout());
 
     undockedFrame = new JFrame(identifier);
@@ -385,6 +381,7 @@
           preferenceModel.setScrollToBottom(menuItemScrollBottom.isSelected());
         }
       });
+    menuItemScrollBottom.setSelected(isScrollToBottom());
 
     menuItemScrollBottom.setIcon(
       new ImageIcon(ChainsawIcons.SCROLL_TO_BOTTOM));
@@ -535,8 +532,7 @@
         public void propertyChange(PropertyChangeEvent evt) {
           boolean value = ((Boolean) evt.getNewValue()).booleanValue();
           menuItemScrollBottom.setSelected(value);
-          scroll = value;
-          if (scroll) {
+          if (value) {
           	table.scrollToBottom(table.columnAtPoint(table.getVisibleRect().getLocation()));
           }
         }
@@ -714,10 +710,10 @@
            * 
            * note: previouslast is set after it is evaluated in the bypass scroll check
           */
-          //System.out.println("rowcount: " + (table.getRowCount() - 1) + ", last: " + evt.getLastIndex() +", previous last: " + previousLastIndex + "..first: " + evt.getFirstIndex());
+         //System.out.println("rowcount: " + (table.getRowCount() - 1) + ", last: " + evt.getLastIndex() +", previous last: " + previousLastIndex + "..first: " + evt.getFirstIndex() + ", isadjusting: " + evt.getValueIsAdjusting());
           
-          boolean bypassScrollSelection = (lastIndexOnLastRow && lastIndexSame && previousLastIndex != evt.getFirstIndex());
-          if (bypassScrollSelection && scroll && table.getRowCount() > 0) {
+          boolean disableScrollToBottom = (lastIndexOnLastRow && lastIndexSame && previousLastIndex != evt.getFirstIndex());
+          if (disableScrollToBottom && isScrollToBottom() && table.getRowCount() > 0) {
           	preferenceModel.setScrollToBottom(false);
           }
           previousLastIndex = evt.getLastIndex();
@@ -1415,7 +1411,7 @@
       tableModel.fireTableEvent(
         first, tableModel.getLastAdded(), events.size());
 
-      if (scroll && !bypassScrollFind) {
+      if (isScrollToBottom()) {
         table.scrollToBottom(
           table.columnAtPoint(table.getVisibleRect().getLocation()));
       }
@@ -1749,17 +1745,15 @@
   }
 
   public boolean updateRule(String ruleText) {
-    if ((ruleText == null) || ((ruleText != null) && ruleText.equals(""))) {
+    if ((ruleText == null) || (ruleText.equals(""))) {
       findRule = null;
       colorizer.setFindRule(null);
-      bypassScrollFind = false;
       findField.setToolTipText(
         "Enter expression - right click or ctrl-space for menu");
-
       return false;
     } else {
-      bypassScrollFind = true;
-
+      //only turn off scroltobottom when finding something (find not empty)
+      preferenceModel.setScrollToBottom(false);
       try {
         findField.setToolTipText(
           "Enter expression - right click or ctrl-space for menu");
@@ -1950,7 +1944,7 @@
         new SmallToggleButton(dockToggleScrollToBottomAction);
       preferenceModel.addPropertyChangeListener("scrollToBottom", new PropertyChangeListener() {
       	public void propertyChange(PropertyChangeEvent evt) {
-      	    toggleScrollToBottomButton.setSelected(preferenceModel.isScrollToBottom());    		
+      	    toggleScrollToBottomButton.setSelected(isScrollToBottom());    		
       	}
       });