KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > sape > carbon > services > log > console > LogView


1 /*
2  * The contents of this file are subject to the Sapient Public License
3  * Version 1.0 (the "License"); you may not use this file except in compliance
4  * with the License. You may obtain a copy of the License at
5  * http://carbon.sf.net/License.html.
6  *
7  * Software distributed under the License is distributed on an "AS IS" basis,
8  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
9  * the specific language governing rights and limitations under the License.
10  *
11  * The Original Code is The Carbon Component Framework.
12  *
13  * The Initial Developer of the Original Code is Sapient Corporation
14  *
15  * Copyright (C) 2003 Sapient Corporation. All Rights Reserved.
16  */

17
18 package org.sape.carbon.services.log.console;
19
20 import java.awt.Component JavaDoc;
21 import java.awt.EventQueue JavaDoc;
22 import java.awt.Image JavaDoc;
23 import java.io.File JavaDoc;
24 import java.net.URL JavaDoc;
25 import java.text.SimpleDateFormat JavaDoc;
26 import java.util.Date JavaDoc;
27 import java.util.HashSet JavaDoc;
28 import java.util.Set JavaDoc;
29
30 import javax.swing.DefaultListCellRenderer JavaDoc;
31 import javax.swing.JFrame JavaDoc;
32 import javax.swing.JList JavaDoc;
33
34 import org.sape.carbon.core.util.classify.SeverityEnum;
35
36 import EDU.oswego.cs.dl.util.concurrent.LinkedQueue;
37
38
39 /**
40  *
41  * @since carbon 1.0
42  * @author Gregory Hinkle, February 2002
43  * @version $Revision: 1.14 $($Author: dvoet $ / $Date: 2003/05/05 21:21:26 $)
44  * <br>Copyright 2002 Sapient
45  */

