sdeboy 2003/12/12 18:57:23 Modified: src/java/org/apache/log4j/chainsaw LogUI.java LogPanel.java src/java/org/apache/log4j/chainsaw/color ColorPanel.java RuleColorizer.java src/java/org/apache/log4j/chainsaw/rule AbstractRule.java Log: Adding save support for the color rules - in process. Revision Changes Path 1.52 +1 -0 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.51 retrieving revision 1.52 diff -u -r1.51 -r1.52 --- LogUI.java 12 Dec 2003 10:32:40 -0000 1.51 +++ LogUI.java 13 Dec 2003 02:57:23 -0000 1.52 @@ -159,6 +159,7 @@ private static final String LOOK_AND_FEEL = "LookAndFeel"; private static final String STATUS_BAR = "StatusBar"; static final String COLUMNS_EXTENSION = ".columns"; + static final String COLORS_EXTENSION = ".colors"; private final JFrame preferencesFrame = new JFrame(); private static ChainsawSplash splash; 1.31 +78 -6 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.30 retrieving revision 1.31 diff -u -r1.30 -r1.31 --- LogPanel.java 11 Dec 2003 22:31:29 -0000 1.30 +++ LogPanel.java 13 Dec 2003 02:57:23 -0000 1.31 @@ -212,6 +212,7 @@ private boolean tooltipsEnabled; private final ChainsawStatusBar statusBar; private final JToolBar undockedToolbar; + private RuleColorizer colorizer = new RuleColorizer(); public LogPanel( final ChainsawStatusBar statusBar, final String ident, String eventType) { @@ -286,7 +287,6 @@ colorFrame.setTitle("'" + ident + "' Color Filter"); colorFrame.setIconImage( ((ImageIcon) ChainsawIcons.ICON_PREFERENCES).getImage()); - RuleColorizer colorizer = new RuleColorizer(); colorizer.addPropertyChangeListener(new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent evt) { if (evt.getPropertyName().equalsIgnoreCase("colorrule")) { @@ -1482,6 +1482,35 @@ } } saveColumnSettings(); + saveColorSettings(); + } + + void saveColorSettings() { + ObjectOutputStream o = null; + + try { + File f = + new File( + SettingsManager.getInstance().getSettingsDirectory() + + File.separator + getIdentifier() + LogUI.COLORS_EXTENSION); + o = new ObjectOutputStream( + new BufferedOutputStream(new FileOutputStream(f))); + + o.writeObject(colorizer.getColors()); + o.flush(); + } catch (FileNotFoundException fnfe) { + fnfe.printStackTrace(); + } catch (IOException ioe) { + ioe.printStackTrace(); + } finally { + try { + if (o != null) { + o.close(); + } + } catch (IOException ioe) { + ioe.printStackTrace(); + } + } } void saveColumnSettings() { @@ -1538,11 +1567,13 @@ new File( SettingsManager.getInstance().getSettingsDirectory() + File.separator + getIdentifier()+ ".prefs"); - o = new ObjectInputStream( - new BufferedInputStream(new FileInputStream(f))); - - LogPanelPreferenceModel model = (LogPanelPreferenceModel) o.readObject(); - getPreferenceModel().apply(model); + if (f.exists()) { + o = new ObjectInputStream( + new BufferedInputStream(new FileInputStream(f))); + + LogPanelPreferenceModel model = (LogPanelPreferenceModel) o.readObject(); + getPreferenceModel().apply(model); + } } catch(Exception e) { @@ -1575,6 +1606,13 @@ } else { loadDefaultColumnSettings(event); } + File f2 = + new File( + SettingsManager.getInstance().getSettingsDirectory() + File.separator + + identifier + LogUI.COLORS_EXTENSION); + if (f2.exists()) { + loadColorSettings(identifier); + } } void loadDefaultColumnSettings(LoadSettingsEvent event) { @@ -1649,6 +1687,40 @@ }); } + void loadColorSettings(String ident) { + File f = + new File( + SettingsManager.getInstance().getSettingsDirectory() + File.separator + + ident + LogUI.COLORS_EXTENSION); + + if (f.exists()) { + ObjectInputStream s = null; + + try { + s = new ObjectInputStream( + new BufferedInputStream(new FileInputStream(f))); + + while (true) { + Map map = (Map) s.readObject(); + colorizer.setColors(map); + } + } catch (EOFException eof) { //end of file - ignore.. + }catch (IOException ioe) { + ioe.printStackTrace(); + } catch (ClassNotFoundException cnfe) { + cnfe.printStackTrace(); + } finally { + if (s != null) { + try { + s.close(); + } catch (IOException ioe) { + ioe.printStackTrace(); + } + } + } + } + } + void loadColumnSettings(String ident, TableColumnModel model) { File f = new File( 1.7 +24 -7 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.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- ColorPanel.java 8 Dec 2003 08:38:25 -0000 1.6 +++ ColorPanel.java 13 Dec 2003 02:57:23 -0000 1.7 @@ -60,8 +60,9 @@ import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; -import java.util.ArrayList; -import java.util.List; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; import java.util.Vector; import javax.swing.AbstractAction; @@ -125,6 +126,23 @@ 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"); @@ -136,9 +154,9 @@ data2.add(Color.yellow.brighter()); data2.add(Color.black); - Vector data = new Vector(); data.add(data1); data.add(data2); + } table = buildTable(data); table.sizeColumnsToFit(0); @@ -191,7 +209,6 @@ if (table.getRowCount() > 0) { table.getSelectionModel().setSelectionInterval(0, 0); } - } public static void main(String[] args) { @@ -314,7 +331,7 @@ table.getColumnModel().getColumn(0).getCellEditor().stopCellEditing(); colorizer.clear(); - List list = new ArrayList(); + Map map = new HashMap(); Vector vector = tableModel.getDataVector(); StringBuffer result = new StringBuffer(); @@ -335,7 +352,7 @@ } ColorRule r = new ColorRule(expressionRule, background, foreground); - list.add(r); + map.put(v.elementAt(0), r); } catch (IllegalArgumentException iae) { if (!result.toString().equals("")) { result.append("<br>"); @@ -355,7 +372,7 @@ .setToolTipText("<html>" + result.toString() + "</html>"); } - colorizer.addRules(list); + colorizer.addRules(map); } JPanel buildClosePanel() { 1.2 +31 -21 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.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- RuleColorizer.java 9 Nov 2003 09:59:28 -0000 1.1 +++ RuleColorizer.java 13 Dec 2003 02:57:23 -0000 1.2 @@ -49,16 +49,15 @@ package org.apache.log4j.chainsaw.color; -import org.apache.log4j.chainsaw.rule.ColorRule; -import org.apache.log4j.spi.LoggingEvent; - import java.awt.Color; - import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; -import java.util.LinkedList; -import java.util.List; +import org.apache.log4j.chainsaw.rule.ColorRule; +import org.apache.log4j.spi.LoggingEvent; /** @@ -68,37 +67,47 @@ * @author Scott Deboy <[EMAIL PROTECTED]> */ public class RuleColorizer implements Colorizer { - private final List ruleList = new LinkedList(); + private Map ruleMap = new HashMap(); private final PropertyChangeSupport colorChangeSupport = new PropertyChangeSupport(this); public RuleColorizer() { } + + public void setColors(Map ruleMap) { + this.ruleMap = ruleMap; + } + + public Map getColors() { + return ruleMap; + } - public void addRules(List rules) { - for (int i = 0, j = rules.size(); i < j; i++) { - ruleList.add((ColorRule) rules.get(i)); - } - + 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()); + } colorChangeSupport.firePropertyChange("colorrule", false, true); } - public void addRule(ColorRule rule) { - ruleList.add(rule); + public void addRule(String expression, ColorRule rule) { + ruleMap.put(expression, rule); colorChangeSupport.firePropertyChange("colorrule", false, true); } public void clear() { - ruleList.clear(); + ruleMap.clear(); } - public void removeRule(ColorRule rule) { - ruleList.remove(rule); + public void removeRule(String expression) { + ruleMap.remove(expression); } public Color getBackgroundColor(LoggingEvent event) { - for (int i = 0, j = ruleList.size(); i < j; i++) { - ColorRule rule = (ColorRule) ruleList.get(i); + Iterator iter = ruleMap.values().iterator(); + while (iter.hasNext()) { + ColorRule rule = (ColorRule) iter.next(); if ((rule.getBackgroundColor() != null) && (rule.evaluate(event))) { return rule.getBackgroundColor(); @@ -109,8 +118,9 @@ } public Color getForegroundColor(LoggingEvent event) { - for (int i = 0, j = ruleList.size(); i < j; i++) { - ColorRule rule = (ColorRule) ruleList.get(i); + Iterator iter = ruleMap.values().iterator(); + while (iter.hasNext()) { + ColorRule rule = (ColorRule) iter.next(); if ((rule.getForegroundColor() != null) && (rule.evaluate(event))) { return rule.getForegroundColor(); 1.3 +2 -1 jakarta-log4j/src/java/org/apache/log4j/chainsaw/rule/AbstractRule.java Index: AbstractRule.java =================================================================== RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/chainsaw/rule/AbstractRule.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- AbstractRule.java 9 Oct 2003 22:05:21 -0000 1.2 +++ AbstractRule.java 13 Dec 2003 02:57:23 -0000 1.3 @@ -52,6 +52,7 @@ import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; +import java.io.Serializable; /** @@ -60,7 +61,7 @@ * @author Paul Smith <[EMAIL PROTECTED]> * @author Scott Deboy <[EMAIL PROTECTED]> */ -public abstract class AbstractRule implements Rule { +public abstract class AbstractRule implements Rule, Serializable { private PropertyChangeSupport propertySupport = new PropertyChangeSupport(this);
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]