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.chainsaw;
    18
    19  import javax.swing.*;
    20  import javax.swing.border.Border;
    21  import javax.swing.table.TableColumn;
    22  import java.awt.*;
    23
    24
    25  /**
    26   * A ListCellRenderer that display a check box if the value
    27   * has been "checked".
    28   * <p>
    29   * Borrowed heavily from the excellent book "Swing, 2nd Edition" by
    30   * Matthew Robinson &amp; Pavel Vorobiev.
    31   *
    32   * @author Paul Smith
    33   */
    34  public abstract class CheckListCellRenderer extends JCheckBox
    35      implements ListCellRenderer {
    36      private final Border noFocusBorder =
    37          BorderFactory.createEmptyBorder(1, 1, 1, 1);
    38
    39      /**
    40       *
    41       */
    42      public CheckListCellRenderer() {
    43          super();
    44          setOpaque(true);
    45          setBorder(noFocusBorder);
    46      }
    47
    48      /* (non-Javadoc)
    49       * @see javax.swing.ListCellRenderer#getListCellRendererComponent(javax.swing.JList, java.lang.Object, int, boolean, boolean)
    50       */
    51      public Component getListCellRendererComponent(
    52          JList list, Object value, int index, boolean isSelected,
    53          boolean cellHasFocus) {
    54          setText(((TableColumn) value).getHeaderValue().toString());
    55          setBackground(
    56              isSelected ? list.getSelectionBackground() : list.getBackground());
    57          setForeground(
    58              isSelected ? list.getSelectionForeground() : list.getForeground());
    59          setFont(list.getFont());
    60          setBorder(
    61              cellHasFocus ? UIManager.getBorder("List.focusCellHighlightBorder")
    62                  : noFocusBorder);
    63
    64          setSelected(isSelected(value));
    65          return this;
    66      }
    67
    68      /**
    69       * @param value
    70       * @return selected flag
    71       */
    72      protected abstract boolean isSelected(Object value);
    73  }