📄 controlpanel.java
字号:
/* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software * License version 1.1, a copy of which has been included with this * distribution in the LICENSE.txt file. */package org.apache.log4j.chainsaw;import java.awt.GridBagConstraints;import java.awt.GridBagLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.BorderFactory;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextField;import javax.swing.event.DocumentEvent;import javax.swing.event.DocumentListener;import org.apache.log4j.Logger;import org.apache.log4j.Priority;/** * Represents the controls for filtering, pausing, exiting, etc. * * @author <a href="mailto:oliver@puppycrawl.com">Oliver Burn</a> */class ControlPanel extends JPanel { /** use the log messages **/ private static final Logger LOG = Logger.getLogger(ControlPanel.class); /** * Creates a new <code>ControlPanel</code> instance. * * @param aModel the model to control */ ControlPanel(final MyTableModel aModel) { setBorder(BorderFactory.createTitledBorder("Controls: ")); final GridBagLayout gridbag = new GridBagLayout(); final GridBagConstraints c = new GridBagConstraints(); setLayout(gridbag); // Pad everything c.ipadx = 5; c.ipady = 5; // Add the 1st column of labels c.gridx = 0; c.anchor = GridBagConstraints.EAST; c.gridy = 0; JLabel label = new JLabel("Filter Level:"); gridbag.setConstraints(label, c); add(label); c.gridy++; label = new JLabel("Filter Thread:"); gridbag.setConstraints(label, c); add(label); c.gridy++; label = new JLabel("Filter Logger:"); gridbag.setConstraints(label, c); add(label); c.gridy++; label = new JLabel("Filter NDC:"); gridbag.setConstraints(label, c); add(label); c.gridy++; label = new JLabel("Filter Message:"); gridbag.setConstraints(label, c); add(label); // Add the 2nd column of filters c.weightx = 1; //c.weighty = 1; c.gridx = 1; c.anchor = GridBagConstraints.WEST; c.gridy = 0; final Priority[] allPriorities = Priority.getAllPossiblePriorities(); final JComboBox priorities = new JComboBox(allPriorities); final Priority lowest = allPriorities[allPriorities.length - 1]; priorities.setSelectedItem(lowest); aModel.setPriorityFilter(lowest); gridbag.setConstraints(priorities, c); add(priorities); priorities.setEditable(false); priorities.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent aEvent) { aModel.setPriorityFilter( (Priority) priorities.getSelectedItem()); } }); c.fill = GridBagConstraints.HORIZONTAL; c.gridy++; final JTextField threadField = new JTextField(""); threadField.getDocument().addDocumentListener(new DocumentListener () { public void insertUpdate(DocumentEvent aEvent) { aModel.setThreadFilter(threadField.getText()); } public void removeUpdate(DocumentEvent aEvente) { aModel.setThreadFilter(threadField.getText()); } public void changedUpdate(DocumentEvent aEvent) { aModel.setThreadFilter(threadField.getText()); } }); gridbag.setConstraints(threadField, c); add(threadField); c.gridy++; final JTextField catField = new JTextField(""); catField.getDocument().addDocumentListener(new DocumentListener () { public void insertUpdate(DocumentEvent aEvent) { aModel.setCategoryFilter(catField.getText()); } public void removeUpdate(DocumentEvent aEvent) { aModel.setCategoryFilter(catField.getText()); } public void changedUpdate(DocumentEvent aEvent) { aModel.setCategoryFilter(catField.getText()); } }); gridbag.setConstraints(catField, c); add(catField); c.gridy++; final JTextField ndcField = new JTextField(""); ndcField.getDocument().addDocumentListener(new DocumentListener () { public void insertUpdate(DocumentEvent aEvent) { aModel.setNDCFilter(ndcField.getText()); } public void removeUpdate(DocumentEvent aEvent) { aModel.setNDCFilter(ndcField.getText()); } public void changedUpdate(DocumentEvent aEvent) { aModel.setNDCFilter(ndcField.getText()); } }); gridbag.setConstraints(ndcField, c); add(ndcField); c.gridy++; final JTextField msgField = new JTextField(""); msgField.getDocument().addDocumentListener(new DocumentListener () { public void insertUpdate(DocumentEvent aEvent) { aModel.setMessageFilter(msgField.getText()); } public void removeUpdate(DocumentEvent aEvent) { aModel.setMessageFilter(msgField.getText()); } public void changedUpdate(DocumentEvent aEvent) { aModel.setMessageFilter(msgField.getText()); } }); gridbag.setConstraints(msgField, c); add(msgField); // Add the 3rd column of buttons c.weightx = 0; c.fill = GridBagConstraints.HORIZONTAL; c.anchor = GridBagConstraints.EAST; c.gridx = 2; c.gridy = 0; final JButton exitButton = new JButton("Exit"); exitButton.setMnemonic('x'); exitButton.addActionListener(ExitAction.INSTANCE); gridbag.setConstraints(exitButton, c); add(exitButton); c.gridy++; final JButton clearButton = new JButton("Clear"); clearButton.setMnemonic('c'); clearButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent aEvent) { aModel.clear(); } }); gridbag.setConstraints(clearButton, c); add(clearButton); c.gridy++; final JButton toggleButton = new JButton("Pause"); toggleButton.setMnemonic('p'); toggleButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent aEvent) { aModel.toggle(); toggleButton.setText( aModel.isPaused() ? "Resume" : "Pause"); } }); gridbag.setConstraints(toggleButton, c); add(toggleButton); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -