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/10/26 06:45:07 UTC

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

Author: sdeboy
Date: Tue Oct 26 04:45:07 2010
New Revision: 1027365

URL: http://svn.apache.org/viewvc?rev=1027365&view=rev
Log:
Fixes to persistence of detail panel position, not updating look and feel if not set

Modified:
    logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogPanel.java
    logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogUI.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=1027365&r1=1027364&r2=1027365&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 Tue Oct 26 04:45:07 2010
@@ -233,7 +233,6 @@ public class LogPanel extends DockablePa
   private final RuleMediator tableRuleMediator = new RuleMediator(false);
   private final RuleMediator searchRuleMediator = new RuleMediator(true);
   private final EventDetailLayout detailLayout = new EventDetailLayout();
-  private double lastDetailPanelSplitLocation = DEFAULT_DETAIL_SPLIT_LOCATION;
   private double lastLogTreePanelSplitLocation = DEFAULT_LOG_TREE_SPLIT_LOCATION;
   private Point currentPoint;
   private JTable currentTable;
@@ -269,6 +268,7 @@ public class LogPanel extends DockablePa
   private boolean searchResultsDisplayed;
   private ColorizedEventAndSearchMatchThumbnail colorizedEventAndSearchMatchThumbnail;
   private EventTimeDeltaMatchThumbnail eventTimeDeltaMatchThumbnail;
+  private boolean isDetailPanelVisible;
 
   /**
    * Creates a new LogPanel object.  If a LogPanel with this identifier has
@@ -2268,9 +2268,9 @@ public class LogPanel extends DockablePa
                     loadDefaultColumnSettings(event);
                 }
                 //ensure tablemodel cyclic flag is updated
+                //may be panel configs that don't have these values
                 tableModel.setCyclic(preferenceModel.isCyclic());
                 searchModel.setCyclic(preferenceModel.isCyclic());
-                //may be panel configs that don't have these values
                 lowerPanel.setDividerLocation(lowerPanelDividerLocation);
                 nameTreeAndMainPanelSplit.setDividerLocation(treeDividerLocation);
                 detailLayout.setConversionPattern(conversionPattern);
@@ -2296,9 +2296,12 @@ public class LogPanel extends DockablePa
             }
         }
     } else {
+        //not setting lower panel divider location here - will do that after the UI is visible
         loadDefaultColumnSettings(event);
     }
-
+    //ensure tablemodel cyclic flag is updated
+    tableModel.setCyclic(preferenceModel.isCyclic());
+    searchModel.setCyclic(preferenceModel.isCyclic());
     logTreePanel.ignore(preferenceModel.getHiddenLoggers());
     logTreePanel.setHiddenExpression(preferenceModel.getHiddenExpression());
     if (preferenceModel.getClearTableExpression() != null) {
@@ -2347,12 +2350,13 @@ public class LogPanel extends DockablePa
     	FileWriter w = new FileWriter(xmlFile);
     	s = stream.createObjectOutputStream(w);
     	s.writeObject(preferenceModel);
-        if (lowerPanelDividerLocation == 0) {
-            //pick a reasonable default
-            s.writeInt((int) (lowerPanel.getSize().height * DEFAULT_DETAIL_SPLIT_LOCATION));
-        } else {
-            s.writeInt(lowerPanelDividerLocation);
-        }
+      if (isDetailPanelVisible) {
+        //use current size
+        s.writeInt(lowerPanel.getDividerLocation());
+      } else {
+        //use size when last hidden
+        s.writeInt(lowerPanelDividerLocation);
+      }
     	s.writeInt(nameTreeAndMainPanelSplit.getDividerLocation());
     	s.writeObject(detailLayout.getConversionPattern());
     	s.writeObject(undockedFrame.getLocation());
@@ -2701,34 +2705,33 @@ public class LogPanel extends DockablePa
    * Display the detail pane, using the last known divider location
    */
   private void showDetailPane() {
-    lowerPanel.setDividerSize(dividerSize);
-      if (lowerPanelDividerLocation != 0) {
-          lowerPanel.setDividerLocation(lowerPanelDividerLocation);
+    if (!isDetailPanelVisible) {
+      lowerPanel.setDividerSize(dividerSize);
+      if (lowerPanelDividerLocation == 0) {
+        lowerPanel.setDividerLocation(DEFAULT_DETAIL_SPLIT_LOCATION);
+        lowerPanelDividerLocation = lowerPanel.getDividerLocation();
       } else {
-          lowerPanel.setDividerLocation(lastDetailPanelSplitLocation);
+        lowerPanel.setDividerLocation(lowerPanelDividerLocation);
       }
       detailPanel.setVisible(true);
       detailPanel.repaint();
       lowerPanel.repaint();
+      isDetailPanelVisible = true;
+    }
   }
 
   /**
    * Hide the detail pane, holding the current divider location for later use
    */
   private void hideDetailPane() {
-    int currentSize = lowerPanel.getHeight() - lowerPanel.getDividerSize();
-
-    if (currentSize > 0) {
-      lastDetailPanelSplitLocation =
-        (double) lowerPanel.getDividerLocation() / currentSize;
-     }
-     if (lowerPanel.getDividerLocation() > 0) {
-        lowerPanelDividerLocation = lowerPanel.getDividerLocation();
-     }
-
+    //may be called not currently visible on initial setup to ensure panel is not visible..only update divider location if hiding when currently visible
+    if (isDetailPanelVisible) {
+      lowerPanelDividerLocation = lowerPanel.getDividerLocation();
+    }
     lowerPanel.setDividerSize(0);
     detailPanel.setVisible(false);
     lowerPanel.repaint();
+    isDetailPanelVisible = false;
   }
 
   /**

Modified: logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogUI.java
URL: http://svn.apache.org/viewvc/logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogUI.java?rev=1027365&r1=1027364&r2=1027365&view=diff
==============================================================================
--- logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogUI.java (original)
+++ logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogUI.java Tue Oct 26 04:45:07 2010
@@ -286,8 +286,11 @@ public class LogUI extends JFrame implem
     {
         public void run()
         {
-            loadLookAndFeelUsingPluginClassLoader(model.getLookAndFeelClassName());
-            createChainsawGUI(model, null);
+          String lookAndFeelClassName = model.getLookAndFeelClassName();
+          if (lookAndFeelClassName != null && !(lookAndFeelClassName.trim().equals(""))) {
+            loadLookAndFeelUsingPluginClassLoader(lookAndFeelClassName);
+          }
+          createChainsawGUI(model, null);
         }
     });
   }
@@ -1040,12 +1043,10 @@ public class LogUI extends JFrame implem
       initializationLock.notifyAll();
     }
 
-    
-    
     if (
       noReceiversDefined
         && applicationPreferenceModel.isShowNoReceiverWarning()) {
-      EventQueue.invokeLater(new Runnable() {
+      SwingHelper.invokeOnEDT(new Runnable() {
           public void run() {
               showReceiverConfigurationPanel();
           }