1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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 <psmith@apache.org>
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 }