View Javadoc

    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   */
    17  package org.apache.log4j.lf5.viewer.categoryexplorer;
    18
    19  import java.awt.event.MouseEvent;
    20
    21  import javax.swing.JTree;
    22  import javax.swing.event.TreeModelEvent;
    23  import javax.swing.tree.TreePath;
    24
    25  /**
    26   * CategoryExplorerTree
    27   *
    28   * @author Michael J. Sikorsky
    29   * @author Robert Shaw
    30   * @author Brent Sprecher
    31   * @author Brad Marlborough
    32   */
    33
    34  // Contributed by ThoughtWorks Inc.
    35
    36  public class CategoryExplorerTree extends JTree {
    37    private static final long serialVersionUID = 8066257446951323576L;
    38    //--------------------------------------------------------------------------
    39    //   Constants:
    40    //--------------------------------------------------------------------------
    41
    42    //--------------------------------------------------------------------------
    43    //   Protected Variables:
    44    //--------------------------------------------------------------------------
    45    protected CategoryExplorerModel _model;
    46    protected boolean _rootAlreadyExpanded = false;
    47
    48    //--------------------------------------------------------------------------
    49    //   Private Variables:
    50    //--------------------------------------------------------------------------
    51
    52    //--------------------------------------------------------------------------
    53    //   Constructors:
    54    //--------------------------------------------------------------------------
    55
    56    /**
    57     * Construct a CategoryExplorerTree with a specific model.
    58     */
    59    public CategoryExplorerTree(CategoryExplorerModel model) {
    60      super(model);
    61
    62      _model = model;
    63      init();
    64    }
    65
    66    /**
    67     * Construct a CategoryExplorerTree and create a default CategoryExplorerModel.
    68     */
    69    public CategoryExplorerTree() {
    70      super();
    71
    72      CategoryNode rootNode = new CategoryNode("Categories");
    73
    74      _model = new CategoryExplorerModel(rootNode);
    75
    76      setModel(_model);
    77
    78      init();
    79    }
    80
    81    //--------------------------------------------------------------------------
    82    //   Public Methods:
    83    //--------------------------------------------------------------------------
    84
    85    public CategoryExplorerModel getExplorerModel() {
    86      return (_model);
    87    }
    88
    89    public String getToolTipText(MouseEvent e) {
    90
    91      try {
    92        return super.getToolTipText(e);
    93      } catch (Exception ex) {
    94        return "";
    95      }
    96
    97    }
    98
    99    //--------------------------------------------------------------------------
    100   //   Protected Methods:
    101   //--------------------------------------------------------------------------
    102
    103   protected void init() {
    104     // Put visible lines on the JTree.
    105     putClientProperty("JTree.lineStyle", "Angled");
    106
    107     // Configure the Tree with the appropriate Renderers and Editors.
    108
    109     CategoryNodeRenderer renderer = new CategoryNodeRenderer();
    110     setEditable(true);
    111     setCellRenderer(renderer);
    112
    113     CategoryNodeEditor editor = new CategoryNodeEditor(_model);
    114
    115     setCellEditor(new CategoryImmediateEditor(this,
    116         new CategoryNodeRenderer(),
    117         editor));
    118     setShowsRootHandles(true);
    119
    120     setToolTipText("");
    121
    122     ensureRootExpansion();
    123
    124   }
    125
    126   protected void expandRootNode() {
    127     if (_rootAlreadyExpanded) {
    128       return;
    129     }
    130     _rootAlreadyExpanded = true;
    131     TreePath path = new TreePath(_model.getRootCategoryNode().getPath());
    132     expandPath(path);
    133   }
    134
    135   protected void ensureRootExpansion() {
    136     _model.addTreeModelListener(new TreeModelAdapter() {
    137       public void treeNodesInserted(TreeModelEvent e) {
    138         expandRootNode();
    139       }
    140     });
    141   }
    142
    143   //--------------------------------------------------------------------------
    144   //   Private Methods:
    145   //--------------------------------------------------------------------------
    146
    147   //--------------------------------------------------------------------------
    148   //   Nested Top-Level Classes or Interfaces:
    149   //--------------------------------------------------------------------------
    150
    151 }
    152
    153
    154
    155
    156
    157