You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-dev@logging.apache.org by ps...@apache.org on 2003/10/09 06:05:51 UTC

cvs commit: jakarta-log4j/src/java/org/apache/log4j/chainsaw ChainsawToolBarAndMenus.java LogUI.java LogPanel.java LogPanelPreferenceModel.java

psmith      2003/10/08 21:05:51

  Modified:    src/java/org/apache/log4j/chainsaw
                        ChainsawToolBarAndMenus.java LogUI.java
                        LogPanel.java LogPanelPreferenceModel.java
  Log:
  Started moving more of the LogPanel "preferences" into
  the PreferenceModel, which required a little bit of rework
  in the ToolbarBarAndMenu class.
  
  The rationale here is that if a central class is used to store
  all preferences, restoring saved preferences will be a lot easier
  later one.
  
  The Detail Panel & Log Tree Panel visisibility is now tracking
  via the preference model, but Tool tips is not, although
  the value is there.
  
  These will all eventually turn up in the Preference editor panel too.
  
  Revision  Changes    Path
  1.18      +13 -9     jakarta-log4j/src/java/org/apache/log4j/chainsaw/ChainsawToolBarAndMenus.java
  
  Index: ChainsawToolBarAndMenus.java
  ===================================================================
  RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/chainsaw/ChainsawToolBarAndMenus.java,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- ChainsawToolBarAndMenus.java	2 Oct 2003 08:28:25 -0000	1.17
  +++ ChainsawToolBarAndMenus.java	9 Oct 2003 04:05:46 -0000	1.18
  @@ -55,6 +55,12 @@
    */
   package org.apache.log4j.chainsaw;
   
  +import org.apache.log4j.chainsaw.icons.ChainsawIcons;
  +import org.apache.log4j.chainsaw.prefs.LoadSettingsEvent;
  +import org.apache.log4j.chainsaw.prefs.SaveSettingsEvent;
  +import org.apache.log4j.chainsaw.prefs.SettingsListener;
  +import org.apache.log4j.helpers.LogLog;
  +
   import java.awt.BorderLayout;
   import java.awt.Dimension;
   import java.awt.FlowLayout;
  @@ -63,6 +69,7 @@
   import java.awt.event.ActionListener;
   import java.awt.event.InputEvent;
   import java.awt.event.KeyEvent;
  +
   import java.util.ArrayList;
   import java.util.Collection;
   import java.util.HashMap;
  @@ -98,12 +105,6 @@
   import javax.swing.event.DocumentEvent;
   import javax.swing.event.DocumentListener;
   
  -import org.apache.log4j.chainsaw.icons.ChainsawIcons;
  -import org.apache.log4j.chainsaw.prefs.LoadSettingsEvent;
  -import org.apache.log4j.chainsaw.prefs.SaveSettingsEvent;
  -import org.apache.log4j.chainsaw.prefs.SettingsListener;
  -import org.apache.log4j.helpers.LogLog;
  -
   
   /**
    * Encapsulates the full Toolbar, and menus and all the actions that can be performed from it.
  @@ -130,6 +131,8 @@
     private final Collection lookAndFeelMenus = new ArrayList();
     private final JCheckBoxMenuItem toggleShowReceiversCheck =
       new JCheckBoxMenuItem();
  +  private final JCheckBoxMenuItem toggleLogTreeMenuItem =
  +    new JCheckBoxMenuItem();
     private final JCheckBoxMenuItem toggleDetailMenuItem =
       new JCheckBoxMenuItem();
     private final JCheckBoxMenuItem toggleCyclicMenuItem =
  @@ -489,8 +492,7 @@
   
       toggleCyclicMenuItem.setSelected(true);
   
  -    JCheckBoxMenuItem toggleLogTreeMenuItem =
  -      new JCheckBoxMenuItem(toggleLogTreeAction);
  +    toggleLogTreeMenuItem.setAction(toggleLogTreeAction);
       toggleLogTreeMenuItem.setSelected(true);
   
       final Action toggleStatusBarAction =
  @@ -745,7 +747,7 @@
         };
   
       showPreferences.putValue(
  -      Action.SHORT_DESCRIPTION, "Define display and color filters...");
  +      Action.SHORT_DESCRIPTION, "LogPanel Preferences...");
   
       // TODO think of good mnemonics and HotKey for this action
       return showPreferences;
  @@ -981,6 +983,7 @@
   
       toggleStatusBarCheck.setSelected(logui.isStatusBarVisible());
       toggleShowReceiversCheck.setSelected(logui.isReceiverPanelVisible());
  +
       logTreePaneButton.setSelected(logui.isLogTreePanelVisible());
       showReceiversButton.setSelected(logui.isReceiverPanelVisible());
       menuItemClose.setSelected(logui.getTabbedPane().containsWelcomePanel());
  @@ -1009,6 +1012,7 @@
         toggleDetailMenuItem.setSelected(logPanel.isDetailPaneVisible());
         toggleCyclicMenuItem.setSelected(logPanel.getModel().isCyclic());
         detailPaneButton.getModel().setSelected(logPanel.isDetailPaneVisible());
  +      toggleLogTreeMenuItem.setSelected(logPanel.isLogTreePanelVisible());
       }
   
       for (int i = 0; i < logPanelSpecificActions.length; i++) {
  
  
  
  1.39      +8 -6      jakarta-log4j/src/java/org/apache/log4j/chainsaw/LogUI.java
  
  Index: LogUI.java
  ===================================================================
  RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/chainsaw/LogUI.java,v
  retrieving revision 1.38
  retrieving revision 1.39
  diff -u -r1.38 -r1.39
  --- LogUI.java	8 Oct 2003 21:57:40 -0000	1.38
  +++ LogUI.java	9 Oct 2003 04:05:46 -0000	1.39
  @@ -1330,12 +1330,14 @@
   
           thisPanel.addEventCountListener(new TabIconHandler(ident));
   
  -        thisPanel.addPropertyChangeListener(
  -          new PropertyChangeListener() {
  -            public void propertyChange(PropertyChangeEvent evt) {
  -              tbms.stateChange();
  -            }
  -          });
  +        PropertyChangeListener toolbarMenuUpdateListener = new PropertyChangeListener() {
  +          public void propertyChange(PropertyChangeEvent evt) {
  +            tbms.stateChange();
  +          }
  +        };
  +        thisPanel.addPropertyChangeListener(toolbarMenuUpdateListener);
  +        thisPanel.getPreferenceModel().addPropertyChangeListener(toolbarMenuUpdateListener);
  +        
           thisPanel.addPropertyChangeListener(
             "docked",
             new PropertyChangeListener() {
  
  
  
  1.20      +92 -87    jakarta-log4j/src/java/org/apache/log4j/chainsaw/LogPanel.java
  
  Index: LogPanel.java
  ===================================================================
  RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/chainsaw/LogPanel.java,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- LogPanel.java	3 Oct 2003 04:08:26 -0000	1.19
  +++ LogPanel.java	9 Oct 2003 04:05:47 -0000	1.20
  @@ -180,7 +180,6 @@
     private ThrowableRenderPanel throwableRenderPanel;
     private MouseFocusOnAdaptor mouseFocusOnAdaptor = new MouseFocusOnAdaptor();
     private boolean paused = false;
  -  private boolean logTreePanelVisible = true;
     private final FilterModel filterModel = new FilterModel();
     private final RuleMediator ruleMediator = new RuleMediator();
     private final FocusOnMenu focusOnMenu = new FocusOnMenu();
  @@ -213,10 +212,7 @@
       new LogPanelLoggerTreeModel();
     private Layout detailPaneLayout = new EventDetailLayout();
     private Layout toolTipLayout = detailPaneLayout;
  -
  -  //used for consistency - stays empty - used to allow none set in the colordisplay selector and right click
  -  Set noneSet = new HashSet();
  -  Point currentPoint;
  +  private Point currentPoint;
     private final JSplitPane nameTreeAndMainPanelSplit;
     private final LoggerNameTreePanel logTreePanel;
     private boolean tooltipsEnabled;
  @@ -255,6 +251,30 @@
       ((EventDetailLayout) toolTipLayout).setConversionPattern(
         DefaultLayoutFactory.getDefaultPatternLayout());
   
  +    preferenceModel.addPropertyChangeListener(
  +      "detailPaneVisible",
  +      new PropertyChangeListener() {
  +        public void propertyChange(PropertyChangeEvent evt) {
  +          boolean newValue = ((Boolean) evt.getNewValue()).booleanValue();
  +
  +          if (newValue) {
  +            lowerPanel.setDividerLocation(150);
  +          }
  +
  +          detailPanel.setVisible(newValue);
  +          lowerPanel.setOneTouchExpandable(newValue);
  +        }
  +      });
  +
  +    preferenceModel.addPropertyChangeListener(
  +      "logTreePanelVisible",
  +      new PropertyChangeListener() {
  +        public void propertyChange(PropertyChangeEvent evt) {
  +          boolean newValue = ((Boolean) evt.getNewValue()).booleanValue();
  +
  +          logTreePanel.setVisible(newValue);
  +        }
  +      });
       tableModel = new ChainsawCyclicBufferTableModel();
   
       table = new JSortTable(tableModel);
  @@ -283,33 +303,47 @@
           }
         });
   
  +    preferenceModel.addPropertyChangeListener(
  +      "visibleColumns",
  +      new PropertyChangeListener() {
  +        public void propertyChange(PropertyChangeEvent evt) {
  +          TableColumnModel columnModel = table.getColumnModel();
  +
  +          for (int i = 0; i < columnModel.getColumnCount(); i++) {
  +            TableColumn column = columnModel.getColumn(i);
  +
  +            if (
  +              !preferenceModel.isColumnVisible(
  +                  column.getHeaderValue().toString())) {
  +              columnModel.removeColumn(column);
  +            }
  +          }
   
  -	preferenceModel.addPropertyChangeListener("visibleColumns", new PropertyChangeListener(){
  +          Set columnSet = new HashSet();
  +          Enumeration enumeration = columnModel.getColumns();
   
  -		public void propertyChange(PropertyChangeEvent evt) {
  -			TableColumnModel columnModel = table.getColumnModel();
  -			for (int i = 0; i < columnModel.getColumnCount(); i++) {
  -				TableColumn column = columnModel.getColumn(i);
  -				if(!preferenceModel.isColumnVisible(column.getHeaderValue().toString())){
  -					columnModel.removeColumn(column);
  -				}
  -			}
  -			Set columnSet = new HashSet();
  -			Enumeration enumeration = columnModel.getColumns();
  -			while (enumeration.hasMoreElements()) {
  -				TableColumn column = (TableColumn) enumeration.nextElement();
  -				columnSet.add(column.getHeaderValue());
  -			}			
  -			for (Iterator iter = ChainsawColumns.getColumnsNames().iterator(); iter.hasNext();) {
  -				String column = (String) iter.next();
  -				if(preferenceModel.isColumnVisible(column) && !columnSet.contains(column)){
  -					TableColumn newCol = new TableColumn(ChainsawColumns.getColumnsNames().indexOf(column));
  -					newCol.setHeaderValue(column);
  -					columnModel.addColumn(newCol);
  -				}
  -			}
  -			
  -		}});
  +          while (enumeration.hasMoreElements()) {
  +            TableColumn column = (TableColumn) enumeration.nextElement();
  +            columnSet.add(column.getHeaderValue());
  +          }
  +
  +          for (
  +            Iterator iter = ChainsawColumns.getColumnsNames().iterator();
  +              iter.hasNext();) {
  +            String column = (String) iter.next();
  +
  +            if (
  +              preferenceModel.isColumnVisible(column)
  +                && !columnSet.contains(column)) {
  +              TableColumn newCol =
  +                new TableColumn(
  +                  ChainsawColumns.getColumnsNames().indexOf(column));
  +              newCol.setHeaderValue(column);
  +              columnModel.addColumn(newCol);
  +            }
  +          }
  +        }
  +      });
   
       /**
                * We listen for new Key's coming in so we can get them automatically added as columns
  @@ -916,7 +950,7 @@
           public void componentHidden(ComponentEvent e) {
             nameTreeAndMainPanelSplit.setEnabled(false);
             nameTreeAndMainPanelSplit.setOneTouchExpandable(false);
  -          setLogTreePanelVisible(false);
  +          getPreferenceModel().setLogTreePanelVisible(false);
           }
   
           public void componentMoved(ComponentEvent e) {
  @@ -929,7 +963,7 @@
             nameTreeAndMainPanelSplit.setEnabled(true);
             nameTreeAndMainPanelSplit.setOneTouchExpandable(true);
             nameTreeAndMainPanelSplit.setDividerLocation(-1);
  -          setLogTreePanelVisible(true);
  +          getPreferenceModel().setLogTreePanelVisible(true);
           }
         });
   
  @@ -1080,15 +1114,14 @@
       //          colorFilter.clear();
       //        }
       //      });
  -//    JMenuItem menuItemColumnSelector =
  -//      new JMenuItem("Select display columns...");
  -//    menuItemColumnSelector.addActionListener(
  -//      new ActionListener() {
  -//        public void actionPerformed(ActionEvent evt) {
  -//          columnSelector.show();
  -//        }
  -//      });
  -
  +    //    JMenuItem menuItemColumnSelector =
  +    //      new JMenuItem("Select display columns...");
  +    //    menuItemColumnSelector.addActionListener(
  +    //      new ActionListener() {
  +    //        public void actionPerformed(ActionEvent evt) {
  +    //          columnSelector.show();
  +    //        }
  +    //      });
       JMenuItem menuItemRemoveDisplayFilter =
         new JMenuItem("Remove all display filters");
       menuItemRemoveDisplayFilter.addActionListener(
  @@ -1161,22 +1194,18 @@
   
       //	p.add(new JSeparator());
       //    p.add(menuDefineCustomFilter);
  -	p.add(new JSeparator());
  +    p.add(new JSeparator());
       p.add(menuItemLogPanelPreferences);
   
       //    p.add(menuColumnDisplayFilter);
       //    p.add(menuColumnColorFilter);
  -//    p.add(new JSeparator());
  -
  +    //    p.add(new JSeparator());
       //    JMenu removeSubMenu = new JMenu("Remove");
  -//    JMenu selectSubMenu = new JMenu("Select");
  -
  -//    selectSubMenu.add(menuItemColumnSelector);
  -
  +    //    JMenu selectSubMenu = new JMenu("Select");
  +    //    selectSubMenu.add(menuItemColumnSelector);
       //    removeSubMenu.add(menuItemRemoveColorFilter);
       //    removeSubMenu.add(menuItemRemoveDisplayFilter);
  -//    p.add(menuItemColumnSelector);
  -
  +    //    p.add(menuItemColumnSelector);
       //    p.add(selectSubMenu);
       //    p.add(removeSubMenu);
       final PopupListener popupListener = new PopupListener(p);
  @@ -1598,7 +1627,7 @@
      * @return
      */
     boolean isDetailPaneVisible() {
  -    return detailPanel.isVisible();
  +    return getPreferenceModel().isDetailPaneVisible();
     }
   
     /**
  @@ -1607,27 +1636,12 @@
      *
      */
     void toggleDetailPanel() {
  -    setDetailPaneVisible(!isDetailPaneVisible());
  -  }
  -
  -  void setDetailPaneVisible(boolean visible) {
  -    boolean oldValue = isDetailPaneVisible();
  -    detailPanel.setVisible(visible);
  -
  -    if (visible) {
  -      lowerPanel.setDividerLocation(150);
  -    }
  -
  -    lowerPanel.setOneTouchExpandable(visible);
  -    firePropertyChange("detailPanelVisible", oldValue, isDetailPaneVisible());
  +    getPreferenceModel().setDetailPaneVisible(!isDetailPaneVisible());
     }
   
     void toggleLogTreePanel() {
  -    LogLog.debug(
  -      "Toggling logPanel, currently isVisible=" + logTreePanel.isVisible());
  -    logTreePanel.setVisible(!logTreePanel.isVisible());
  -    LogLog.debug(
  -      "Toggling logPanel, now isVisible=" + logTreePanel.isVisible());
  +    getPreferenceModel().setLogTreePanelVisible(
  +      !getPreferenceModel().isLogTreePanelVisible());
     }
   
     public void saveSettings() {
  @@ -1828,11 +1842,8 @@
       }
     }
   
  -  /**
  -   * @return
  -   */
     public boolean isLogTreePanelVisible() {
  -    return logTreePanel.isVisible();
  +    return getPreferenceModel().isLogTreePanelVisible();
     }
   
     /* (non-Javadoc)
  @@ -1946,20 +1957,6 @@
     }
   
     /**
  -   * @param logTreePanelVisible
  -   */
  -  public void setLogTreePanelVisible(boolean logTreePanelVisible) {
  -    boolean oldValue = this.logTreePanelVisible;
  -    this.logTreePanelVisible = logTreePanelVisible;
  -    firePropertyChange(
  -      "logTreePanelVisible", oldValue, this.logTreePanelVisible);
  -  }
  -
  -  public boolean getLogTreePanelVisible() {
  -    return this.logTreePanelVisible;
  -  }
  -
  -  /**
      *
      */
     public void toggleCyclic() {
  @@ -1995,6 +1992,14 @@
             });
         }
       }
  +  }
  +
  +  /**
  +   * Returns this LogPanels Preerence model currently in Use
  +   * @return
  +   */
  +  public final LogPanelPreferenceModel getPreferenceModel() {
  +    return preferenceModel;
     }
   
     private abstract class RefinementFocusRule extends AbstractRule {
  
  
  
  1.5       +93 -20    jakarta-log4j/src/java/org/apache/log4j/chainsaw/LogPanelPreferenceModel.java
  
  Index: LogPanelPreferenceModel.java
  ===================================================================
  RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/chainsaw/LogPanelPreferenceModel.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- LogPanelPreferenceModel.java	3 Oct 2003 03:55:52 -0000	1.4
  +++ LogPanelPreferenceModel.java	9 Oct 2003 04:05:51 -0000	1.5
  @@ -96,6 +96,10 @@
     private String dateFormatPattern = ISO8601;
     private boolean levelIcons = true;
     private Set visibleColumns = new HashSet(ChainsawColumns.getColumnsNames());
  +  private boolean detailPaneVisible = true;
  +  private boolean toolTips = false;
  +  private boolean scrollToBottom = true;
  +  private boolean logTreePanelVisible = true;
   
     /**
      * Returns the Date Pattern string for the alternate date formatter.
  @@ -158,32 +162,34 @@
     public void apply(LogPanelPreferenceModel that) {
       setDateFormatPattern(that.getDateFormatPattern());
       setLevelIcons(that.isLevelIcons());
  -    
  +
       /**
        * First, iterate and ADD new columns, (this means notifications of adds go out first
        * add to the end
        */
       for (Iterator iter = that.visibleColumns.iterator(); iter.hasNext();) {
  -		String column = (String) iter.next();
  -		if(!this.visibleColumns.contains(column)){
  -			setColumnVisible(column, true);
  -		}
  -	}
  -	/**
  -	 * Now go through and apply removals
  -	 */
  -	/**
  -	 * this copy is needed to stop ConcurrentModificationException
  -	 */
  -	Set thisSet = new HashSet(this.visibleColumns);
  -	for (Iterator iter = thisSet.iterator(); iter.hasNext();) {
  -		String column = (String) iter.next();
  -		if(!that.visibleColumns.contains(column)){
  -			setColumnVisible(column, false);
  -		}
  -	}
  -	
  +      String column = (String) iter.next();
  +
  +      if (!this.visibleColumns.contains(column)) {
  +        setColumnVisible(column, true);
  +      }
  +    }
   
  +    /**
  +     * Now go through and apply removals
  +     */
  +    /**
  +     * this copy is needed to stop ConcurrentModificationException
  +     */
  +    Set thisSet = new HashSet(this.visibleColumns);
  +
  +    for (Iterator iter = thisSet.iterator(); iter.hasNext();) {
  +      String column = (String) iter.next();
  +
  +      if (!that.visibleColumns.contains(column)) {
  +        setColumnVisible(column, false);
  +      }
  +    }
     }
   
     /**
  @@ -242,5 +248,72 @@
      */
     public void toggleColumn(String column) {
       setColumnVisible(column, !isColumnVisible(column));
  +  }
  +
  +  /**
  +   * @return
  +   */
  +  public final boolean isDetailPaneVisible() {
  +    return detailPaneVisible;
  +  }
  +
  +  /**
  +   * @param detailPaneVisible
  +   */
  +  public final void setDetailPaneVisible(boolean detailPaneVisible) {
  +    boolean oldValue = this.detailPaneVisible;
  +    this.detailPaneVisible = detailPaneVisible;
  +    propertySupport.firePropertyChange(
  +      "detailPaneVisible", oldValue, this.detailPaneVisible);
  +  }
  +
  +  /**
  +   * @return
  +   */
  +  public final boolean isScrollToBottom() {
  +    return scrollToBottom;
  +  }
  +
  +  /**
  +   * @param scrollToBottom
  +   */
  +  public final void setScrollToBottom(boolean scrollToBottom) {
  +    boolean oldValue = this.scrollToBottom;
  +    this.scrollToBottom = scrollToBottom;
  +    propertySupport.firePropertyChange(
  +      "scrollToBottom", oldValue, this.scrollToBottom);
  +  }
  +
  +  /**
  +   * @return
  +   */
  +  public final boolean isToolTips() {
  +    return toolTips;
  +  }
  +
  +  /**
  +   * @param toolTips
  +   */
  +  public final void setToolTips(boolean toolTips) {
  +    boolean oldValue = this.toolTips;
  +    this.toolTips = toolTips;
  +    propertySupport.firePropertyChange("toolTips", oldValue, this.toolTips);
  +  }
  +
  +  /**
  +   * @return
  +   */
  +  public final boolean isLogTreePanelVisible() {
  +    return logTreePanelVisible;
  +  }
  +
  +  /**
  +   * @param logTreePanelVisible
  +   */
  +  public final void setLogTreePanelVisible(boolean logTreePanelVisible) {
  +    boolean oldValue = this.logTreePanelVisible;
  +    this.logTreePanelVisible = logTreePanelVisible;
  +    propertySupport.firePropertyChange(
  +      "logTreePanelVisible", oldValue, this.logTreePanelVisible);
     }
   }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: log4j-dev-help@jakarta.apache.org