View Javadoc

1   package org.opensync.engine.admin.gui;
2   
3   import java.awt.BorderLayout;
4   import java.awt.Color;
5   import java.io.PrintWriter;
6   
7   import javax.swing.JPanel;
8   import javax.swing.JScrollPane;
9   import javax.swing.JTextPane;
10  import javax.swing.text.DefaultStyledDocument;
11  import javax.swing.text.Style;
12  import javax.swing.text.StyleConstants;
13  import javax.swing.text.StyleContext;
14  
15  import org.apache.log4j.Category;
16  import org.opensync.engine.server.Log;
17  
18  /***
19   *
20   * @version	1.0
21   * @author	SOFTMED
22   *
23   */
24  
25  public class LogTextPnl extends PrintWriter{
26    JScrollPane scrollPane = new JScrollPane();
27    JPanel panel = new JPanel();
28    StyleContext styleContext = new StyleContext();
29    DefaultStyledDocument document;
30    JTextPane textPane = new JTextPane();
31    Style defaultStyle;
32    Style styleWarning;
33    Style styleError;
34    private int rollWindow;
35  
36    /***
37     * @param	log ?category? ?out?
38     * @param	category
39     * @param	rollWindow
40     */
41    public LogTextPnl(Log log,Category category,int rollWindow) {
42      super(System.err);
43      this.rollWindow = rollWindow;
44      init();
45      log.addWriter(this,category);
46    }
47    /***
48     * @param	log ?category?
49     * @param	category ?pattern?
50     * @param	pattern
51     * @param	rollWindow
52     */
53    public LogTextPnl(Log log,Category category,String pattern,int rollWindow) {
54      super(System.err);
55      this.rollWindow = rollWindow;
56      init();
57      log.addWriter(this,category,pattern);
58    }
59    /****/
60    protected void init(){
61      scrollPane.setAutoscrolls(true);
62      panel.setLayout(new BorderLayout());
63      panel.add(scrollPane,BorderLayout.CENTER);
64      textPane.setEditable(false);
65      textPane.setAutoscrolls(true);
66      scrollPane.getViewport().add(textPane,null);
67      defaultStyle = styleContext.addStyle("Default", null);
68      StyleConstants.setForeground(defaultStyle, Color.black);
69      StyleConstants.setFontFamily(defaultStyle, "Dialog");
70  
71      styleWarning = styleContext.addStyle("Warning", null);
72      StyleConstants.setForeground(styleWarning,new Color(255,100,50));
73      StyleConstants.setFontFamily(styleWarning, "Dialog");
74  
75      styleError = styleContext.addStyle("Error", null);
76      StyleConstants.setForeground(styleError,Color.red);
77      StyleConstants.setFontFamily(styleError, "Dialog");
78      createDocument();
79    }
80    /****/
81    protected void createDocument(){
82      document = new DefaultStyledDocument(styleContext);
83      document.setLogicalStyle(0, defaultStyle);
84      textPane.setDocument(document);
85    }
86    /****/
87    public JPanel getPanel() {
88      return panel;
89    }
90    /***
91     * @param	parm1
92     */
93    public void write(char[] parm1){
94      addMessage("" + parm1);
95    }
96    /***
97     * @param	c
98     */
99    public void write(int c){
100     addMessage("" + c);
101   }
102   /***
103    * @param	parm1
104    * @param	parm2
105    * @param	parm3
106    */
107   public void write(char[] parm1, int parm2, int parm3){
108     addMessage(new String(parm1).substring(parm2,parm2 + parm3));
109   }
110   /***
111    * @param	str
112    * @param	off
113    * @param	len
114    */
115   public void write(String str, int off, int len) {
116     addMessage(str.substring(off,off + len));
117   }
118   /***
119    * @param	str
120    */
121   public void write(String str){
122     addMessage(str);
123   }
124   /***
125    * @param	msg
126    */
127   public void addMessage(String msg){
128     int pos = document.getLength();
129     try {
130       if(pos > (1024 * (rollWindow == 0 ? 1 : rollWindow))){
131         createDocument();
132         pos = 0;
133       }
134       if(msg.indexOf("WARN") != -1){
135         document.insertString(pos,msg,styleWarning);
136       }
137       else if(msg.indexOf("ERROR") != -1){
138         document.insertString(pos,msg,styleError);
139       }
140       else if(msg.indexOf("FATAL") != -1){
141         document.insertString(pos,msg,styleError);
142       }
143       else{
144         document.insertString(pos,msg,defaultStyle);
145       }
146       textPane.setCaretPosition(pos + msg.length());
147     }
148     catch (Exception ex) {
149       ex.printStackTrace();
150     }
151   }
152   /***
153    * @param	rollWindow
154    */
155   public void setRollWindow(int rollWindow) {
156     this.rollWindow = rollWindow;
157   }
158 }
159 
160 
161