46 public class LogView extends JFrame JavaDoc implements Runnable JavaDoc {
47     private static final String JavaDoc ICON_LOCATION = "com/sapient/services/log/console/LogViewIcon.gif";
48     private LogViewPrefs prefs;
49
50     private Object JavaDoc refreshLock = new Object JavaDoc();
51
52     private LinkedQueue queue = new LinkedQueue();
53
54
55     private SimpleDateFormat JavaDoc dateFormat = new SimpleDateFormat JavaDoc("MM/dd/yyy");
56     private SimpleDateFormat JavaDoc timeFormat = new SimpleDateFormat JavaDoc("h:m:s a (z)");
57
58
59     /** Creates new form LogView */
60     public LogView() {
61         //System.out.println("Instantiating new Log Viewer class.");
62

63         initComponents ();
64
65         URL JavaDoc logViewIconUrl =
66             getClass().getClassLoader().getResource(
67                 ICON_LOCATION);
68
69         if(logViewIconUrl != null) {
70             Image JavaDoc logViewIconImage = getToolkit().createImage(logViewIconUrl);
71             setIconImage(logViewIconImage);
72         }
73
74         pack ();
75         super.show();
76         prefs = new LogViewPrefs(this);
77
78         messageFilterChanged(null);
79
80         Thread JavaDoc updater = new Thread JavaDoc(this, "LogView Update Manager");
81         updater.setDaemon(true);
82         //updater.setPriority(Thread.MIN_PRIORITY);
83
updater.start();
84     }
85
86     /** This method is called from within the constructor to
87      * initialize the form.
88      * WARNING: Do NOT modify this code. The content of this method is
89      * always regenerated by the FormEditor.
90      */

91     private void initComponents() {//GEN-BEGIN:initComponents
92
java.awt.GridBagConstraints JavaDoc gridBagConstraints;
93
94         jSplitPane1 = new javax.swing.JSplitPane JavaDoc();
95         messageListJScrollPane = new javax.swing.JScrollPane JavaDoc();
96         messageJList = new javax.swing.JList JavaDoc();
97         jPanelMessageDetails = new javax.swing.JPanel JavaDoc();
98         messageDetailJPanel = new javax.swing.JPanel JavaDoc();
99         jLabelDateLabel = new javax.swing.JLabel JavaDoc();
100         jLabelDate = new javax.swing.JLabel JavaDoc();
101         jLabelTimeLabel1 = new javax.swing.JLabel JavaDoc();
102         jLabelTime = new javax.swing.JLabel JavaDoc();
103         jLabelSeverityLabel = new javax.swing.JLabel JavaDoc();
104         jLabelSeverity = new javax.swing.JLabel JavaDoc();
105         jLabelSourceClassLabel = new javax.swing.JLabel JavaDoc();
106         jLabelSourceClass = new javax.swing.JLabel JavaDoc();
107         jLabelSourceMethodLabel = new javax.swing.JLabel JavaDoc();
108         jLabelSourceMethod = new javax.swing.JLabel JavaDoc();
109         messageTextJScrollPane = new javax.swing.JScrollPane JavaDoc();
110         jTextAreaMessageText = new javax.swing.JTextArea JavaDoc();
111         jToolBar1 = new javax.swing.JToolBar JavaDoc();
112         jPanelConfig = new javax.swing.JPanel JavaDoc();
113         jLabelTitle = new javax.swing.JLabel JavaDoc();
114         jLabelMessageCount = new javax.swing.JLabel JavaDoc();
115         criticalJCheckBox = new javax.swing.JCheckBox JavaDoc();
116         errorJCheckBox = new javax.swing.JCheckBox JavaDoc();
117         warningJCheckBox = new javax.swing.JCheckBox JavaDoc();
118         infoJCheckBox = new javax.swing.JCheckBox JavaDoc();
119         detailJCheckBox = new javax.swing.JCheckBox JavaDoc();
120         traceJCheckBox = new javax.swing.JCheckBox JavaDoc();
121         jLabel1 = new javax.swing.JLabel JavaDoc();
122         stringFilterJTextField = new javax.swing.JTextField JavaDoc();
123         File = new javax.swing.JMenuBar JavaDoc();
124         jMenuFile = new javax.swing.JMenu JavaDoc();
125         saveJMenuItem = new javax.swing.JMenuItem JavaDoc();
126         jSeparator1 = new javax.swing.JSeparator JavaDoc();
127         exitJMenuItem = new javax.swing.JMenuItem JavaDoc();
128         jMenuOptions = new javax.swing.JMenu JavaDoc();
129         jCheckBoxMenuItemScrollToNewMessages = new javax.swing.JCheckBoxMenuItem JavaDoc();
130         jMenuItemPrefs = new javax.swing.JMenuItem JavaDoc();
131         clearJMenuItem = new javax.swing.JMenuItem JavaDoc();
132         jMenuHelp = new javax.swing.JMenu JavaDoc();
133         aboutJMenuItem = new javax.swing.JMenuItem JavaDoc();
134
135         setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
136         setTitle("Carbon Log Console");
137         setForeground(java.awt.Color.white);
138         setName("logViewFrame");
139         addWindowListener(new java.awt.event.WindowAdapter JavaDoc() {
140             public void windowClosing(java.awt.event.WindowEvent JavaDoc evt) {
141                 exitForm(evt);
142             }
143         });
144
145         jSplitPane1.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT);
146         jSplitPane1.setResizeWeight(0.8);
147         messageListJScrollPane.setDoubleBuffered(true);
148         messageListJScrollPane.setMinimumSize(new java.awt.Dimension JavaDoc(22, 50));
149         messageJList.setModel(new LogMessageListModel());
150         messageJList.setCellRenderer(new LogMessageRenderer(this));
151         messageJList.setMaximumSize(new java.awt.Dimension JavaDoc(32000, 32000));
152         messageJList.setMinimumSize(new java.awt.Dimension JavaDoc(300, 300));
153         messageJList.addListSelectionListener(new javax.swing.event.ListSelectionListener JavaDoc() {
154             public void valueChanged(javax.swing.event.ListSelectionEvent JavaDoc evt) {
155                 messageJListValueChanged(evt);
156             }
157         });
158
159         messageJList.addMouseListener(new java.awt.event.MouseAdapter JavaDoc() {
160             public void mouseClicked(java.awt.event.MouseEvent JavaDoc evt) {
161                 messageJListMouseClicked(evt);
162             }
163         });
164
165         messageListJScrollPane.setViewportView(messageJList);
166
167         jSplitPane1.setTopComponent(messageListJScrollPane);
168
169         jPanelMessageDetails.setLayout(new java.awt.BorderLayout JavaDoc());
170
171         jPanelMessageDetails.setMaximumSize(new java.awt.Dimension JavaDoc(2147483647, 100));
172         jPanelMessageDetails.setMinimumSize(new java.awt.Dimension JavaDoc(440, 100));
173         jPanelMessageDetails.setPreferredSize(new java.awt.Dimension JavaDoc(0, 100));
174         messageDetailJPanel.setLayout(new java.awt.GridBagLayout JavaDoc());
175
176         messageDetailJPanel.setBorder(new javax.swing.border.BevelBorder JavaDoc(javax.swing.border.BevelBorder.RAISED));
177         messageDetailJPanel.setMaximumSize(new java.awt.Dimension JavaDoc(140, 44));
178         messageDetailJPanel.setMinimumSize(new java.awt.Dimension JavaDoc(190, 44));
179         messageDetailJPanel.setPreferredSize(new java.awt.Dimension JavaDoc(190, 44));
180         jLabelDateLabel.setFont(new java.awt.Font JavaDoc("Dialog", 1, 11));
181         jLabelDateLabel.setText("Date");
182         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
183         gridBagConstraints.gridx = 2;
184         gridBagConstraints.gridy = 1;
185         gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
186         gridBagConstraints.insets = new java.awt.Insets JavaDoc(0, 2, 0, 0);
187         messageDetailJPanel.add(jLabelDateLabel, gridBagConstraints);
188
189         jLabelDate.setFont(new java.awt.Font JavaDoc("Dialog", 0, 12));
190         jLabelDate.setMaximumSize(new java.awt.Dimension JavaDoc(300, 16));
191         jLabelDate.setMinimumSize(new java.awt.Dimension JavaDoc(128, 16));
192         jLabelDate.setName("Message Date");
193         jLabelDate.setPreferredSize(new java.awt.Dimension JavaDoc(300, 16));
194         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
195         gridBagConstraints.gridx = 3;
196         gridBagConstraints.gridy = 1;
197         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
198         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
199         gridBagConstraints.weightx = 1.0;
200         gridBagConstraints.insets = new java.awt.Insets JavaDoc(0, 6, 0, 0);
201         messageDetailJPanel.add(jLabelDate, gridBagConstraints);
202
203         jLabelTimeLabel1.setFont(new java.awt.Font JavaDoc("Dialog", 1, 11));
204         jLabelTimeLabel1.setText("Time");
205         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
206         gridBagConstraints.gridx = 4;
207         gridBagConstraints.gridy = 1;
208         gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
209         gridBagConstraints.insets = new java.awt.Insets JavaDoc(0, 2, 0, 0);
210         messageDetailJPanel.add(jLabelTimeLabel1, gridBagConstraints);
211
212         jLabelTime.setFont(new java.awt.Font JavaDoc("Dialog", 0, 12));
213         jLabelTime.setMaximumSize(new java.awt.Dimension JavaDoc(300, 16));
214         jLabelTime.setMinimumSize(new java.awt.Dimension JavaDoc(128, 16));
215         jLabelTime.setName("Message Time");
216         jLabelTime.setPreferredSize(new java.awt.Dimension JavaDoc(300, 16));
217         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
218         gridBagConstraints.gridx = 5;
219         gridBagConstraints.gridy = 1;
220         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
221         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
222         gridBagConstraints.weightx = 1.0;
223         gridBagConstraints.insets = new java.awt.Insets JavaDoc(0, 6, 0, 0);
224         messageDetailJPanel.add(jLabelTime, gridBagConstraints);
225
226         jLabelSeverityLabel.setFont(new java.awt.Font JavaDoc("Dialog", 1, 11));
227         jLabelSeverityLabel.setText("Severity");
228         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
229         gridBagConstraints.gridx = 0;
230         gridBagConstraints.gridy = 1;
231         gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
232         gridBagConstraints.insets = new java.awt.Insets JavaDoc(0, 2, 0, 0);
233         messageDetailJPanel.add(jLabelSeverityLabel, gridBagConstraints);
234
235         jLabelSeverity.setFont(new java.awt.Font JavaDoc("Dialog", 0, 12));
236         jLabelSeverity.setMaximumSize(new java.awt.Dimension JavaDoc(300, 16));
237         jLabelSeverity.setMinimumSize(new java.awt.Dimension JavaDoc(128, 16));
238         jLabelSeverity.setPreferredSize(new java.awt.Dimension JavaDoc(250, 16));
239         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
240         gridBagConstraints.gridx = 1;
241         gridBagConstraints.gridy = 1;
242         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
243         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
244         gridBagConstraints.weightx = 1.0;
245         gridBagConstraints.insets = new java.awt.Insets JavaDoc(0, 6, 0, 0);
246         messageDetailJPanel.add(jLabelSeverity, gridBagConstraints);
247
248         jLabelSourceClassLabel.setFont(new java.awt.Font JavaDoc("Dialog", 1, 11));
249         jLabelSourceClassLabel.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
250         jLabelSourceClassLabel.setText("Class");
251         jLabelSourceClassLabel.setMaximumSize(new java.awt.Dimension JavaDoc(55, 16));
252         jLabelSourceClassLabel.setMinimumSize(new java.awt.Dimension JavaDoc(55, 16));
253         jLabelSourceClassLabel.setName("Message Date");
254         jLabelSourceClassLabel.setPreferredSize(new java.awt.Dimension JavaDoc(55, 16));
255         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
256         gridBagConstraints.gridx = 0;
257         gridBagConstraints.gridy = 0;
258         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
259         gridBagConstraints.insets = new java.awt.Insets JavaDoc(0, 2, 0, 0);
260         messageDetailJPanel.add(jLabelSourceClassLabel, gridBagConstraints);
261
262         jLabelSourceClass.setFont(new java.awt.Font JavaDoc("Dialog", 0, 12));
263         jLabelSourceClass.setMaximumSize(new java.awt.Dimension JavaDoc(300, 16));
264         jLabelSourceClass.setMinimumSize(new java.awt.Dimension JavaDoc(128, 16));
265         jLabelSourceClass.setName("Message Time");
266         jLabelSourceClass.setPreferredSize(new java.awt.Dimension JavaDoc(300, 16));
267         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
268         gridBagConstraints.gridx = 1;
269         gridBagConstraints.gridy = 0;
270         gridBagConstraints.gridwidth = 3;
271         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
272         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
273         gridBagConstraints.weightx = 1.0;
274         gridBagConstraints.insets = new java.awt.Insets JavaDoc(0, 6, 0, 0);
275         messageDetailJPanel.add(jLabelSourceClass, gridBagConstraints);
276
277         jLabelSourceMethodLabel.setFont(new java.awt.Font JavaDoc("Dialog", 1, 11));
278         jLabelSourceMethodLabel.setText("Method");
279         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
280         gridBagConstraints.gridx = 4;
281         gridBagConstraints.gridy = 0;
282         gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
283         messageDetailJPanel.add(jLabelSourceMethodLabel, gridBagConstraints);
284
285         jLabelSourceMethod.setFont(new java.awt.Font JavaDoc("Dialog", 0, 12));
286         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
287         gridBagConstraints.gridx = 5;
288         gridBagConstraints.gridy = 0;
289         gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
290         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
291         gridBagConstraints.insets = new java.awt.Insets JavaDoc(0, 6, 0, 0);
292         messageDetailJPanel.add(jLabelSourceMethod, gridBagConstraints);
293
294         jPanelMessageDetails.add(messageDetailJPanel, java.awt.BorderLayout.NORTH);
295
296         messageTextJScrollPane.setAlignmentX(0.1F);
297         messageTextJScrollPane.setAlignmentY(0.1F);
298         messageTextJScrollPane.setMaximumSize(new java.awt.Dimension JavaDoc(32767, 1000));
299         messageTextJScrollPane.setMinimumSize(new java.awt.Dimension JavaDoc(250, 22));
300         jTextAreaMessageText.setColumns(80);
301         jTextAreaMessageText.setFont(new java.awt.Font JavaDoc("Monospaced", 0, 12));
302         jTextAreaMessageText.setRows(4);
303         jTextAreaMessageText.setMaximumSize(new java.awt.Dimension JavaDoc(2147483647, 300));
304         jTextAreaMessageText.setMinimumSize(new java.awt.Dimension JavaDoc(250, 64));
305         messageTextJScrollPane.setViewportView(jTextAreaMessageText);
306
307         jPanelMessageDetails.add(messageTextJScrollPane, java.awt.BorderLayout.CENTER);
308
309         jSplitPane1.setBottomComponent(jPanelMessageDetails);
310
311         getContentPane().add(jSplitPane1, java.awt.BorderLayout.CENTER);
312
313         jToolBar1.setFloatable(false);
314         jPanelConfig.setLayout(new java.awt.GridBagLayout JavaDoc());
315
316         jPanelConfig.setBorder(new javax.swing.border.SoftBevelBorder JavaDoc(javax.swing.border.BevelBorder.RAISED));
317         jPanelConfig.setMaximumSize(new java.awt.Dimension JavaDoc(32767, 90));
318         jPanelConfig.setMinimumSize(new java.awt.Dimension JavaDoc(450, 90));
319         jPanelConfig.setPreferredSize(new java.awt.Dimension JavaDoc(450, 90));
320         jLabelTitle.setFont(new java.awt.Font JavaDoc("Comic Sans MS", 1, 14));
321         jLabelTitle.setText("Displayed Log Levels");
322         jLabelTitle.setAlignmentY(0.0F);
323         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
324         gridBagConstraints.gridx = 0;
325         gridBagConstraints.gridy = 0;
326         gridBagConstraints.gridwidth = 2;
327         jPanelConfig.add(jLabelTitle, gridBagConstraints);
328
329         jLabelMessageCount.setFont(new java.awt.Font JavaDoc("Dialog", 0, 12));
330         jLabelMessageCount.setText("(0 out of 0)");
331         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
332         gridBagConstraints.gridx = 2;
333         gridBagConstraints.gridy = 0;
334         gridBagConstraints.gridwidth = 2;
335         gridBagConstraints.insets = new java.awt.Insets JavaDoc(0, 20, 0, 0);
336         jPanelConfig.add(jLabelMessageCount, gridBagConstraints);
337
338         criticalJCheckBox.setSelected(true);
339         criticalJCheckBox.setText("Critical");
340         criticalJCheckBox.addActionListener(new java.awt.event.ActionListener JavaDoc() {
341             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
342                 messageFilterChanged(evt);
343             }
344         });
345
346         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
347         gridBagConstraints.gridx = 0;
348         gridBagConstraints.gridy = 1;
349         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
350         jPanelConfig.add(criticalJCheckBox, gridBagConstraints);
351
352         errorJCheckBox.setSelected(true);
353         errorJCheckBox.setText("Error");
354         errorJCheckBox.addActionListener(new java.awt.event.ActionListener JavaDoc() {
355             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
356                 messageFilterChanged(evt);
357             }
358         });
359
360         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
361         gridBagConstraints.gridx = 0;
362         gridBagConstraints.gridy = 2;
363         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
364         jPanelConfig.add(errorJCheckBox, gridBagConstraints);
365
366         warningJCheckBox.setSelected(true);
367         warningJCheckBox.setText("Warning");
368         warningJCheckBox.addActionListener(new java.awt.event.ActionListener JavaDoc() {
369             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
370                 messageFilterChanged(evt);
371             }
372         });
373
374         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
375         gridBagConstraints.gridx = 1;
376         gridBagConstraints.gridy = 1;
377         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
378         jPanelConfig.add(warningJCheckBox, gridBagConstraints);
379
380         infoJCheckBox.setSelected(true);
381         infoJCheckBox.setText("Info");
382         infoJCheckBox.addActionListener(new java.awt.event.ActionListener JavaDoc() {
383             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
384                 messageFilterChanged(evt);
385             }
386         });
387
388         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
389         gridBagConstraints.gridx = 1;
390         gridBagConstraints.gridy = 2;
391         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
392         jPanelConfig.add(infoJCheckBox, gridBagConstraints);
393
394         detailJCheckBox.setText("Detail");
395         detailJCheckBox.addActionListener(new java.awt.event.ActionListener JavaDoc() {
396             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
397                 messageFilterChanged(evt);
398             }
399         });
400
401         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
402         gridBagConstraints.gridx = 2;
403         gridBagConstraints.gridy = 1;
404         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
405         jPanelConfig.add(detailJCheckBox, gridBagConstraints);
406
407         traceJCheckBox.setText("Trace");
408         traceJCheckBox.addActionListener(new java.awt.event.ActionListener JavaDoc() {
409             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
410                 messageFilterChanged(evt);
411             }
412         });
413
414         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
415         gridBagConstraints.gridx = 2;
416         gridBagConstraints.gridy = 2;
417         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
418         jPanelConfig.add(traceJCheckBox, gridBagConstraints);
419
420         jLabel1.setText("Text Filter");
421         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
422         gridBagConstraints.gridx = 4;
423         gridBagConstraints.gridy = 1;
424         gridBagConstraints.insets = new java.awt.Insets JavaDoc(0, 20, 0, 0);
425         jPanelConfig.add(jLabel1, gridBagConstraints);
426
427         stringFilterJTextField.setMinimumSize(new java.awt.Dimension JavaDoc(80, 20));
428         stringFilterJTextField.setPreferredSize(new java.awt.Dimension JavaDoc(80, 20));
429         stringFilterJTextField.addFocusListener(new java.awt.event.FocusAdapter JavaDoc() {
430             public void focusLost(java.awt.event.FocusEvent JavaDoc evt) {
431                 stringFilterJTextFieldFocusLost(evt);
432             }
433         });
434
435         stringFilterJTextField.addInputMethodListener(new java.awt.event.InputMethodListener JavaDoc() {
436             public void inputMethodTextChanged(java.awt.event.InputMethodEvent JavaDoc evt) {
437                 stringFilterJTextFieldInputMethodTextChanged(evt);
438             }
439             public void caretPositionChanged(java.awt.event.InputMethodEvent JavaDoc evt) {
440             }
441         });
442
443         stringFilterJTextField.addKeyListener(new java.awt.event.KeyAdapter JavaDoc() {
444             public void keyTyped(java.awt.event.KeyEvent JavaDoc evt) {
445                 stringFilterJTextFieldKeyTyped(evt);
446             }
447         });
448
449         stringFilterJTextField.addPropertyChangeListener(new java.beans.PropertyChangeListener JavaDoc() {
450             public void propertyChange(java.beans.PropertyChangeEvent JavaDoc evt) {
451                 stringFilterJTextFieldPropertyChange(evt);
452             }
453         });
454
455         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
456         gridBagConstraints.gridx = 5;
457         gridBagConstraints.gridy = 1;
458         gridBagConstraints.insets = new java.awt.Insets JavaDoc(0, 5, 0, 0);
459         jPanelConfig.add(stringFilterJTextField, gridBagConstraints);
460
461         jToolBar1.add(jPanelConfig);
462
463         getContentPane().add(jToolBar1, java.awt.BorderLayout.NORTH);
464
465         jMenuFile.setText("File");
466         saveJMenuItem.setText("Save...");
467         jMenuFile.add(saveJMenuItem);
468
469         jMenuFile.add(jSeparator1);
470
471         exitJMenuItem.setText("Exit");
472         exitJMenuItem.addActionListener(new java.awt.event.ActionListener JavaDoc() {
473             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
474                 exitJMenuItemActionPerformed(evt);
475             }
476         });
477
478         jMenuFile.add(exitJMenuItem);
479
480         File.add(jMenuFile);
481
482         jMenuOptions.setText("Options");
483         jCheckBoxMenuItemScrollToNewMessages.setText("Scroll to new messages");
484         jMenuOptions.add(jCheckBoxMenuItemScrollToNewMessages);
485
486         jMenuItemPrefs.setText("Preferences...");
487         jMenuItemPrefs.addActionListener(new java.awt.event.ActionListener JavaDoc() {
488             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
489                 jMenuItemPrefsActionPerformed(evt);
490             }
491         });
492
493         jMenuOptions.add(jMenuItemPrefs);
494
495         clearJMenuItem.setText("Clear Messages");
496         clearJMenuItem.addActionListener(new java.awt.event.ActionListener JavaDoc() {
497             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
498                 jButton1ActionPerformed(evt);
499             }
500         });
501
502         jMenuOptions.add(clearJMenuItem);
503
504         File.add(jMenuOptions);
505
506         jMenuHelp.setText("Help");
507         aboutJMenuItem.setText("About Carbon Log View");
508         aboutJMenuItem.addActionListener(new java.awt.event.ActionListener JavaDoc() {
509             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
510                 aboutJMenuItemActionPerformed(evt);
511             }
512         });
513
514         jMenuHelp.add(aboutJMenuItem);
515
516         File.add(jMenuHelp);
517
518         setJMenuBar(File);
519
520         pack();
521     }//GEN-END:initComponents
522

