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
    18  /*
    19   * @author Paul Smith &lt;psmith@apache.org&gt;
    20   *
    21  */
    22  package org.apache.log4j.chainsaw;
    23
    24  import java.awt.BorderLayout;
    25  import java.awt.Color;
    26  import java.awt.Container;
    27  import java.awt.Font;
    28  import java.awt.Frame;
    29  import java.awt.GraphicsEnvironment;
    30  import java.util.HashSet;
    31  import java.util.Set;
    32
    33  import javax.swing.BorderFactory;
    34  import javax.swing.JLabel;
    35  import javax.swing.JPanel;
    36  import javax.swing.JWindow;
    37  import javax.swing.SwingConstants;
    38
    39  import org.apache.log4j.chainsaw.icons.ChainsawIcons;
    40
    41
    42  /**
    43   * A simple splash screen to be used at startup, while everything get's initialized.
    44   * @author Paul Smith &lt;psmith@apache.org&gt;
    45   *
    46   */
    47  class ChainsawSplash extends JWindow {
    48    ChainsawSplash(Frame owner) {
    49      super(owner);
    50
    51      Container container = getContentPane();
    52      JPanel panel = new JPanel(new BorderLayout());
    53      JLabel logo = new JLabel(ChainsawIcons.ICON_LOG4J);
    54
    55      JLabel text = new JLabel("Chainsaw v2", SwingConstants.CENTER);
    56      Font textFont = null;
    57      String[] preferredFontNames =
    58        new String[] { "Arial", "Helvetica", "SansSerif" };
    59
    60      Set availableFontNames = new HashSet();
    61      Font[] allFonts =
    62        GraphicsEnvironment.getLocalGraphicsEnvironment().getAllFonts();
    63
    64      for (int i = 0; i < allFonts.length; i++) {
    65        availableFontNames.add(allFonts[i].getName());
    66      }
    67
    68      for (int i = 0; i < preferredFontNames.length; i++) {
    69        if (availableFontNames.contains(preferredFontNames[i])) {
    70          textFont = new Font(preferredFontNames[i], Font.PLAIN, 12);
    71
    72          System.out.println("Using font=" + textFont.getName());
    73
    74          break;
    75        }
    76      }
    77
    78      if (textFont == null) {
    79        System.out.println("Using basic font");
    80        textFont = text.getFont();
    81      }
    82
    83      text.setFont(textFont.deriveFont(16f).deriveFont(Font.BOLD));
    84      text.setBackground(Color.white);
    85      text.setForeground(Color.black);
    86      text.setBorder(BorderFactory.createLoweredBevelBorder());
    87      panel.add(logo, BorderLayout.CENTER);
    88      panel.add(text, BorderLayout.SOUTH);
    89      panel.setBorder(BorderFactory.createLineBorder(Color.black, 1));
    90
    91      container.add(panel);
    92      pack();
    93    }
    94  }