KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > columba > core > gui > logdisplay > LogPanel


1 //The contents of this file are subject to the Mozilla Public License Version 1.1
2
//(the "License"); you may not use this file except in compliance with the
3
//License. You may obtain a copy of the License at http://www.mozilla.org/MPL/
4
//
5
//Software distributed under the License is distributed on an "AS IS" basis,
6
//WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
7
//for the specific language governing rights and
8
//limitations under the License.
9
//
10
//The Original Code is "The Columba Project"
11
//
12
//The Initial Developers of the Original Code are Frederik Dietz and Timo Stich.
13
//Portions created by Frederik Dietz and Timo Stich are Copyright (C) 2003.
14
//
15
//All Rights Reserved.
16
package org.columba.core.gui.logdisplay;
17
18 import java.awt.BorderLayout JavaDoc;
19 import java.awt.Dimension JavaDoc;
20 import java.awt.event.ActionEvent JavaDoc;
21 import java.awt.event.ActionListener JavaDoc;
22 import java.awt.event.MouseAdapter JavaDoc;
23 import java.awt.event.MouseEvent JavaDoc;
24 import java.util.logging.Level JavaDoc;
25
26 import javax.swing.Box JavaDoc;
27 import javax.swing.BoxLayout JavaDoc;
28 import javax.swing.JButton JavaDoc;
29 import javax.swing.JComboBox JavaDoc;
30 import javax.swing.JList JavaDoc;
31 import javax.swing.JPanel JavaDoc;
32 import javax.swing.JScrollPane JavaDoc;
33 import javax.swing.JTextField JavaDoc;
34 import javax.swing.JToggleButton JavaDoc;
35 import javax.swing.ListSelectionModel JavaDoc;
36 import javax.swing.event.ListSelectionEvent JavaDoc;
37 import javax.swing.event.ListSelectionListener JavaDoc;
38
39
40 /**
41  * @author redsolo
42  */

43 public class LogPanel extends JPanel JavaDoc {
44
45     //private JTable logTable;
46
private JList JavaDoc logList;
47
48     private JToggleButton JavaDoc pauseButton;
49     private JButton JavaDoc clearButton;
50     private JButton JavaDoc closeButton;
51     private JButton JavaDoc detailButton;
52
53     private JTextField JavaDoc searchTextfield;
54
55     private JComboBox JavaDoc levelCombobox;
56
57     /**
58      *
59      */

60     public LogPanel() {
61         super();
62         initComponents();
63         layoutComponents();
64     }
65
66     /**
67      * Creates all components in the panel.
68      */

69     private void initComponents() {
70         logList = new JList JavaDoc(LogRecordList.getInstance());
71         logList.setCellRenderer(new LogRecordListRenderer());
72         logList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
73         logList.addMouseListener(new MouseAdapter JavaDoc() {
74             public void mouseClicked(MouseEvent JavaDoc e) {
75                 if (e.getClickCount() >= 2) {
76                     showDetailedLogRecord();
77                 }
78             }
79         });
80         /*logTable = new JTable(new LogPanelModel());
81         logTable.addMouseListener(new MouseAdapter() {
82             public void mouseClicked(MouseEvent e) {
83                 if (e.getClickCount() >= 2) {
84                     int row = logTable.getSelectedRow();
85                     LogPanelModel model = (LogPanelModel) logTable.getModel();
86                     LogRecordPanel.showRecord(null, model.getLogRecordForRow(row));
87                 }
88             }
89         });*/

90
91         ButtonListener listener = new ButtonListener();
92         pauseButton = new JToggleButton JavaDoc("Pause");
93         pauseButton.addActionListener(listener);
94         clearButton = new JButton JavaDoc("Clear");
95         clearButton.addActionListener(listener);
96         closeButton = new JButton JavaDoc("Close");
97         closeButton.addActionListener(listener);
98         detailButton = new JButton JavaDoc("Details");
99         detailButton.addActionListener(listener);
100         detailButton.setEnabled(false);
101         logList.addListSelectionListener(new LogListListener());
102
103         searchTextfield = new JTextField JavaDoc();
104         levelCombobox = new JComboBox JavaDoc(new Object JavaDoc[] {Level.ALL, Level.FINE, Level.INFO, Level.WARNING, Level.SEVERE});
105     }
106
107     /**
108      * Layouts all components in the panel.
109      */

110     private void layoutComponents() {
111         JPanel JavaDoc topPanel = new JPanel JavaDoc();
112         topPanel.setLayout(new BoxLayout JavaDoc(topPanel, BoxLayout.X_AXIS));
113         topPanel.add(searchTextfield);
114         topPanel.add(Box.createHorizontalGlue());
115         topPanel.add(levelCombobox);
116
117         JPanel JavaDoc bottomPanel = new JPanel JavaDoc();
118         bottomPanel.setLayout(new BoxLayout JavaDoc(bottomPanel, BoxLayout.X_AXIS));
119         bottomPanel.add(pauseButton);
120         bottomPanel.add(clearButton);
121         bottomPanel.add(detailButton);
122         bottomPanel.add(Box.createHorizontalGlue());
123         //bottomPanel.add(closeButton);
124

125         JScrollPane JavaDoc scrollPane = new JScrollPane JavaDoc(logList);
126         scrollPane.setPreferredSize(new Dimension JavaDoc(400, 200));
127
128         setLayout(new BorderLayout JavaDoc());
129         add(topPanel, BorderLayout.NORTH);
130         add(scrollPane, BorderLayout.CENTER);
131         add(bottomPanel, BorderLayout.SOUTH);
132     }
133
134     /**
135      * Shows a detailed panel about the selected log record.
136      */

137     private void showDetailedLogRecord() {
138         int row = logList.getSelectedIndex();
139         if (row != -1) {
140             LogRecordList model = (LogRecordList) logList.getModel();
141             LogRecordPanel.showRecord(null, model.getLogRecord(row));
142         }
143     }
144
145     /**
146      * Listens on the buttons.
147      * @author redsolo
148      */

149     private class ButtonListener implements ActionListener JavaDoc {
150
151         /** {@inheritDoc} */
152         public void actionPerformed(ActionEvent JavaDoc e) {
153             LogRecordList instance = LogRecordList.getInstance();
154             if (e.getSource() == clearButton) {
155                 instance.clear();
156
157             } else if (e.getSource() == pauseButton) {
158
159                 if (pauseButton.isSelected()) {
160                     instance.stopLogging();
161                 } else {
162                     instance.startLogging();
163                 }
164             } else if (e.getSource() == detailButton) {
165                 showDetailedLogRecord();
166             }
167         }
168     }
169
170     /**
171      * A list selection listener, to find out if we are going to enable the detail button.
172      * @author redsolo
173      */

174     private class LogListListener implements ListSelectionListener JavaDoc {
175
176         /** {@inheritDoc} */
177         public void valueChanged(ListSelectionEvent JavaDoc e) {
178             if (!e.getValueIsAdjusting()) {
179                 detailButton.setEnabled(logList.getSelectedIndex() != -1);
180             }
181         }
182     }
183 }
184
Popular Tags