523     private void messageJListMouseClicked(java.awt.event.MouseEvent JavaDoc evt) {//GEN-FIRST:event_messageJListMouseClicked
524
// Add your handling code here:
525
messageJListValueChanged(null);
526     }//GEN-LAST:event_messageJListMouseClicked
527

528     private void stringFilterJTextFieldPropertyChange(java.beans.PropertyChangeEvent JavaDoc evt) {//GEN-FIRST:event_stringFilterJTextFieldPropertyChange
529
// Add your handling code here:
530
messageFilterChanged(null);
531     }//GEN-LAST:event_stringFilterJTextFieldPropertyChange
532

533     private void stringFilterJTextFieldFocusLost(java.awt.event.FocusEvent JavaDoc evt) {//GEN-FIRST:event_stringFilterJTextFieldFocusLost
534
// Add your handling code here:
535
messageFilterChanged(null);
536     }//GEN-LAST:event_stringFilterJTextFieldFocusLost
537

538     private void stringFilterJTextFieldKeyTyped(java.awt.event.KeyEvent JavaDoc evt) {//GEN-FIRST:event_stringFilterJTextFieldKeyTyped
539
// Add your handling code here:
540
messageFilterChanged(null);
541     }//GEN-LAST:event_stringFilterJTextFieldKeyTyped
542

