PageRenderTime 64ms CodeModel.GetById 48ms app.highlight 14ms RepoModel.GetById 1ms app.codeStats 0ms

/apache-log4j-1.2.17/src/main/java/org/apache/log4j/chainsaw/ControlPanel.java

#
Java | 222 lines | 166 code | 24 blank | 32 comment | 0 complexity | ae94ff5ad3cc6cab81452fe917fff83a MD5 | raw file
Possible License(s): Apache-2.0
  1/*
  2 * Licensed to the Apache Software Foundation (ASF) under one or more
  3 * contributor license agreements.  See the NOTICE file distributed with
  4 * this work for additional information regarding copyright ownership.
  5 * The ASF licenses this file to You under the Apache License, Version 2.0
  6 * (the "License"); you may not use this file except in compliance with
  7 * the License.  You may obtain a copy of the License at
  8 * 
  9 *      http://www.apache.org/licenses/LICENSE-2.0
 10 * 
 11 * Unless required by applicable law or agreed to in writing, software
 12 * distributed under the License is distributed on an "AS IS" BASIS,
 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 14 * See the License for the specific language governing permissions and
 15 * limitations under the License.
 16 */
 17package org.apache.log4j.chainsaw;
 18
 19import java.awt.GridBagConstraints;
 20import java.awt.GridBagLayout;
 21import java.awt.event.ActionEvent;
 22import java.awt.event.ActionListener;
 23import javax.swing.BorderFactory;
 24import javax.swing.JButton;
 25import javax.swing.JComboBox;
 26import javax.swing.JLabel;
 27import javax.swing.JPanel;
 28import javax.swing.JTextField;
 29import javax.swing.event.DocumentEvent;
 30import javax.swing.event.DocumentListener;
 31import org.apache.log4j.Logger;
 32import org.apache.log4j.Priority;
 33import org.apache.log4j.Level;
 34
 35/**
 36 * Represents the controls for filtering, pausing, exiting, etc.
 37 *
 38 * @author <a href="mailto:oliver@puppycrawl.com">Oliver Burn</a>
 39 */
 40class ControlPanel extends JPanel {
 41    /** use the log messages **/
 42    private static final Logger LOG = 
 43                                  Logger.getLogger(ControlPanel.class);
 44
 45    /**
 46     * Creates a new <code>ControlPanel</code> instance.
 47     *
 48     * @param aModel the model to control
 49     */
 50    ControlPanel(final MyTableModel aModel) {
 51        setBorder(BorderFactory.createTitledBorder("Controls: "));
 52        final GridBagLayout gridbag = new GridBagLayout();
 53        final GridBagConstraints c = new GridBagConstraints();
 54        setLayout(gridbag);
 55
 56        // Pad everything
 57        c.ipadx = 5;
 58        c.ipady = 5;
 59
 60        // Add the 1st column of labels
 61        c.gridx = 0;
 62        c.anchor = GridBagConstraints.EAST;
 63
 64        c.gridy = 0;
 65        JLabel label = new JLabel("Filter Level:");
 66        gridbag.setConstraints(label, c);
 67        add(label);
 68
 69        c.gridy++;
 70        label = new JLabel("Filter Thread:");
 71        gridbag.setConstraints(label, c);
 72        add(label);
 73
 74        c.gridy++;
 75        label = new JLabel("Filter Logger:");
 76        gridbag.setConstraints(label, c);
 77        add(label);
 78
 79        c.gridy++;
 80        label = new JLabel("Filter NDC:");
 81        gridbag.setConstraints(label, c);
 82        add(label);
 83
 84        c.gridy++;
 85        label = new JLabel("Filter Message:");
 86        gridbag.setConstraints(label, c);
 87        add(label);
 88
 89        // Add the 2nd column of filters
 90        c.weightx = 1;
 91        //c.weighty = 1;
 92        c.gridx = 1;
 93        c.anchor = GridBagConstraints.WEST;
 94
 95        c.gridy = 0;
 96        final Level[] allPriorities = new Level[] {Level.FATAL, 
 97               Level.ERROR, 
 98               Level.WARN, 
 99			   Level.INFO, 
100			   Level.DEBUG, 
101			   Level.TRACE };
102        
103        final JComboBox priorities = new JComboBox(allPriorities);
104        final Level lowest = allPriorities[allPriorities.length - 1];
105        priorities.setSelectedItem(lowest);
106        aModel.setPriorityFilter(lowest);
107        gridbag.setConstraints(priorities, c);
108        add(priorities);
109        priorities.setEditable(false);
110        priorities.addActionListener(new ActionListener() {
111                public void actionPerformed(ActionEvent aEvent) {
112                    aModel.setPriorityFilter(
113                        (Priority) priorities.getSelectedItem());
114                }
115            });
116
117
118        c.fill = GridBagConstraints.HORIZONTAL;
119        c.gridy++;
120        final JTextField threadField = new JTextField("");
121        threadField.getDocument().addDocumentListener(new DocumentListener () {
122                public void insertUpdate(DocumentEvent aEvent) {
123                    aModel.setThreadFilter(threadField.getText());
124                }
125                public void removeUpdate(DocumentEvent aEvente) {
126                    aModel.setThreadFilter(threadField.getText());
127                }
128                public void changedUpdate(DocumentEvent aEvent) {
129                    aModel.setThreadFilter(threadField.getText());
130                }
131            });
132        gridbag.setConstraints(threadField, c);
133        add(threadField);
134
135        c.gridy++;
136        final JTextField catField = new JTextField("");
137        catField.getDocument().addDocumentListener(new DocumentListener () {
138                public void insertUpdate(DocumentEvent aEvent) {
139                    aModel.setCategoryFilter(catField.getText());
140                }
141                public void removeUpdate(DocumentEvent aEvent) {
142                    aModel.setCategoryFilter(catField.getText());
143                }
144                public void changedUpdate(DocumentEvent aEvent) {
145                    aModel.setCategoryFilter(catField.getText());
146                }
147            });
148        gridbag.setConstraints(catField, c);
149        add(catField);
150
151        c.gridy++;
152        final JTextField ndcField = new JTextField("");
153        ndcField.getDocument().addDocumentListener(new DocumentListener () {
154                public void insertUpdate(DocumentEvent aEvent) {
155                    aModel.setNDCFilter(ndcField.getText());
156                }
157                public void removeUpdate(DocumentEvent aEvent) {
158                    aModel.setNDCFilter(ndcField.getText());
159                }
160                public void changedUpdate(DocumentEvent aEvent) {
161                    aModel.setNDCFilter(ndcField.getText());
162                }
163            });
164        gridbag.setConstraints(ndcField, c);
165        add(ndcField);
166
167        c.gridy++;
168        final JTextField msgField = new JTextField("");
169        msgField.getDocument().addDocumentListener(new DocumentListener () {
170                public void insertUpdate(DocumentEvent aEvent) {
171                    aModel.setMessageFilter(msgField.getText());
172                }
173                public void removeUpdate(DocumentEvent aEvent) {
174                    aModel.setMessageFilter(msgField.getText());
175                }
176                public void changedUpdate(DocumentEvent aEvent) {
177                    aModel.setMessageFilter(msgField.getText());
178                }
179            });
180
181
182        gridbag.setConstraints(msgField, c);
183        add(msgField);
184
185        // Add the 3rd column of buttons
186        c.weightx = 0;
187        c.fill = GridBagConstraints.HORIZONTAL;
188        c.anchor = GridBagConstraints.EAST;
189        c.gridx = 2;
190
191        c.gridy = 0;
192        final JButton exitButton = new JButton("Exit");
193        exitButton.setMnemonic('x');
194        exitButton.addActionListener(ExitAction.INSTANCE);
195        gridbag.setConstraints(exitButton, c);
196        add(exitButton);
197
198        c.gridy++;
199        final JButton clearButton = new JButton("Clear");
200        clearButton.setMnemonic('c');
201        clearButton.addActionListener(new ActionListener() {
202                public void actionPerformed(ActionEvent aEvent) {
203                    aModel.clear();
204                }
205            });
206        gridbag.setConstraints(clearButton, c);
207        add(clearButton);
208
209        c.gridy++;
210        final JButton toggleButton = new JButton("Pause");
211        toggleButton.setMnemonic('p');
212        toggleButton.addActionListener(new ActionListener() {
213                public void actionPerformed(ActionEvent aEvent) {
214                    aModel.toggle();
215                    toggleButton.setText(
216                        aModel.isPaused() ? "Resume" : "Pause");
217                }
218            });
219        gridbag.setConstraints(toggleButton, c);
220        add(toggleButton);
221    }
222}