1 package org.columba.core.gui.logdisplay; 17 18 import java.awt.BorderLayout ; 19 import java.awt.Dimension ; 20 import java.awt.event.ActionEvent ; 21 import java.awt.event.ActionListener ; 22 import java.awt.event.MouseAdapter ; 23 import java.awt.event.MouseEvent ; 24 import java.util.logging.Level ; 25 26 import javax.swing.Box ; 27 import javax.swing.BoxLayout ; 28 import javax.swing.JButton ; 29 import javax.swing.JComboBox ; 30 import javax.swing.JList ; 31 import javax.swing.JPanel ; 32 import javax.swing.JScrollPane ; 33 import javax.swing.JTextField ; 34 import javax.swing.JToggleButton ; 35 import javax.swing.ListSelectionModel ; 36 import javax.swing.event.ListSelectionEvent ; 37 import javax.swing.event.ListSelectionListener ; 38 39 40 43 public class LogPanel extends JPanel { 44 45 private JList logList; 47 48 private JToggleButton pauseButton; 49 private JButton clearButton; 50 private JButton closeButton; 51 private JButton detailButton; 52 53 private JTextField searchTextfield; 54 55 private JComboBox levelCombobox; 56 57 60 public LogPanel() { 61 super(); 62 initComponents(); 63 layoutComponents(); 64 } 65 66 69 private void initComponents() { 70 logList = new JList (LogRecordList.getInstance()); 71 logList.setCellRenderer(new LogRecordListRenderer()); 72 logList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 73 logList.addMouseListener(new MouseAdapter () { 74 public void mouseClicked(MouseEvent e) { 75 if (e.getClickCount() >= 2) { 76 showDetailedLogRecord(); 77 } 78 } 79 }); 80 90 91 ButtonListener listener = new ButtonListener(); 92 pauseButton = new JToggleButton ("Pause"); 93 pauseButton.addActionListener(listener); 94 clearButton = new JButton ("Clear"); 95 clearButton.addActionListener(listener); 96 closeButton = new JButton ("Close"); 97 closeButton.addActionListener(listener); 98 detailButton = new JButton ("Details"); 99 detailButton.addActionListener(listener); 100 detailButton.setEnabled(false); 101 logList.addListSelectionListener(new LogListListener()); 102 103 searchTextfield = new JTextField (); 104 levelCombobox = new JComboBox (new Object [] {Level.ALL, Level.FINE, Level.INFO, Level.WARNING, Level.SEVERE}); 105 } 106 107 110 private void layoutComponents() { 111 JPanel topPanel = new JPanel (); 112 topPanel.setLayout(new BoxLayout (topPanel, BoxLayout.X_AXIS)); 113 topPanel.add(searchTextfield); 114 topPanel.add(Box.createHorizontalGlue()); 115 topPanel.add(levelCombobox); 116 117 JPanel bottomPanel = new JPanel (); 118 bottomPanel.setLayout(new BoxLayout (bottomPanel, BoxLayout.X_AXIS)); 119 bottomPanel.add(pauseButton); 120 bottomPanel.add(clearButton); 121 bottomPanel.add(detailButton); 122 bottomPanel.add(Box.createHorizontalGlue()); 123 125 JScrollPane scrollPane = new JScrollPane (logList); 126 scrollPane.setPreferredSize(new Dimension (400, 200)); 127 128 setLayout(new BorderLayout ()); 129 add(topPanel, BorderLayout.NORTH); 130 add(scrollPane, BorderLayout.CENTER); 131 add(bottomPanel, BorderLayout.SOUTH); 132 } 133 134 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 149 private class ButtonListener implements ActionListener { 150 151 152 public void actionPerformed(ActionEvent 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 174 private class LogListListener implements ListSelectionListener { 175 176 177 public void valueChanged(ListSelectionEvent e) { 178 if (!e.getValueIsAdjusting()) { 179 detailButton.setEnabled(logList.getSelectedIndex() != -1); 180 } 181 } 182 } 183 } 184 | Popular Tags |