543     private void stringFilterJTextFieldInputMethodTextChanged(java.awt.event.InputMethodEvent JavaDoc evt) {//GEN-FIRST:event_stringFilterJTextFieldInputMethodTextChanged
544
// Add your handling code here:
545
messageFilterChanged(null);
546     }//GEN-LAST:event_stringFilterJTextFieldInputMethodTextChanged
547

548   private void jMenuItemPrefsActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jMenuItemPrefsActionPerformed
549
// Add your handling code here:
550
this.prefs.show();
551   }//GEN-LAST:event_jMenuItemPrefsActionPerformed
552

553   private void aboutJMenuItemActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_aboutJMenuItemActionPerformed
554
// Add your handling code here:
555
AboutLogView alv = new AboutLogView(this,false);
556       alv.setSize(450,200);
557       alv.show();
558   }//GEN-LAST:event_aboutJMenuItemActionPerformed
559

560   private void messageFilterChanged(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_messageFilterChanged
561
// Add your handling code here:
562

563       Set JavaDoc severities = new HashSet JavaDoc();
564
565       if (this.criticalJCheckBox.isSelected())
566           severities.add(SeverityEnum.FATAL);
567       if (this.errorJCheckBox.isSelected())
568           severities.add(SeverityEnum.ERROR);
569       if (this.warningJCheckBox.isSelected())
570           severities.add(SeverityEnum.WARN);
571       if (this.infoJCheckBox.isSelected())
572           severities.add(SeverityEnum.INFO);
573       if (this.detailJCheckBox.isSelected())
574           severities.add(SeverityEnum.DEBUG);
575       if (this.traceJCheckBox.isSelected())
576           severities.add(SeverityEnum.TRACE);
577
578       String JavaDoc textFilter = this.stringFilterJTextField.getText();
579
580
581       LogMessageListModel lmlm = (LogMessageListModel) this.messageJList.getModel();
582
583       lmlm.setFilter(severities,textFilter);
584
585       // Update message counts
586
this.jLabelMessageCount.setText(
587         "(" +
588         lmlm.getSize() +
589         " out of " +
590         lmlm.getTotalSize() +
591         ")");
592
593   }//GEN-LAST:event_messageFilterChanged
594

