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]