1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.xnap.gui.component;
21
22 import java.awt.BorderLayout;
23 import java.awt.Component;
24 import java.awt.Font;
25 import java.awt.Insets;
26 import java.awt.event.ActionEvent;
27
28 import javax.swing.AbstractAction;
29 import javax.swing.Action;
30 import javax.swing.JButton;
31 import javax.swing.JLabel;
32 import javax.swing.JPanel;
33 import javax.swing.border.BevelBorder;
34
35 import org.xnap.gui.util.IconHelper;
36
37 /***
38 * Provides a panel that displays a font name and a button that can launch
39 * a {@link FontChooserDialog}.
40 */
41 public class FontPanel extends JPanel
42 {
43
44
45
46
47
48 private Component parent;
49 private Font font;
50 private JLabel jlFont;
51
52
53
54 public FontPanel(Component parent, Font newFont)
55 {
56 this.parent = parent;
57
58 setLayout(new BorderLayout());
59
60 jlFont = new JLabel();
61 jlFont.setBorder(new BevelBorder(BevelBorder.LOWERED));
62 add(jlFont, BorderLayout.CENTER);
63
64 JButton jb = new XNapButton(new FontAction());
65 jb.setMargin(new Insets(1, 1, 1, 1));
66 add(jb, BorderLayout.EAST);
67
68 setSelectedFont(newFont);
69 }
70
71
72
73 public Font getSelectedFont()
74 {
75 return font;
76 }
77
78 /***
79 * Makes sure that font is always != null.
80 */
81 public void setSelectedFont(Font newValue)
82 {
83 font = newValue;
84 jlFont.setFont(font);
85 jlFont.setText(" " + font.getName() + ", " + font.getSize());
86 }
87
88 /***
89 *
90 */
91 private class FontAction extends AbstractAction {
92
93 public FontAction()
94 {
95 putValue(Action.SHORT_DESCRIPTION, "Opens font selection dialog.");
96 putValue(IconHelper.XNAP_ICON, "charset.png");
97 }
98
99 public void actionPerformed(ActionEvent event)
100 {
101 Font f = FontChooserDialog.showDialog(parent, getSelectedFont());
102 if (f != null) {
103 setSelectedFont(f);
104 }
105 }
106
107 }
108
109 }
110