595   private void jButton1ActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jButton1ActionPerformed
596
// Add your handling code here:
597
LogMessageListModel lmlm = (LogMessageListModel) this.messageJList.getModel();
598       lmlm.clear();
599   }//GEN-LAST:event_jButton1ActionPerformed
600

601   private void exitJMenuItemActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_exitJMenuItemActionPerformed
602
// Add your handling code here:
603
this.hide();
604       System.exit(0);
605   }//GEN-LAST:event_exitJMenuItemActionPerformed
606

607   private void messageJListValueChanged(javax.swing.event.ListSelectionEvent JavaDoc evt) {//GEN-FIRST:event_messageJListValueChanged
608
// Add your handling code here:
609
LogMessageListModel lmlm = (LogMessageListModel) this.messageJList.getModel();
610
611       LogMessage lm = (LogMessage) lmlm.getElementAt(this.messageJList.getSelectedIndex());
612
613       this.jTextAreaMessageText.setText(lm.toString());
614       Date JavaDoc date = new Date JavaDoc(lm.time);
615
616       this.jLabelDate.setText(dateFormat.format(date));
617       this.jLabelTime.setText(timeFormat.format(date));
618       this.jLabelSeverity.setText(lm.severity.getName());
619       String JavaDoc className = lm.sourceClass;
620       //className = className.substring(className.lastIndexOf('.'));
621
this.jLabelSourceClass.setText(className);
622       //this.jLabelSourceMethod.setText(lm.source.getSourceMethod());
623

624       EventQueue.invokeLater(new Runnable JavaDoc() {
625          public void run() {
626             jTextAreaMessageText.setCaretPosition(0);
627          }
628      });
629   }//GEN-LAST:event_messageJListValueChanged
630

