sdeboy      2003/12/14 02:50:44

  Modified:    src/java/org/apache/log4j/chainsaw/rule
                        ExpressionRuleContext.java LevelInequalityRule.java
                        ColorRule.java RuleTest.java
               src/java/org/apache/log4j/chainsaw/filter FilterModel.java
               src/java/org/apache/log4j/chainsaw
                        ChainsawAppenderHandler.java LogPanel.java
               src/java/org/apache/log4j/chainsaw/icons
                        LevelIconFactory.java
               src/java/org/apache/log4j/chainsaw/color ColorPanel.java
                        RuleColorizer.java
               src/java/org/apache/log4j UtilLoggingLevel.java
  Log:
  Finished imlementation of load/save of color rulesets, although creation of new 
rulesets are not yet supported (only each panel's default color ruleset is saved).
  Minor cleanup in other classes
  
  Revision  Changes    Path
  1.4       +0 -3      
jakarta-log4j/src/java/org/apache/log4j/chainsaw/rule/ExpressionRuleContext.java
  
  Index: ExpressionRuleContext.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-log4j/src/java/org/apache/log4j/chainsaw/rule/ExpressionRuleContext.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ExpressionRuleContext.java        4 Dec 2003 08:53:02 -0000       1.3
  +++ ExpressionRuleContext.java        14 Dec 2003 10:50:44 -0000      1.4
  @@ -73,7 +73,6 @@
   public class ExpressionRuleContext extends KeyAdapter {
     RuleFactory factory = RuleFactory.getInstance();
     LoggingEventFieldResolver resolver = LoggingEventFieldResolver.getInstance();
  -  String lastField = null;
     JPopupMenu contextMenu = new JPopupMenu();
     JList list = new JList();
     FilterModel filterModel;
  @@ -143,8 +142,6 @@
     }
   
     private void updateField(String value) {
  -    String text = textField.getText();
  -
       if (textField.getSelectedText() == null) {
         value = value + " ";
       }
  
  
  
  1.5       +6 -5      
jakarta-log4j/src/java/org/apache/log4j/chainsaw/rule/LevelInequalityRule.java
  
  Index: LevelInequalityRule.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-log4j/src/java/org/apache/log4j/chainsaw/rule/LevelInequalityRule.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- LevelInequalityRule.java  9 Nov 2003 09:59:27 -0000       1.4
  +++ LevelInequalityRule.java  14 Dec 2003 10:50:44 -0000      1.5
  @@ -68,7 +68,6 @@
   public class LevelInequalityRule extends AbstractRule {
     private static final LoggingEventFieldResolver resolver = 
LoggingEventFieldResolver.getInstance();
     private final Level level;
  -  private final String value;
     private final List utilList = new LinkedList();
     private final List levelList = new LinkedList();
     private final String inequalitySymbol;
  @@ -94,7 +93,6 @@
       }
   
       this.inequalitySymbol = inequalitySymbol;
  -    this.value = value;
     }
   
     public static Rule getRule(String inequalitySymbol, String field, String value) {
  @@ -110,9 +108,12 @@
   
     public boolean evaluate(LoggingEvent event) {
       //use the type of the first level to access the static toLevel method on the 
second param
  -    Level level2 =
  -      level.toLevel(
  -        resolver.getValue("LEVEL", event).toString());
  +    Level level2 = null;
  +    if (level instanceof UtilLoggingLevel) {
  +        level2 = UtilLoggingLevel.toLevel(resolver.getValue("LEVEL", 
event).toString());
  +    } else { 
  +        level2 = Level.toLevel(resolver.getValue("LEVEL", event).toString());
  +    }
   
       boolean result = false;
       int first = level2.toInt();
  
  
  
  1.3       +13 -6     
jakarta-log4j/src/java/org/apache/log4j/chainsaw/rule/ColorRule.java
  
  Index: ColorRule.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-log4j/src/java/org/apache/log4j/chainsaw/rule/ColorRule.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ColorRule.java    4 Dec 2003 08:53:02 -0000       1.2
  +++ ColorRule.java    14 Dec 2003 10:50:44 -0000      1.3
  @@ -49,9 +49,10 @@
   
   package org.apache.log4j.chainsaw.rule;
   
  -import org.apache.log4j.spi.LoggingEvent;
  -
   import java.awt.Color;
  +import java.io.Serializable;
  +
  +import org.apache.log4j.spi.LoggingEvent;
   
   
   /**
  @@ -59,16 +60,18 @@
    *
    * @author Scott Deboy <[EMAIL PROTECTED]>
    */
  -public class ColorRule extends AbstractRule {
  +public class ColorRule extends AbstractRule implements Serializable {
     private final Rule rule;
     private final Color foregroundColor;
     private final Color backgroundColor;
  +  private final String expression;
   
     public ColorRule(Rule rule, Color backgroundColor) {
  -    this(rule, backgroundColor, null);
  +    this(null, rule, backgroundColor, null);
     }
   
  -  public ColorRule(Rule rule, Color backgroundColor, Color foregroundColor) {
  +  public ColorRule(String expression, Rule rule, Color backgroundColor, Color 
foregroundColor) {
  +    this.expression = expression;
       this.rule = rule;
       this.backgroundColor = backgroundColor;
       this.foregroundColor = foregroundColor;
  @@ -85,12 +88,16 @@
     public Color getBackgroundColor() {
       return backgroundColor;
     }
  +  
  +  public String getExpression() {
  +      return expression;
  +  }
   
     public boolean evaluate(LoggingEvent event) {
       return (rule != null && rule.evaluate(event));
     }
     
     public String toString() {
  -      return "color rule " + rule + " bg: " + backgroundColor + " fg: " + 
foregroundColor;
  +      return "color rule - expression: " + expression+", rule: " + rule + " bg: " + 
backgroundColor + " fg: " + foregroundColor;
     }
   }
  
  
  
  1.17      +6 -14     
jakarta-log4j/src/java/org/apache/log4j/chainsaw/rule/RuleTest.java
  
  Index: RuleTest.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-log4j/src/java/org/apache/log4j/chainsaw/rule/RuleTest.java,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- RuleTest.java     9 Nov 2003 09:59:27 -0000       1.16
  +++ RuleTest.java     14 Dec 2003 10:50:44 -0000      1.17
  @@ -53,7 +53,6 @@
   import org.apache.log4j.Logger;
   import org.apache.log4j.MDC;
   import org.apache.log4j.chainsaw.ChainsawConstants;
  -import org.apache.log4j.chainsaw.LoggingEventFieldResolver;
   import org.apache.log4j.chainsaw.filter.FilterModel;
   import org.apache.log4j.spi.LoggingEvent;
   
  @@ -95,9 +94,6 @@
       setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
       getContentPane().setLayout(new BorderLayout());
   
  -    LoggingEventFieldResolver resolver =
  -      LoggingEventFieldResolver.getInstance();
  -
       filterModel = new FilterModel();
   
       final List eventList = new ArrayList();
  @@ -179,15 +175,15 @@
           public void actionPerformed(ActionEvent evt) {
             results.setText("");
   
  -          Iterator iter = eventList.iterator();
  +          Iterator iter2 = eventList.iterator();
   
  -          while (iter.hasNext()) {
  -            LoggingEvent event = (LoggingEvent) iter.next();
  -            Iterator iter2 = event.getMDCKeySet().iterator();
  +          while (iter2.hasNext()) {
  +            LoggingEvent event = (LoggingEvent) iter2.next();
  +            Iterator iter3 = event.getMDCKeySet().iterator();
               StringBuffer mdc = new StringBuffer();
   
  -            while (iter2.hasNext()) {
  -              String mdcKey = (String) iter2.next();
  +            while (iter3.hasNext()) {
  +              String mdcKey = (String) iter3.next();
                 mdc.append(mdcKey);
                 mdc.append(":");
                 mdc.append(event.getMDC(mdcKey));
  @@ -205,10 +201,6 @@
   
       getContentPane().add(fieldPanel, BorderLayout.NORTH);
       getContentPane().add(resultsPanel, BorderLayout.CENTER);
  -  }
  -
  -  private void setRule(Rule rule) {
  -    this.rule = rule;
     }
   
     public static void main(String[] args) {
  
  
  
  1.5       +0 -19     
jakarta-log4j/src/java/org/apache/log4j/chainsaw/filter/FilterModel.java
  
  Index: FilterModel.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-log4j/src/java/org/apache/log4j/chainsaw/filter/FilterModel.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- FilterModel.java  2 Nov 2003 19:53:48 -0000       1.4
  +++ FilterModel.java  14 Dec 2003 10:50:44 -0000      1.5
  @@ -52,9 +52,6 @@
   import org.apache.log4j.spi.LocationInfo;
   import org.apache.log4j.spi.LoggingEvent;
   
  -import javax.swing.event.EventListenerList;
  -
  -
   /**
    * This class is used as a Model for Filtering, and retains the unique entries that
    * come through over a set of LoggingEvents
  @@ -63,10 +60,8 @@
    * @author Scott Deboy <[EMAIL PROTECTED]>
    */
   public class FilterModel {
  -  //  private Map eventTypeMap = new HashMap();
     private EventTypeEntryContainer eventContainer =
       new EventTypeEntryContainer();
  -  private EventListenerList eventListenerList = new EventListenerList();
   
     public void processNewLoggingEvent(String eventType, LoggingEvent event) {
       EventTypeEntryContainer container = getContainer(eventType);
  @@ -86,24 +81,10 @@
     }
   
     public EventTypeEntryContainer getContainer() {
  -    //    if(eventTypeMap.size()>0){
  -    //        return (EventTypeEntryContainer) 
eventTypeMap.values().iterator().next();
  -    //    }   
       return eventContainer;
     }
   
     EventTypeEntryContainer getContainer(String eventType) {
       return this.eventContainer;
  -
  -    //    EventTypeEntryContainer container = null;
  -    //
  -    //    if (eventTypeMap.containsKey(eventType)) {
  -    //      container = (EventTypeEntryContainer) eventTypeMap.get(eventType);
  -    //    } else {
  -    //      container = new EventTypeEntryContainer();
  -    //      eventTypeMap.put(eventType, container);
  -    //    }
  -    //
  -    //    return container;
     }
   }
  
  
  
  1.11      +30 -26    
jakarta-log4j/src/java/org/apache/log4j/chainsaw/ChainsawAppenderHandler.java
  
  Index: ChainsawAppenderHandler.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-log4j/src/java/org/apache/log4j/chainsaw/ChainsawAppenderHandler.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- ChainsawAppenderHandler.java      11 Dec 2003 05:45:59 -0000      1.10
  +++ ChainsawAppenderHandler.java      14 Dec 2003 10:50:44 -0000      1.11
  @@ -49,8 +49,16 @@
   
   package org.apache.log4j.chainsaw;
   
  +import org.apache.log4j.AppenderSkeleton;
  +import org.apache.log4j.LogManager;
  +import org.apache.log4j.helpers.LogLog;
  +import org.apache.log4j.net.SocketReceiver;
  +import org.apache.log4j.plugins.PluginRegistry;
  +import org.apache.log4j.spi.LoggingEvent;
  +
   import java.beans.PropertyChangeListener;
   import java.beans.PropertyChangeSupport;
  +
   import java.util.ArrayList;
   import java.util.Collection;
   import java.util.Iterator;
  @@ -59,13 +67,6 @@
   
   import javax.swing.event.EventListenerList;
   
  -import org.apache.log4j.AppenderSkeleton;
  -import org.apache.log4j.LogManager;
  -import org.apache.log4j.helpers.LogLog;
  -import org.apache.log4j.net.SocketReceiver;
  -import org.apache.log4j.plugins.PluginRegistry;
  -import org.apache.log4j.spi.LoggingEvent;
  -
   
   /**
    * A handler class that either extends a particular appender hierarchy or can be 
bound
  @@ -77,34 +78,33 @@
    *
    */
   public class ChainsawAppenderHandler extends AppenderSkeleton {
  -  private ChainsawAppender appender;
  +  private static final String DEFAULT_IDENTIFIER = "Unknown";
     private WorkQueue worker;
     private final Object mutex = new Object();
     private int sleepInterval = 1000;
     private EventListenerList listenerList = new EventListenerList();
     private double dataRate = 0.0;
  -  private String identifierExpression = "UNKNOWN";
  -  private final LoggingEventFieldResolver resolver = 
LoggingEventFieldResolver.getInstance();
  -   
  +  private String identifierExpression;
  +  private final LoggingEventFieldResolver resolver =
  +    LoggingEventFieldResolver.getInstance();
     private PropertyChangeSupport propertySupport =
       new PropertyChangeSupport(this);
   
     public ChainsawAppenderHandler(ChainsawAppender appender) {
  -    this.appender = appender;
       appender.addAppender(this);
       activateOptions();
     }
  -  
  +
  +  public ChainsawAppenderHandler() {
  +    activateOptions();
  +  }
  +
     public void setIdentifierExpression(String identifierExpression) {
  -      this.identifierExpression = identifierExpression;
  +    this.identifierExpression = identifierExpression;
     }
  -  
  +
     public String getIdentifierExpression() {
  -      return identifierExpression;
  -  }
  -  
  -  public ChainsawAppenderHandler() {
  -    activateOptions();
  +    return identifierExpression;
     }
   
     public void addEventBatchListener(EventBatchListener l) {
  @@ -154,8 +154,10 @@
      * @param event
      * @return identifier
      */
  -  private String getTabIdentifier(LoggingEvent e) {
  -        return resolver.applyFields(identifierExpression, e);
  +  String getTabIdentifier(LoggingEvent e) {
  +    String ident = resolver.applyFields(identifierExpression, e);
  +
  +    return ((ident != null) ? ident : DEFAULT_IDENTIFIER);
     }
   
     /**
  @@ -202,7 +204,7 @@
     /**
      * @param dataRate
      */
  -  private void setDataRate(double dataRate) {
  +  void setDataRate(double dataRate) {
       double oldValue = this.dataRate;
       this.dataRate = dataRate;
       propertySupport.firePropertyChange(
  @@ -249,7 +251,7 @@
      * processes all events accumulated during that time..
      */
     class WorkQueue {
  -    private final ArrayList queue = new ArrayList();
  +    final ArrayList queue = new ArrayList();
       Thread workerThread;
   
       protected WorkQueue() {
  @@ -310,10 +312,12 @@
                 LoggingEvent e = (LoggingEvent) iter.next();
                 Vector properties = new Vector();
                 Iterator iterx = e.getPropertyKeySet().iterator();
  +
                 while (iterx.hasNext()) {
  -                  String thisProp = iterx.next().toString();
  -                  properties.add(thisProp +" " + e.getProperty(thisProp));
  +                String thisProp = iterx.next().toString();
  +                properties.add(thisProp + " " + e.getProperty(thisProp));
                 }
  +
                 eventBatch.addEvent(
                   getTabIdentifier(e),
                   (e.getProperty(ChainsawConstants.EVENT_TYPE_KEY) == null)
  
  
  
  1.33      +19 -16    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.32
  retrieving revision 1.33
  diff -u -r1.32 -r1.33
  --- LogPanel.java     14 Dec 2003 02:40:18 -0000      1.32
  +++ LogPanel.java     14 Dec 2003 10:50:44 -0000      1.33
  @@ -98,6 +98,7 @@
   import java.util.Map;
   import java.util.Set;
   import java.util.StringTokenizer;
  +import java.util.Vector;
   
   import javax.swing.AbstractAction;
   import javax.swing.Action;
  @@ -287,26 +288,29 @@
       colorFrame.setTitle("'" + ident + "' Color Filter");
       colorFrame.setIconImage(
         ((ImageIcon) ChainsawIcons.ICON_PREFERENCES).getImage());
  +
  +      renderer = new TableColorizingRenderer(colorizer);
  +      colorPanel = new ColorPanel(colorizer, filterModel);
  +    
  +      colorFrame.getContentPane().add(colorPanel);
  +
  +      colorPanel.setCloseActionListener(
  +        new ActionListener() {
  +          public void actionPerformed(ActionEvent e) {
  +            colorFrame.setVisible(false);
  +          }
  +        });
  +
       colorizer.addPropertyChangeListener(new PropertyChangeListener() {
                public void propertyChange(PropertyChangeEvent evt) {
                        if (evt.getPropertyName().equalsIgnoreCase("colorrule")) {
                   if (table != null) {
                       table.repaint();
                   }
  +                colorPanel.updateColors();
               }
           }}
       );
  -    renderer = new TableColorizingRenderer(colorizer);
  -    colorPanel = new ColorPanel(colorizer, filterModel);
  -    
  -    colorFrame.getContentPane().add(colorPanel);
  -
  -    colorPanel.setCloseActionListener(
  -      new ActionListener() {
  -        public void actionPerformed(ActionEvent e) {
  -          colorFrame.setVisible(false);
  -        }
  -      });
       
       preferencesFrame.setSize(640, 480);
   
  @@ -1471,7 +1475,7 @@
          o = new ObjectOutputStream(
                  new BufferedOutputStream(new FileOutputStream(f)));
   
  -       o.writeObject(colorizer.getColors());
  +       o.writeObject(colorizer.getRules());
          o.flush();
        } catch (FileNotFoundException fnfe) {
          fnfe.printStackTrace();
  @@ -1663,6 +1667,7 @@
     }
   
     void loadColorSettings(String ident) {
  +    System.out.println("loading colors for " + ident);
        File f =
          new File(
                SettingsManager.getInstance().getSettingsDirectory() + File.separator
  @@ -1675,10 +1680,8 @@
                s = new ObjectInputStream(
                        new BufferedInputStream(new FileInputStream(f)));
   
  -             while (true) {
  -               Map map = (Map) s.readObject();
  -               colorizer.setColors(map);
  -             }
  +        Map map = (Map) s.readObject();
  +         colorizer.setRules(map);
          } catch (EOFException eof) { //end of file - ignore..
          }catch (IOException ioe) {
                ioe.printStackTrace();
  
  
  
  1.3       +0 -7      
jakarta-log4j/src/java/org/apache/log4j/chainsaw/icons/LevelIconFactory.java
  
  Index: LevelIconFactory.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-log4j/src/java/org/apache/log4j/chainsaw/icons/LevelIconFactory.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- LevelIconFactory.java     10 Dec 2003 00:01:23 -0000      1.2
  +++ LevelIconFactory.java     14 Dec 2003 10:50:44 -0000      1.3
  @@ -49,21 +49,15 @@
   
   package org.apache.log4j.chainsaw.icons;
   
  -import org.apache.log4j.Level;
  -
   import java.awt.Image;
  -
   import java.net.URL;
   import java.util.HashMap;
   import java.util.Map;
   
   import javax.swing.ImageIcon;
  -import javax.swing.LookAndFeel;
   import javax.swing.UIManager;
  -import javax.swing.UIManager.LookAndFeelInfo;
   import javax.swing.plaf.metal.MetalLookAndFeel;
   
  -
   /**
    */
   public class LevelIconFactory {
  @@ -74,7 +68,6 @@
       String[] iconFileNames =
         new String[] { "Warn.gif", "Inform.gif", "Error.gif" };
       String[] iconLabels = new String[] { "WARN", "INFO", "ERROR" };
  -    Level[] levels = new Level[] { Level.WARN, Level.INFO, Level.ERROR };
   
       for (int i = 0; i < iconLabels.length; i++) {
         URL resourceURL = UIManager.getLookAndFeel().getClass().getResource(
  
  
  
  1.8       +84 -73    
jakarta-log4j/src/java/org/apache/log4j/chainsaw/color/ColorPanel.java
  
  Index: ColorPanel.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-log4j/src/java/org/apache/log4j/chainsaw/color/ColorPanel.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- ColorPanel.java   13 Dec 2003 02:57:23 -0000      1.7
  +++ ColorPanel.java   14 Dec 2003 10:50:44 -0000      1.8
  @@ -60,8 +60,10 @@
   import java.awt.event.ActionListener;
   import java.awt.event.ItemEvent;
   import java.awt.event.ItemListener;
  +import java.util.ArrayList;
   import java.util.HashMap;
   import java.util.Iterator;
  +import java.util.List;
   import java.util.Map;
   import java.util.Vector;
   
  @@ -111,13 +113,15 @@
     private RuleColorizer colorizer;
     private JPanel ruleSetsPanel;
     private JPanel rulesPanel;
  -  private JPanel ruleSettingsPanel;
     private FilterModel filterModel;
     private DefaultTableModel tableModel;
     private JScrollPane tableScrollPane;
     private JTable table;
     private ActionListener closeListener;
     private JLabel statusBar;
  +  private Vector columns;
  +  private String currentRuleSet = "Default";
  +  private DefaultListModel ruleSetListModel;
   
     public ColorPanel(
       final RuleColorizer colorizer, final FilterModel filterModel) {
  @@ -126,55 +130,31 @@
       this.colorizer = colorizer;
       this.filterModel = filterModel;
   
  -     Vector data = new Vector();
  -    if (colorizer.getColors() != null && colorizer.getColors().size() > 0) {
  -     System.out.println("FOUND COLORS");
  -     Iterator iter = colorizer.getColors().entrySet().iterator();
  -     while (iter.hasNext()) {
  -             Map.Entry entry = (Map.Entry)iter.next();
  -             String expression = entry.getKey().toString();
  -             ColorRule rule = (ColorRule)entry.getValue();
  -             System.out.println("found " + expression +".."+ rule);
  -             Vector v = new Vector();
  -             v.add(expression);
  -             v.add(rule);
  -             data.add(v);
  -     }
  -     
  -     
  -    } else {
  -    //apply a set of defaults for now, (eventually color rules will be loaded from 
disk)
  -    Vector data1 = new Vector();
  -    data1.add("level == FATAL || level == ERROR");
  -    data1.add(new Color(147, 22, 0));
  -    data1.add(Color.white);
  -
  -    Vector data2 = new Vector();
  -    data2.add("level == WARN");
  -    data2.add(Color.yellow.brighter());
  -    data2.add(Color.black);
  +    tableModel = new DefaultTableModel();
  +    table = new JTable(tableModel);
   
  -    data.add(data1);
  -    data.add(data2);
  -    }
  +    ruleSetListModel = new DefaultListModel();
  +    
  +    columns = new Vector();
  +    columns.add("Expression");
  +    columns.add("Background");
  +    columns.add("Foreground");
  +
  +    table.setPreferredScrollableViewportSize(new Dimension(400, 200));
  +    tableScrollPane = new JScrollPane(table);
  +
  +    Vector data = getColorizerVector();    
  +    tableModel.setDataVector(data, columns);
   
  -    table = buildTable(data);
       table.sizeColumnsToFit(0);
       table.getColumnModel().getColumn(1).setPreferredWidth(70);
       table.getColumnModel().getColumn(2).setPreferredWidth(70);
       table.getColumnModel().getColumn(1).setMaxWidth(70);
       table.getColumnModel().getColumn(2).setMaxWidth(70);
  -    statusBar = new JLabel("Ruleset support not yet implemented");
   
  -    applyRules("default");
  -
  -    table.setToolTipText("Click to edit");
  -    table.setRowHeight(20);
  -    table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
  -    table.setColumnSelectionAllowed(false);
  +    configureTable();
   
  -    table.setPreferredScrollableViewportSize(new Dimension(400, 200));
  -    tableScrollPane = new JScrollPane(table);
  +    statusBar = new JLabel("Ruleset support not yet implemented");
   
       ruleSetsPanel = buildRuleSetsPanel();
       ruleSetsPanel.setAlignmentX(Component.LEFT_ALIGNMENT);
  @@ -230,6 +210,38 @@
       f.pack();
       f.setVisible(true);
     }
  +  
  +  public void updateColors() {
  +    tableModel.getDataVector().clear();
  +    tableModel.getDataVector().addAll(getColorizerVector());
  +  }
  +  
  +  private Vector getColorizerVector() {
  +      Vector data = new Vector();
  +      Map map = colorizer.getRules();
  +      Iterator iter = map.entrySet().iterator();
  +      ruleSetListModel.removeAllElements();
  +      while (iter.hasNext()) {
  +        Map.Entry entry = (Map.Entry)iter.next();
  +        System.out.println("entry is " + entry);
  +        //update ruleset list
  +        ruleSetListModel.addElement(entry.getKey());
  +        if (entry.getKey().equals(currentRuleSet)) {
  +            System.out.println("entry value is "+ entry.getValue());
  +            Iterator iter2 = ((List)entry.getValue()).iterator();
  +      
  +            while (iter2.hasNext()) {
  +                ColorRule rule = (ColorRule)iter2.next();
  +                Vector v = new Vector();
  +                v.add(rule.getExpression());
  +                v.add(rule.getBackgroundColor());
  +                v.add(rule.getForegroundColor());
  +                data.add(v);
  +            }
  +         }
  +      }
  +      return data;
  +  }
   
     private Vector getDefaultColors() {
       Vector vec = new Vector();
  @@ -271,7 +283,12 @@
       return vec;
     }
   
  -  private JTable buildTable(Vector data) {
  +  private void configureTable() {
  +    table.setToolTipText("Click to edit");
  +    table.setRowHeight(20);
  +    table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
  +    table.setColumnSelectionAllowed(false);
  +
       Vector backgroundColors = getDefaultColors();
       Vector foregroundColors = getDefaultColors();
       backgroundColors.add("Browse...");
  @@ -285,15 +302,6 @@
       foreground.setMaximumRowCount(15);
       foreground.setRenderer(new ColorListCellRenderer());
   
  -    Vector cols = new Vector();
  -    cols.add("Expression");
  -    cols.add("Background");
  -    cols.add("Foreground");
  -
  -    tableModel = new DefaultTableModel(data, cols);
  -
  -    JTable table = new JTable(tableModel);
  -
       DefaultCellEditor backgroundEditor = new DefaultCellEditor(background);
       DefaultCellEditor foregroundEditor = new DefaultCellEditor(foreground);
       JTextField textField = new JTextField();
  @@ -313,8 +321,6 @@
         new ColorTableCellRenderer());
       table.getColumnModel().getColumn(2).setCellRenderer(
         new ColorTableCellRenderer());
  -
  -    return table;
     }
   
     public void setCloseActionListener(ActionListener listener) {
  @@ -331,7 +337,7 @@
       table.getColumnModel().getColumn(0).getCellEditor().stopCellEditing();
       colorizer.clear();
   
  -    Map map = new HashMap();
  +    List list = new ArrayList();
       Vector vector = tableModel.getDataVector();
       StringBuffer result = new StringBuffer();
   
  @@ -351,8 +357,8 @@
             foreground = (Color) v.elementAt(2);
           }
   
  -        ColorRule r = new ColorRule(expressionRule, background, foreground);
  -        map.put(v.elementAt(0), r);
  +        ColorRule r = new ColorRule((String)v.elementAt(0), expressionRule, 
background, foreground);
  +        list.add(r);
         } catch (IllegalArgumentException iae) {
           if (!result.toString().equals("")) {
             result.append("<br>");
  @@ -371,6 +377,8 @@
         ((ExpressionTableCellRenderer) 
table.getColumnModel().getColumn(0).getCellRenderer())
         .setToolTipText("<html>" + result.toString() + "</html>");
       }
  +    Map map = new HashMap();
  +    map.put(ruleSet, list);
   
       colorizer.addRules(map);
     }
  @@ -385,7 +393,7 @@
       applyButton.addActionListener(
         new AbstractAction() {
           public void actionPerformed(ActionEvent evt) {
  -          applyRules("default");
  +          applyRules(currentRuleSet);
           }
         });
   
  @@ -496,13 +504,10 @@
     JPanel buildRuleSetsPanel() {
       JPanel panel = new JPanel(new BorderLayout());
   
  -    DefaultListModel listModel = new DefaultListModel();
  -    listModel.addElement("Default");
  -
       JLabel ruleSetLabel = new JLabel("RuleSets:");
       panel.add(ruleSetLabel, BorderLayout.NORTH);
   
  -    final JList list = new JList(listModel);
  +    final JList list = new JList(ruleSetListModel);
       JScrollPane scrollPane = new JScrollPane(list);
       list.setEnabled(false);
   
  @@ -537,7 +542,7 @@
       panel.add(ruleSetLabel);
   
       JTextField ruleSetTextField = new JTextField(20);
  -    ruleSetTextField.setText("Default");
  +    ruleSetTextField.setText(currentRuleSet);
       ruleSetTextField.setAlignmentX(Component.LEFT_ALIGNMENT);
       ruleSetTextField.setEnabled(false);
   
  @@ -587,9 +592,6 @@
             int index = table.getSelectionModel().getMaxSelectionIndex();
   
             if ((index > -1) && (index < table.getRowCount())) {
  -            Vector v = tableModel.getDataVector();
  -            Vector row = (Vector) v.elementAt(index);
  -
               tableModel.removeRow(index);
   
               if (index > 0) {
  @@ -668,6 +670,7 @@
       JComboBox box;
       JDialog dialog;
       JColorChooser colorChooser;
  +    Color lastColor;
   
       ColorItemListener(final JComboBox box) {
         this.box = box;
  @@ -684,7 +687,7 @@
             }, //OK button handler
             new ActionListener() {
               public void actionPerformed(ActionEvent e) {
  -              box.setSelectedIndex(0);
  +                box.setSelectedItem(lastColor);
               }
             }); //CANCEL button handler
         dialog.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
  @@ -697,32 +700,40 @@
             repaint();
           } else {
             box.setBackground(Color.white);
  +          colorChooser.setColor((Color)table.getValueAt(table.getSelectedRow(), 
table.getSelectedColumn()));
  +          lastColor = (Color)table.getValueAt(table.getSelectedRow(), 
table.getSelectedColumn());
             dialog.setVisible(true);
           }
         }
       }
     }
   
  -  class ColorTableCellRenderer extends JPanel implements TableCellRenderer {
  +  class ColorTableCellRenderer implements TableCellRenderer {
       Border border;
  +    JPanel panel;
       
       ColorTableCellRenderer() {
  -        setOpaque(true);
  +        panel = new JPanel();
  +        panel.setOpaque(true);
  +    }
  +
  +    public Color getCurrentColor() {
  +        return panel.getBackground();
       }
   
       public Component getTableCellRendererComponent(
  -      JTable table, Object value, boolean isSelected, boolean hasFocus, int row,
  +      JTable thisTable, Object value, boolean isSelected, boolean hasFocus, int row,
         int column) {
         if (value instanceof Color) {
  -        setBackground((Color) value);
  +        panel.setBackground((Color) value);
         }
         if (border == null) {
           border = BorderFactory.createMatteBorder(2, 2, 2, 2, table.getBackground());
         }
   
  -      setBorder(border);
  +      panel.setBorder(border);
   
  -      return this;
  +      return panel;
       }
     }
   
  @@ -746,7 +757,7 @@
       }
   
       public Component getTableCellRendererComponent(
  -      JTable table, Object value, boolean isSelected, boolean hasFocus, int row,
  +      JTable thisTable, Object value, boolean isSelected, boolean hasFocus, int row,
         int column) {
   
         Vector v = tableModel.getDataVector();
  
  
  
  1.3       +72 -30    
jakarta-log4j/src/java/org/apache/log4j/chainsaw/color/RuleColorizer.java
  
  Index: RuleColorizer.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-log4j/src/java/org/apache/log4j/chainsaw/color/RuleColorizer.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- RuleColorizer.java        13 Dec 2003 02:57:23 -0000      1.2
  +++ RuleColorizer.java        14 Dec 2003 10:50:44 -0000      1.3
  @@ -52,11 +52,14 @@
   import java.awt.Color;
   import java.beans.PropertyChangeListener;
   import java.beans.PropertyChangeSupport;
  +import java.util.ArrayList;
   import java.util.HashMap;
   import java.util.Iterator;
  +import java.util.List;
   import java.util.Map;
   
   import org.apache.log4j.chainsaw.rule.ColorRule;
  +import org.apache.log4j.chainsaw.rule.ExpressionRule;
   import org.apache.log4j.spi.LoggingEvent;
   
   
  @@ -67,65 +70,104 @@
    * @author Scott Deboy <[EMAIL PROTECTED]>
    */
   public class RuleColorizer implements Colorizer {
  -  private Map ruleMap = new HashMap();
  +  private Map rules;
     private final PropertyChangeSupport colorChangeSupport =
       new PropertyChangeSupport(this);
  +  private Map defaultRules = new HashMap();
  +  private static final String DEFAULT_NAME = "Default";
  +  private String currentRuleSet = DEFAULT_NAME;
   
     public RuleColorizer() {
  +      List rulesList = new ArrayList();
  +      
  +      String expression = "level == FATAL || level == ERROR";
  +      rulesList.add(new ColorRule(expression, 
ExpressionRule.getRule(expression),new Color(147, 22, 0), Color.white));
  +      expression = "level == WARN";
  +      rulesList.add(new ColorRule(expression, 
ExpressionRule.getRule(expression),Color.yellow.brighter(), Color.black));
  +      defaultRules.put(DEFAULT_NAME, rulesList);
  +      setRules(defaultRules);
     }
     
  -  public void setColors(Map ruleMap) {
  -     this.ruleMap = ruleMap;
  +  public void setRules(Map rules) {
  +     this.rules = rules;
  +    colorChangeSupport.firePropertyChange("colorrule", false, true);
     }
     
  -  public Map getColors() {
  -     return ruleMap;
  +  public Map getRules() {
  +     return rules;
     }
   
  -  public void addRules(Map rules) {
  -     Iterator iter = rules.entrySet().iterator();
  -     while (iter.hasNext()) {
  -             Map.Entry entry = (Map.Entry)iter.next();
  -             ruleMap.put(entry.getKey(), entry.getValue());
  -     }
  +  public void addRules(Map newRules) {
  +      Iterator iter = newRules.entrySet().iterator();
  +      while (iter.hasNext()) {
  +          Map.Entry entry = (Map.Entry)iter.next();
  +          if (rules.containsKey(entry.getKey())) {
  +              ((List)rules.get(entry.getKey())).addAll((List)entry.getValue());
  +          } else {
  +              rules.put(entry.getKey(), entry.getValue());
  +          }
  +      }
       colorChangeSupport.firePropertyChange("colorrule", false, true);
     }
   
  -  public void addRule(String expression, ColorRule rule) {
  -    ruleMap.put(expression, rule);
  +  public void addRule(String ruleSetName, ColorRule rule) {
  +   if (rules.containsKey(ruleSetName)) {
  +    ((List)rules.get(ruleSetName)).add(rule);
  +   } else {
  +       List list = new ArrayList();
  +       list.add(rule);
  +       rules.put(ruleSetName, list);
  +   }
       colorChangeSupport.firePropertyChange("colorrule", false, true);
     }
   
     public void clear() {
  -    ruleMap.clear();
  +    rules.clear();
     }
   
  -  public void removeRule(String expression) {
  -    ruleMap.remove(expression);
  +  public void removeRule(String ruleSetName, String expression) {
  +    if (rules.containsKey(ruleSetName)) {
  +        List list = (List)rules.get(ruleSetName);
  +        for (int i = 0;i<list.size();i++) {
  +            ColorRule rule = (ColorRule)list.get(i);
  +            if (rule.getExpression().equals(expression)) {
  +                list.remove(rule);
  +                return;
  +            }
  +        }
  +    }
  +  }
  +  
  +  public void setCurrentRuleSet(String ruleSetName) {
  +      currentRuleSet = ruleSetName;
     }
   
     public Color getBackgroundColor(LoggingEvent event) {
  -     Iterator iter = ruleMap.values().iterator();
  -     while (iter.hasNext()) {
  -      ColorRule rule = (ColorRule) iter.next();
  -
  -      if ((rule.getBackgroundColor() != null) && (rule.evaluate(event))) {
  -        return rule.getBackgroundColor();
  -      }
  +    if (rules.containsKey(currentRuleSet)) {
  +        List list = (List)rules.get(currentRuleSet);    
  +         Iterator iter = list.iterator();
  +         while (iter.hasNext()) {
  +            ColorRule rule = (ColorRule) iter.next();
  +            if ((rule.getBackgroundColor() != null) && (rule.evaluate(event))) {
  +                return rule.getBackgroundColor();
  +            }
  +        }
       }
   
       return null;
     }
   
     public Color getForegroundColor(LoggingEvent event) {
  -     Iterator iter = ruleMap.values().iterator();
  -     while (iter.hasNext()) {
  -       ColorRule rule = (ColorRule) iter.next();
  -
  -      if ((rule.getForegroundColor() != null) && (rule.evaluate(event))) {
  -        return rule.getForegroundColor();
  +      if (rules.containsKey(currentRuleSet)) {
  +        List list = (List)rules.get(currentRuleSet);
  +        Iterator iter = list.iterator();
  +        while (iter.hasNext()) {
  +          ColorRule rule = (ColorRule) iter.next();
  +          if ((rule.getForegroundColor() != null) && (rule.evaluate(event))) {
  +            return rule.getForegroundColor();
  +          }
  +        }
         }
  -    }
   
       return null;
     }
  
  
  
  1.3       +1 -1      jakarta-log4j/src/java/org/apache/log4j/UtilLoggingLevel.java
  
  Index: UtilLoggingLevel.java
  ===================================================================
  RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/UtilLoggingLevel.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- UtilLoggingLevel.java     2 Nov 2003 19:53:48 -0000       1.2
  +++ UtilLoggingLevel.java     14 Dec 2003 10:50:44 -0000      1.3
  @@ -111,7 +111,7 @@
         return FINEST;
   
       default:
  -      return FINEST;
  +      return defaultLevel;
       }
     }
   
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to