psmith 2003/12/16 18:06:50
Modified: src/java/org/apache/log4j/chainsaw
LogPanelPreferencePanel.java LogPanel.java
LogPanelPreferenceModel.java
Log:
Exposed the logger Tree panel visibilty though
the pref gui and the popup menu using the standard pattern.
Revision Changes Path
1.17 +535 -374
jakarta-log4j/src/java/org/apache/log4j/chainsaw/LogPanelPreferencePanel.java
Index: LogPanelPreferencePanel.java
===================================================================
RCS file:
/home/cvs/jakarta-log4j/src/java/org/apache/log4j/chainsaw/LogPanelPreferencePanel.java,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- LogPanelPreferencePanel.java 16 Dec 2003 21:57:40 -0000 1.16
+++ LogPanelPreferencePanel.java 17 Dec 2003 02:06:50 -0000 1.17
@@ -87,427 +87,588 @@
*
* @author Paul Smith
*/
-public class LogPanelPreferencePanel extends AbstractPreferencePanel {
- private final LogPanelPreferenceModel committedPreferenceModel;
- private final LogPanelPreferenceModel uncommittedPreferenceModel = new
LogPanelPreferenceModel();
- private JTextField loggerPrecision = new JTextField(5);
-
- public LogPanelPreferencePanel(LogPanelPreferenceModel model) {
- this.committedPreferenceModel = model;
- initComponents();
-
- getOkButton().addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
-
uncommittedPreferenceModel.setLoggerPrecision(loggerPrecision.getText());
- committedPreferenceModel.apply(uncommittedPreferenceModel);
- hidePanel();
- }
- });
-
- getCancelButton().addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- hidePanel();
- }
- });
- }
-
- /**
- * Ensures this panels DISPLAYED model is in sync with
- * the model initially passed to the constructor.
- *
- */
- public void updateModel() {
- this.uncommittedPreferenceModel.apply(committedPreferenceModel);
- }
-
- protected TreeModel createTreeModel() {
- final DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode(
- "Preferences");
- DefaultTreeModel model = new DefaultTreeModel(rootNode);
-
- DefaultMutableTreeNode formatting = new DefaultMutableTreeNode(new
FormattingPanel());
-
- DefaultMutableTreeNode columns = new DefaultMutableTreeNode(new
ColumnSelectorPanel());
-
- rootNode.add(formatting);
- rootNode.add(columns);
-
- return model;
- }
-
- /**
- * @return
- */
- private LogPanelPreferenceModel getModel() {
- return uncommittedPreferenceModel;
- }
-
- public static void main(String[] args) {
- JFrame f = new JFrame("Preferences Panel Test Bed");
- LogPanelPreferenceModel model = new LogPanelPreferenceModel();
- LogPanelPreferencePanel panel = new LogPanelPreferencePanel(model);
- f.getContentPane().add(panel);
-
- model.addPropertyChangeListener(new PropertyChangeListener() {
- public void propertyChange(PropertyChangeEvent evt) {
- LogLog.warn(evt.toString());
- }
- });
- panel.setOkCancelActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- System.exit(1);
- }
- });
-
- f.setSize(640, 480);
- f.show();
- }
-
- /**
- * Provides preference gui's for all the Formatting options
- * available for the columns etc.
- */
- private class FormattingPanel extends BasicPrefPanel {
- private final JCheckBox toolTips = new JCheckBox(
- "Show Event Detail Tooltips");
- private final JCheckBox detailPanelVisible = new JCheckBox(
- "Show Event Detail panel");
- private final JCheckBox scrollToBottom= new JCheckBox(
- "Scroll to bottom (view tracks with new events)");
- private JRadioButton rdCustom = new JRadioButton("Custom Format");
- private JTextField customFormatText = new JTextField("", 10);
- private final JRadioButton rdISO = new JRadioButton(
- "<html><b>Fast</b> ISO 8601 format (yyyy-MM-dd HH:mm:ss)</html>");
- private final JRadioButton rdLevelIcons = new JRadioButton("Icons");
- private final JRadioButton rdLevelText = new JRadioButton("Text");
-
- private FormattingPanel() {
- super("Formatting");
- this.initComponents();
- setupListeners();
+public class LogPanelPreferencePanel extends AbstractPreferencePanel
+{
+ //~ Instance fields =========================================================
+
+ private final LogPanelPreferenceModel committedPreferenceModel;
+ private JTextField loggerPrecision = new JTextField(5);
+ private final LogPanelPreferenceModel uncommittedPreferenceModel =
+ new LogPanelPreferenceModel();
+
+ //~ Constructors ============================================================
+
+ public LogPanelPreferencePanel(LogPanelPreferenceModel model)
+ {
+ this.committedPreferenceModel = model;
+ initComponents();
+
+ getOkButton().addActionListener(new ActionListener()
+ {
+ public void actionPerformed(ActionEvent e)
+ {
+ uncommittedPreferenceModel.setLoggerPrecision(
+ loggerPrecision.getText());
+ committedPreferenceModel.apply(uncommittedPreferenceModel);
+ hidePanel();
}
+ });
- /**
- *
- */
- private void setupListeners()
+ getCancelButton().addActionListener(new ActionListener()
+ {
+ public void actionPerformed(ActionEvent e)
{
- rdCustom.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- customFormatText.setEnabled(rdCustom.isSelected());
- customFormatText.setText("");
- customFormatText.grabFocus();
- }
- });
- getModel().addPropertyChangeListener("dateFormatPattern",
- new PropertyChangeListener() {
- public void propertyChange(PropertyChangeEvent evt) {
- /**
- * we need to make sure we are not reacting to the user typing,
so only do this
- * if the text box is not the same as the model
- */
- if (getModel().isCustomDateFormat() &&
- !customFormatText.getText().equals(evt.getNewValue()
- .toString())) {
- customFormatText.setText(getModel()
- .getDateFormatPattern());
- rdCustom.setSelected(true);
- customFormatText.setEnabled(true);
- } else {
- rdCustom.setSelected(false);
- }
- }
- });
-
-
- rdISO.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- getModel().setDateFormatPattern("ISO8601");
- customFormatText.setEnabled(rdCustom.isSelected());
- }
- });
- getModel().addPropertyChangeListener("dateFormatPattern",
- new PropertyChangeListener() {
- public void propertyChange(PropertyChangeEvent evt) {
- rdISO.setSelected(getModel().isUseISO8601Format());
- }
- });
-
-
- customFormatText.getDocument().addDocumentListener(new DocumentListener()
{
- public void textChanged() {
- getModel().setDateFormatPattern(customFormatText.getText());
- }
-
- public void changedUpdate(DocumentEvent e) {
- textChanged();
- }
-
- public void insertUpdate(DocumentEvent e) {
- textChanged();
- }
-
- public void removeUpdate(DocumentEvent e) {
- textChanged();
- }
- });
-
- ActionListener levelIconListener = new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- getModel().setLevelIcons(rdLevelIcons.isSelected());
- }
- };
+ hidePanel();
+ }
+ });
+ }
- rdLevelIcons.addActionListener(levelIconListener);
- rdLevelText.addActionListener(levelIconListener);
+ //~ Methods =================================================================
- getModel().addPropertyChangeListener("levelIcons",
- new PropertyChangeListener() {
- public void propertyChange(PropertyChangeEvent evt) {
- boolean value = ((Boolean) evt.getNewValue()).booleanValue();
- rdLevelIcons.setSelected(value);
- rdLevelText.setSelected(!value);
- }
- });
- toolTips.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- getModel().setToolTips(toolTips.isSelected());
- }
- });
- getModel().addPropertyChangeListener("toolTips",
- new PropertyChangeListener() {
- public void propertyChange(PropertyChangeEvent evt) {
- boolean value = ((Boolean) evt.getNewValue()).booleanValue();
- toolTips.setSelected(value);
- }
- });
-
- detailPanelVisible.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- getModel().setDetailPaneVisible(detailPanelVisible.isSelected());
- }
- });
+ /**
+ * DOCUMENT ME!
+ *
+ * @param args DOCUMENT ME!
+ */
+ public static void main(String[] args)
+ {
+ JFrame f = new JFrame("Preferences Panel Test Bed");
+ LogPanelPreferenceModel model = new LogPanelPreferenceModel();
+ LogPanelPreferencePanel panel = new LogPanelPreferencePanel(model);
+ f.getContentPane().add(panel);
+
+ model.addPropertyChangeListener(new PropertyChangeListener()
+ {
+ public void propertyChange(PropertyChangeEvent evt)
+ {
+ LogLog.warn(evt.toString());
+ }
+ });
+ panel.setOkCancelActionListener(new ActionListener()
+ {
+ public void actionPerformed(ActionEvent e)
+ {
+ System.exit(1);
+ }
+ });
- getModel().addPropertyChangeListener("detailPaneVisible",
- new PropertyChangeListener() {
- public void propertyChange(PropertyChangeEvent evt) {
- boolean value = ((Boolean) evt.getNewValue()).booleanValue();
- detailPanelVisible.setSelected(value);
- }
- });
-
- scrollToBottom.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- getModel().setScrollToBottom(scrollToBottom.isSelected());
- }
- });
+ f.setSize(640, 480);
+ f.show();
+ }
+
+ /**
+ * Ensures this panels DISPLAYED model is in sync with
+ * the model initially passed to the constructor.
+ *
+ */
+ public void updateModel()
+ {
+ this.uncommittedPreferenceModel.apply(committedPreferenceModel);
+ }
+
+ protected TreeModel createTreeModel()
+ {
+ final DefaultMutableTreeNode rootNode =
+ new DefaultMutableTreeNode("Preferences");
+ DefaultTreeModel model = new DefaultTreeModel(rootNode);
+
+ DefaultMutableTreeNode visuals =
+ new DefaultMutableTreeNode(new VisualsPrefPanel());
+ DefaultMutableTreeNode formatting =
+ new DefaultMutableTreeNode(new FormattingPanel());
+ DefaultMutableTreeNode columns =
+ new DefaultMutableTreeNode(new ColumnSelectorPanel());
+
+ rootNode.add(visuals);
+ rootNode.add(formatting);
+ rootNode.add(columns);
+
+ return model;
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @return
+ */
+ private LogPanelPreferenceModel getModel()
+ {
+ return uncommittedPreferenceModel;
+ }
+
+ //~ Inner Classes ===========================================================
+
+ /**
+ * Allows the user to choose which columns to display.
+ *
+ * @author Paul Smith
+ *
+ */
+ public class ColumnSelectorPanel extends BasicPrefPanel
+ {
+ //~ Constructors ==========================================================
+
+ ColumnSelectorPanel()
+ {
+ super("Columns");
+ initComponents();
+ }
- getModel().addPropertyChangeListener("scrollToBottom",
- new PropertyChangeListener() {
- public void propertyChange(PropertyChangeEvent evt) {
- boolean value = ((Boolean) evt.getNewValue()).booleanValue();
- scrollToBottom.setSelected(value);
- }
- });
-
-
- }
+ //~ Methods ===============================================================
- private void initComponents() {
- setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
+ private void initComponents()
+ {
+ setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
- add(toolTips);
- add(detailPanelVisible);
- add(scrollToBottom);
+ Box columnBox = new Box(BoxLayout.Y_AXIS);
- JPanel dateFormatPanel = new JPanel();
- dateFormatPanel.setBorder(BorderFactory.createTitledBorder(
- BorderFactory.createEtchedBorder(), "Timestamp"));
- dateFormatPanel.setLayout(new BoxLayout(dateFormatPanel,
- BoxLayout.Y_AXIS));
- dateFormatPanel.setAlignmentX(Component.LEFT_ALIGNMENT);
+ //
columnBox.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(),
"Displayed Columns"));
+ final JList columnList = new JList();
+ columnList.setVisibleRowCount(10);
- customFormatText.setPreferredSize(new Dimension(100, 20));
- customFormatText.setMaximumSize(customFormatText.getPreferredSize());
- customFormatText.setMinimumSize(customFormatText.getPreferredSize());
- customFormatText.setEnabled(false);
+ final ModifiableListModel listModel = new ModifiableListModel();
+ for (
+ Iterator iter = ChainsawColumns.getColumnsNames().iterator();
+ iter.hasNext();)
+ {
+ String name = (String) iter.next();
+ listModel.addElement(name);
+ }
- rdCustom.setSelected(getModel().isCustomDateFormat());
+ columnList.setModel(listModel);
+ CheckListCellRenderer cellRenderer = new CheckListCellRenderer()
+ {
+ protected boolean isSelected(Object value)
+ {
+ return LogPanelPreferencePanel.this.getModel().isColumnVisible(
+ value.toString());
+ }
+ };
+ getModel().addPropertyChangeListener(
+ "visibleColumns", new PropertyChangeListener()
+ {
+ public void propertyChange(PropertyChangeEvent evt)
+ {
+ listModel.fireContentsChanged();
+ }
+ });
- ButtonGroup bgDateFormat = new ButtonGroup();
+ columnList.addMouseListener(new MouseAdapter()
+ {
+ public void mouseClicked(MouseEvent e)
+ {
+ if (
+ (e.getClickCount() > 1)
+ && ((e.getModifiers() & MouseEvent.BUTTON1_MASK) > 0))
+ {
+ int i = columnList.locationToIndex(e.getPoint());
+
+ if (i >= 0)
+ {
+ Object column = listModel.get(i);
+ getModel().toggleColumn(column.toString());
+ }
+ }
+ else
+ {
+ }
+ }
+ });
+ columnList.setCellRenderer(cellRenderer);
+ columnBox.add(new JScrollPane(columnList));
- rdISO.setAlignmentX(0);
- rdISO.setSelected(getModel().isUseISO8601Format());
+ add(columnBox);
+ add(Box.createVerticalGlue());
+ }
+ }
- bgDateFormat.add(rdISO);
- dateFormatPanel.add(rdISO);
+ /**
+ * Provides preference gui's for all the Formatting options
+ * available for the columns etc.
+ */
+ private class FormattingPanel extends BasicPrefPanel
+ {
+ //~ Instance fields =======================================================
+
+ private JTextField customFormatText = new JTextField("", 10);
+ private JRadioButton rdCustom = new JRadioButton("Custom Format");
+ private final JRadioButton rdISO =
+ new JRadioButton(
+ "<html><b>Fast</b> ISO 8601 format (yyyy-MM-dd HH:mm:ss)</html>");
+ private final JRadioButton rdLevelIcons = new JRadioButton("Icons");
+ private final JRadioButton rdLevelText = new JRadioButton("Text");
+
+ //~ Constructors ==========================================================
+
+ private FormattingPanel()
+ {
+ super("Formatting");
+ this.initComponents();
+ setupListeners();
+ }
- for (Iterator iter = LogPanelPreferenceModel.DATE_FORMATS.iterator();
- iter.hasNext();) {
- final String format = (String) iter.next();
- final JRadioButton rdFormat = new JRadioButton(format);
- rdFormat.setAlignmentX(0);
-
- bgDateFormat.add(rdFormat);
- rdFormat.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- getModel().setDateFormatPattern(format);
- customFormatText.setEnabled(rdCustom.isSelected());
- }
- });
- getModel().addPropertyChangeListener("dateFormatPattern",
- new PropertyChangeListener() {
- public void propertyChange(PropertyChangeEvent evt) {
- rdFormat.setSelected(getModel()
- .getDateFormatPattern()
- .equals(format));
- }
- });
+ //~ Methods ===============================================================
- dateFormatPanel.add(rdFormat);
+ private void initComponents()
+ {
+ setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
+
+ JPanel dateFormatPanel = new JPanel();
+ dateFormatPanel.setBorder(
+ BorderFactory.createTitledBorder(
+ BorderFactory.createEtchedBorder(), "Timestamp"));
+ dateFormatPanel.setLayout(
+ new BoxLayout(dateFormatPanel, BoxLayout.Y_AXIS));
+ dateFormatPanel.setAlignmentX(Component.LEFT_ALIGNMENT);
+
+ customFormatText.setPreferredSize(new Dimension(100, 20));
+ customFormatText.setMaximumSize(customFormatText.getPreferredSize());
+ customFormatText.setMinimumSize(customFormatText.getPreferredSize());
+ customFormatText.setEnabled(false);
+
+ rdCustom.setSelected(getModel().isCustomDateFormat());
+
+ ButtonGroup bgDateFormat = new ButtonGroup();
+
+ rdISO.setAlignmentX(0);
+ rdISO.setSelected(getModel().isUseISO8601Format());
+
+ bgDateFormat.add(rdISO);
+ dateFormatPanel.add(rdISO);
+
+ for (
+ Iterator iter = LogPanelPreferenceModel.DATE_FORMATS.iterator();
+ iter.hasNext();)
+ {
+ final String format = (String) iter.next();
+ final JRadioButton rdFormat = new JRadioButton(format);
+ rdFormat.setAlignmentX(0);
+
+ bgDateFormat.add(rdFormat);
+ rdFormat.addActionListener(new ActionListener()
+ {
+ public void actionPerformed(ActionEvent e)
+ {
+ getModel().setDateFormatPattern(format);
+ customFormatText.setEnabled(rdCustom.isSelected());
}
-
- // add a custom date format
- if (getModel().isCustomDateFormat()) {
- customFormatText.setText(getModel().getDateFormatPattern());
- customFormatText.setEnabled(true);
+ });
+ getModel().addPropertyChangeListener(
+ "dateFormatPattern", new PropertyChangeListener()
+ {
+ public void propertyChange(PropertyChangeEvent evt)
+ {
+ rdFormat.setSelected(
+ getModel().getDateFormatPattern().equals(format));
}
+ });
+ dateFormatPanel.add(rdFormat);
+ }
- rdCustom.setAlignmentX(0);
- bgDateFormat.add(rdCustom);
-
- Box customBox = Box.createHorizontalBox();
-
- // Following does not work in JDK 1.3.1
- // customBox.setAlignmentX(0);
- customBox.add(rdCustom);
- customBox.add(customFormatText);
- customBox.add(Box.createHorizontalGlue());
- dateFormatPanel.add(customBox);
-
- // dateFormatPanel.add(Box.createVerticalGlue());
- add(dateFormatPanel);
-
- JPanel levelFormatPanel = new JPanel();
- levelFormatPanel.setLayout(new BoxLayout(levelFormatPanel,
- BoxLayout.Y_AXIS));
- levelFormatPanel.setBorder(BorderFactory.createTitledBorder(
- BorderFactory.createEtchedBorder(), "Level"));
- levelFormatPanel.setAlignmentX(Component.LEFT_ALIGNMENT);
-
- ButtonGroup bgLevel = new ButtonGroup();
- bgLevel.add(rdLevelIcons);
- bgLevel.add(rdLevelText);
-
+ // add a custom date format
+ if (getModel().isCustomDateFormat())
+ {
+ customFormatText.setText(getModel().getDateFormatPattern());
+ customFormatText.setEnabled(true);
+ }
+
+ rdCustom.setAlignmentX(0);
+ bgDateFormat.add(rdCustom);
+
+ Box customBox = Box.createHorizontalBox();
+
+ // Following does not work in JDK 1.3.1
+ // customBox.setAlignmentX(0);
+ customBox.add(rdCustom);
+ customBox.add(customFormatText);
+ customBox.add(Box.createHorizontalGlue());
+ dateFormatPanel.add(customBox);
+
+ // dateFormatPanel.add(Box.createVerticalGlue());
+ add(dateFormatPanel);
+
+ JPanel levelFormatPanel = new JPanel();
+ levelFormatPanel.setLayout(
+ new BoxLayout(levelFormatPanel, BoxLayout.Y_AXIS));
+ levelFormatPanel.setBorder(
+ BorderFactory.createTitledBorder(
+ BorderFactory.createEtchedBorder(), "Level"));
+ levelFormatPanel.setAlignmentX(Component.LEFT_ALIGNMENT);
+
+ ButtonGroup bgLevel = new ButtonGroup();
+ bgLevel.add(rdLevelIcons);
+ bgLevel.add(rdLevelText);
+
+ rdLevelIcons.setSelected(getModel().isLevelIcons());
+
+ levelFormatPanel.add(rdLevelIcons);
+ levelFormatPanel.add(rdLevelText);
+
+ add(levelFormatPanel);
+
+ JPanel loggerFormatPanel = new JPanel();
+ loggerFormatPanel.setLayout(
+ new BoxLayout(loggerFormatPanel, BoxLayout.Y_AXIS));
+ loggerFormatPanel.setBorder(
+ BorderFactory.createTitledBorder(
+ BorderFactory.createEtchedBorder(), "Logger"));
+ loggerFormatPanel.setAlignmentX(Component.LEFT_ALIGNMENT);
+
+ final JLabel precisionLabel =
+ new JLabel("Precision (package depth displayed)");
+ final JLabel precisionLabel2 =
+ new JLabel("leave blank to display full logger");
+
+ loggerFormatPanel.add(precisionLabel);
+ loggerFormatPanel.add(precisionLabel2);
- rdLevelIcons.setSelected(getModel().isLevelIcons());
+ JPanel p = new JPanel(new FlowLayout(FlowLayout.LEFT));
- levelFormatPanel.add(rdLevelIcons);
- levelFormatPanel.add(rdLevelText);
+ p.add(loggerPrecision);
+ loggerFormatPanel.add(p);
- add(levelFormatPanel);
+ add(loggerFormatPanel);
- toolTips.setSelected(getModel().isToolTips());
+ add(Box.createVerticalGlue());
+ }
+ /**
+ * DOCUMENT ME!
+ */
+ private void setupListeners()
+ {
+ rdCustom.addActionListener(new ActionListener()
+ {
+ public void actionPerformed(ActionEvent e)
+ {
+ customFormatText.setEnabled(rdCustom.isSelected());
+ customFormatText.setText("");
+ customFormatText.grabFocus();
+ }
+ });
+ getModel().addPropertyChangeListener(
+ "dateFormatPattern", new PropertyChangeListener()
+ {
+ public void propertyChange(PropertyChangeEvent evt)
+ {
+ /**
+ * we need to make sure we are not reacting to the user typing, so only
do this
+ * if the text box is not the same as the model
+ */
+ if (
+ getModel().isCustomDateFormat()
+ && !customFormatText.getText().equals(
+ evt.getNewValue().toString()))
+ {
+ customFormatText.setText(getModel().getDateFormatPattern());
+ rdCustom.setSelected(true);
+ customFormatText.setEnabled(true);
+ }
+ else
+ {
+ rdCustom.setSelected(false);
+ }
+ }
+ });
+ rdISO.addActionListener(new ActionListener()
+ {
+ public void actionPerformed(ActionEvent e)
+ {
+ getModel().setDateFormatPattern("ISO8601");
+ customFormatText.setEnabled(rdCustom.isSelected());
+ }
+ });
+ getModel().addPropertyChangeListener(
+ "dateFormatPattern", new PropertyChangeListener()
+ {
+ public void propertyChange(PropertyChangeEvent evt)
+ {
+ rdISO.setSelected(getModel().isUseISO8601Format());
+ }
+ });
- detailPanelVisible.setSelected(getModel().isDetailPaneVisible());
+ customFormatText.getDocument().addDocumentListener(
+ new DocumentListener()
+ {
+ public void textChanged()
+ {
+ getModel().setDateFormatPattern(customFormatText.getText());
+ }
+
+ public void changedUpdate(DocumentEvent e)
+ {
+ textChanged();
+ }
+
+ public void insertUpdate(DocumentEvent e)
+ {
+ textChanged();
+ }
+
+ public void removeUpdate(DocumentEvent e)
+ {
+ textChanged();
+ }
+ });
+ ActionListener levelIconListener = new ActionListener()
+ {
+ public void actionPerformed(ActionEvent e)
+ {
+ getModel().setLevelIcons(rdLevelIcons.isSelected());
+ }
+ };
- JPanel loggerFormatPanel = new JPanel();
- loggerFormatPanel.setLayout(new BoxLayout(loggerFormatPanel,
- BoxLayout.Y_AXIS));
- loggerFormatPanel.setBorder(BorderFactory.createTitledBorder(
- BorderFactory.createEtchedBorder(), "Logger"));
- loggerFormatPanel.setAlignmentX(Component.LEFT_ALIGNMENT);
+ rdLevelIcons.addActionListener(levelIconListener);
+ rdLevelText.addActionListener(levelIconListener);
- final JLabel precisionLabel = new JLabel(
- "Precision (package depth displayed)");
- final JLabel precisionLabel2 = new JLabel(
- "leave blank to display full logger");
+ getModel().addPropertyChangeListener(
+ "levelIcons", new PropertyChangeListener()
+ {
+ public void propertyChange(PropertyChangeEvent evt)
+ {
+ boolean value = ((Boolean) evt.getNewValue()).booleanValue();
+ rdLevelIcons.setSelected(value);
+ rdLevelText.setSelected(!value);
+ }
+ });
+ }
+ }
- loggerFormatPanel.add(precisionLabel);
- loggerFormatPanel.add(precisionLabel2);
+ /**
+ * DOCUMENT ME!
+ *
+ * @author $author$
+ * @version $Revision$, $Date$
+ *
+ * @author psmith
+ *
+ */
+ private class VisualsPrefPanel extends BasicPrefPanel
+ {
+ //~ Instance fields =======================================================
+
+ private final JCheckBox detailPanelVisible =
+ new JCheckBox("Show Event Detail panel");
+
+ private final JCheckBox loggerTreePanel =
+ new JCheckBox("Show Logger Tree panel");
+ private final JCheckBox scrollToBottom =
+ new JCheckBox("Scroll to bottom (view tracks with new events)");
+ private final JCheckBox toolTips =
+ new JCheckBox("Show Event Detail Tooltips");
- JPanel p = new JPanel(new FlowLayout(FlowLayout.LEFT));
+ //~ Constructors ==========================================================
- p.add(loggerPrecision);
- loggerFormatPanel.add(p);
+ /**
+ * Creates a new VisualsPrefPanel object.
+ */
+ private VisualsPrefPanel()
+ {
+ super("Visuals");
+ initPanelComponents();
+ setupListeners();
+ }
- add(loggerFormatPanel);
+ //~ Methods ===============================================================
- add(Box.createVerticalGlue());
- }
+ /**
+ * DOCUMENT ME!
+ */
+ private void initPanelComponents()
+ {
+ setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
+
+ add(toolTips);
+ add(detailPanelVisible);
+ add(loggerTreePanel);
+ add(scrollToBottom);
+
+ toolTips.setSelected(getModel().isToolTips());
+ detailPanelVisible.setSelected(getModel().isDetailPaneVisible());
+ loggerTreePanel.setSelected(getModel().isLogTreePanelVisible());
}
/**
- * Allows the user to choose which columns to display.
- *
- * @author Paul Smith
- *
- */
- public class ColumnSelectorPanel extends BasicPrefPanel {
- ColumnSelectorPanel() {
- super("Columns");
- initComponents();
- }
-
- private void initComponents() {
- setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
-
- Box columnBox = new Box(BoxLayout.Y_AXIS);
+ * DOCUMENT ME!
+ */
+ private void setupListeners()
+ {
+ toolTips.addActionListener(new ActionListener()
+ {
+ public void actionPerformed(ActionEvent e)
+ {
+ getModel().setToolTips(toolTips.isSelected());
+ }
+ });
+ getModel().addPropertyChangeListener(
+ "toolTips", new PropertyChangeListener()
+ {
+ public void propertyChange(PropertyChangeEvent evt)
+ {
+ boolean value = ((Boolean) evt.getNewValue()).booleanValue();
+ toolTips.setSelected(value);
+ }
+ });
- //
columnBox.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(),
"Displayed Columns"));
- final JList columnList = new JList();
- columnList.setVisibleRowCount(10);
+ detailPanelVisible.addActionListener(new ActionListener()
+ {
+ public void actionPerformed(ActionEvent e)
+ {
+ getModel().setDetailPaneVisible(detailPanelVisible.isSelected());
+ }
+ });
- final ModifiableListModel listModel = new ModifiableListModel();
+ getModel().addPropertyChangeListener(
+ "detailPaneVisible", new PropertyChangeListener()
+ {
+ public void propertyChange(PropertyChangeEvent evt)
+ {
+ boolean value = ((Boolean) evt.getNewValue()).booleanValue();
+ detailPanelVisible.setSelected(value);
+ }
+ });
- for (Iterator iter = ChainsawColumns.getColumnsNames().iterator();
- iter.hasNext();) {
- String name = (String) iter.next();
- listModel.addElement(name);
- }
+ scrollToBottom.addActionListener(new ActionListener()
+ {
+ public void actionPerformed(ActionEvent e)
+ {
+ getModel().setScrollToBottom(scrollToBottom.isSelected());
+ }
+ });
- columnList.setModel(listModel);
+ getModel().addPropertyChangeListener(
+ "scrollToBottom", new PropertyChangeListener()
+ {
+ public void propertyChange(PropertyChangeEvent evt)
+ {
+ boolean value = ((Boolean) evt.getNewValue()).booleanValue();
+ scrollToBottom.setSelected(value);
+ }
+ });
- CheckListCellRenderer cellRenderer = new CheckListCellRenderer() {
- protected boolean isSelected(Object value) {
- return LogPanelPreferencePanel.this.getModel()
-
.isColumnVisible(value.toString());
- }
- };
-
- getModel().addPropertyChangeListener("visibleColumns",
- new PropertyChangeListener() {
- public void propertyChange(PropertyChangeEvent evt) {
- listModel.fireContentsChanged();
- }
- });
-
- columnList.addMouseListener(new MouseAdapter() {
- public void mouseClicked(MouseEvent e) {
- if ((e.getClickCount() > 1) &&
- ((e.getModifiers() & MouseEvent.BUTTON1_MASK) > 0))
{
- int i = columnList.locationToIndex(e.getPoint());
-
- if (i >= 0) {
- Object column = listModel.get(i);
- getModel().toggleColumn(column.toString());
- }
- } else {
- }
- }
- });
- columnList.setCellRenderer(cellRenderer);
- columnBox.add(new JScrollPane(columnList));
+ loggerTreePanel.addActionListener(new ActionListener()
+ {
+ public void actionPerformed(ActionEvent e)
+ {
+ getModel().setLogTreePanelVisible(loggerTreePanel.isSelected());
+ }
+ });
- add(columnBox);
- add(Box.createVerticalGlue());
- }
+ getModel().addPropertyChangeListener(
+ "logTreePanelVisible", new PropertyChangeListener()
+ {
+ public void propertyChange(PropertyChangeEvent evt)
+ {
+ boolean value = ((Boolean) evt.getNewValue()).booleanValue();
+ loggerTreePanel.setSelected(value);
+ }
+ });
}
+ }
}
1.40 +21 -0 jakarta-log4j/src/java/org/apache/log4j/chainsaw/LogPanel.java
Index: LogPanel.java
===================================================================
RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/chainsaw/LogPanel.java,v
retrieving revision 1.39
retrieving revision 1.40
diff -u -r1.39 -r1.40
--- LogPanel.java 16 Dec 2003 21:57:40 -0000 1.39
+++ LogPanel.java 17 Dec 2003 02:06:50 -0000 1.40
@@ -841,6 +841,23 @@
}
});
+ final JCheckBoxMenuItem menuItemLoggerTree = new JCheckBoxMenuItem("Logger
Tree panel");
+ menuItemLoggerTree.addActionListener(new ActionListener() {
+
+ public void actionPerformed(ActionEvent e)
+ {
+
getPreferenceModel().setLogTreePanelVisible(menuItemLoggerTree.isSelected());
+
+ }});
+ getPreferenceModel().addPropertyChangeListener("logTreePanelVisible", new
PropertyChangeListener() {
+
+ public void propertyChange(PropertyChangeEvent evt)
+ {
+ boolean value = ((Boolean)evt.getNewValue()).booleanValue();
+ menuItemLoggerTree.setSelected(value);
+ }});
+
+
menuItemFocusOn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
if (currentPoint != null) {
@@ -974,6 +991,7 @@
p.add(menuItemToggleDetails);
p.add(menuItemToggleToolTips);
p.add(menuItemScrollBottom);
+ p.add(menuItemLoggerTree);
p.add(new JSeparator());
p.add(menuItemToggleDock);
@@ -1385,6 +1403,9 @@
getPreferenceModel().isScrollToBottom());
event.saveSetting("detailPaneVisible",
getPreferenceModel().isDetailPaneVisible());
+ event.saveSetting("logTreePanelVisible",
+ getPreferenceModel().isLogTreePanelVisible());
+
saveColumnSettings();
saveColorSettings();
1.10 +1 -0
jakarta-log4j/src/java/org/apache/log4j/chainsaw/LogPanelPreferenceModel.java
Index: LogPanelPreferenceModel.java
===================================================================
RCS file:
/home/cvs/jakarta-log4j/src/java/org/apache/log4j/chainsaw/LogPanelPreferenceModel.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- LogPanelPreferenceModel.java 16 Dec 2003 11:16:34 -0000 1.9
+++ LogPanelPreferenceModel.java 17 Dec 2003 02:06:50 -0000 1.10
@@ -168,6 +168,7 @@
setToolTips(that.isToolTips());
setScrollToBottom(that.isScrollToBottom());
setDetailPaneVisible(that.isDetailPaneVisible());
+ setLogTreePanelVisible(that.isLogTreePanelVisible());
/**
* First, iterate and ADD new columns, (this means notifications of adds go out
first
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]