631     /** Exit the Application */
632     private void exitForm(java.awt.event.WindowEvent JavaDoc evt) {//GEN-FIRST:event_exitForm
633
System.exit (0);
634     }//GEN-LAST:event_exitForm
635

636     /**
637      * @param args the command line arguments
638      */

639     public static void main (String JavaDoc args[]) {
640         //new LogView();
641
LogView lv = new LogView();
642     }
643
644     private File JavaDoc getSettingsFile() {
645         String JavaDoc home = System.getProperty("user.home");
646         if (home != null) {
647             if (System.getProperty("os.name").indexOf("Windows") != -1 )
648                 return new File JavaDoc(home, "fwJmsLogView.ini");
649             return new File JavaDoc(home,".fwJmsLogView");
650         }
651         return null;
652     }
653
654     // Variables declaration - do not modify//GEN-BEGIN:variables
655
private javax.swing.JTextField JavaDoc stringFilterJTextField;
656     private javax.swing.JCheckBox JavaDoc warningJCheckBox;
657     private javax.swing.JLabel JavaDoc jLabelMessageCount;
658     private javax.swing.JLabel JavaDoc jLabelTitle;
659     private javax.swing.JLabel JavaDoc jLabelSourceMethodLabel;
660     private javax.swing.JLabel JavaDoc jLabelDateLabel;
661     private javax.swing.JLabel JavaDoc jLabelDate;
662     private javax.swing.JPanel JavaDoc jPanelConfig;
663     private javax.swing.JLabel JavaDoc jLabel1;
664     private javax.swing.JMenuItem JavaDoc jMenuItemPrefs;
665     private javax.swing.JMenuItem JavaDoc aboutJMenuItem;
666     private javax.swing.JLabel JavaDoc jLabelTime;
667     private javax.swing.JList JavaDoc messageJList;
668     private javax.swing.JCheckBox JavaDoc traceJCheckBox;
669     private javax.swing.JMenuItem JavaDoc exitJMenuItem;
670     private javax.swing.JCheckBox JavaDoc errorJCheckBox;
671     private javax.swing.JPanel JavaDoc jPanelMessageDetails;
672     private javax.swing.JCheckBox JavaDoc detailJCheckBox;
673     private javax.swing.JCheckBox JavaDoc infoJCheckBox;
674     private javax.swing.JSplitPane JavaDoc jSplitPane1;
675     private javax.swing.JPanel JavaDoc messageDetailJPanel;
676     private javax.swing.JLabel JavaDoc jLabelSourceClassLabel;
677     private javax.swing.JCheckBox JavaDoc criticalJCheckBox;
678     private javax.swing.JTextArea JavaDoc jTextAreaMessageText;
679     private javax.swing.JToolBar JavaDoc jToolBar1;
680     private javax.swing.JMenuItem JavaDoc clearJMenuItem;
681     private javax.swing.JScrollPane JavaDoc messageTextJScrollPane;
682     private javax.swing.JMenuItem JavaDoc saveJMenuItem;
683     private javax.swing.JLabel JavaDoc jLabelSourceMethod;
684     private javax.swing.JSeparator JavaDoc jSeparator1;
685     private javax.swing.JMenuBar JavaDoc File;
686     private javax.swing.JLabel JavaDoc jLabelSeverity;
687     private javax.swing.JCheckBoxMenuItem JavaDoc jCheckBoxMenuItemScrollToNewMessages;
688     private javax.swing.JScrollPane JavaDoc messageListJScrollPane;
689     private javax.swing.JLabel JavaDoc jLabelSeverityLabel;
690     private javax.swing.JMenu JavaDoc jMenuFile;
691     private javax.swing.JMenu JavaDoc jMenuHelp;
692     private javax.swing.JMenu JavaDoc jMenuOptions;
693     private javax.swing.JLabel JavaDoc jLabelTimeLabel1;
694     private javax.swing.JLabel JavaDoc jLabelSourceClass;
695     // End of variables declaration//GEN-END:variables
696

697
698
699     public void addMessage(String JavaDoc sourceClass,SeverityEnum severity, Object JavaDoc msg) {
700
701         LogMessage message =
702             new LogMessage(sourceClass, severity, msg);
703
704         try {
705             this.queue.put(message);
706         } catch (InterruptedException JavaDoc ie) {
707         }
708     }
709
710     public void run() {
711         while (true) {
712             handleMessages();
713             try {
714                 Thread.sleep(1000);
715             } catch (InterruptedException JavaDoc ie) { }
716         }
717     }
718
719
720     public void handleMessages() {
721         //System.out.println("Handling");
722
LogMessage message = null;
723
724         try {
725             message = (LogMessage) queue.poll(10);
726         } catch (Exception JavaDoc e) {
727             System.out.println(e);
728         }
729
730         LogMessageListModel model =
731                 (LogMessageListModel) this.messageJList.getModel();
732
733         while (message != null) {
734             model.addElement(message);
735
736             try {
737                 message =
738                     (LogMessage)queue.poll(10);
739             } catch (Exception JavaDoc e) {
740                 System.out.println(e);
741             }
742         }
743         // Do the final cleanup
744
this.jLabelMessageCount.setText("(" +
745             model.getSize() + " out of " +
746             model.getTotalSize() + ")");
747
748         //model.handleUpdate();
749
if (this.jCheckBoxMenuItemScrollToNewMessages.getModel().isSelected()) {
750             this.messageJList.ensureIndexIsVisible(model.getSize()-1);
751        }
752        this.repaint();
753
754     }
755
756
757
758     static class LogMessageRenderer extends DefaultListCellRenderer JavaDoc {
759         int minSev,maxSev,minProd,maxProd;
760
761         LogView parentLogView;
762
763         public LogMessageRenderer(LogView parentLogView) {
764             this.parentLogView = parentLogView;
765         }
766
767         public Component JavaDoc getListCellRendererComponent(
768         JList JavaDoc list,
769         Object JavaDoc value,
770         int index,
771         boolean iss,
772         boolean chf)
773         {
774
775             // Shorten up the string for faster scrolling (helps alot)
776
String JavaDoc message = ((LogMessage)value).toString();
777             message = message.substring(0,message.length()>200?200:message.length());
778
779             super.getListCellRendererComponent(list, message, index, iss, chf);
780
781             switch (((LogMessage)value).severity.getOrdinal()) {
782                 case 0:
783                     this.setBackground(this.parentLogView.prefs.getCriticalBackground());
784                     this.setForeground(this.parentLogView.prefs.getCriticalForeground());
785                     break;
786                 case 1:
787                     this.setBackground(this.parentLogView.prefs.getErrorBackground());
788                     this.setForeground(this.parentLogView.prefs.getErrorForeground());
789                     break;
790                 case 2:
791                     this.setBackground(this.parentLogView.prefs.getWarningBackground());
792                     this.setForeground(this.parentLogView.prefs.getWarningForeground());
793                     break;
794                 case 3:
795                     this.setBackground(this.parentLogView.prefs.getInfoBackground());
796                     this.setForeground(this.parentLogView.prefs.getInfoForeground());
797                     break;
798                 case 4:
799                     this.setBackground(this.parentLogView.prefs.getDetailBackground());
800                     this.setForeground(this.parentLogView.prefs.getDetailForeground());
801                     break;
802                 case 5:
803                     this.setBackground(this.parentLogView.prefs.getTraceBackground());
804                     this.setForeground(this.parentLogView.prefs.getTraceForeground());
805                     break;
806             }
807             return this;
808         }
809
810
811     }
812
813     public static class LogMessage {
814         public long time;
815         public String JavaDoc sourceClass;
816         public SeverityEnum severity;
817         public Object JavaDoc message;
818
819         public LogMessage(String JavaDoc sourceClass, SeverityEnum severity, Object JavaDoc message) {
820             this.time = System.currentTimeMillis();
821             this.sourceClass = sourceClass;
822             this.severity = severity;
823             this.message = message;
824         }
825
826         public SeverityEnum getSeverity() {
827             return this.severity;
828         }
829
830         public String JavaDoc toString() {
831             // Limit to make scroll fast
832
return message.toString();
833         }
834     }
835
836
837 }
Popular Tags