1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package com.cosylab.gui.property.editors;
21
22 import java.awt.Component;
23 import java.awt.Font;
24 import java.awt.GraphicsEnvironment;
25 import java.awt.event.ItemEvent;
26 import java.awt.event.ItemListener;
27
28 import javax.swing.DefaultComboBoxModel;
29 import javax.swing.DefaultListCellRenderer;
30 import javax.swing.JComboBox;
31 import javax.swing.JList;
32
33
34
35
36
37
38
39
40
41
42 public class SimpleFontEditor extends JComboBox implements PropertyEditor {
43 String[] fonts;
44
45 private class FontRenderer extends DefaultListCellRenderer {
46
47 public Component getListCellRendererComponent(JList list, Object value,
48 int index, boolean isSelected, boolean cellHasFocus) {
49 String name = (String) value;
50 Component c = super.getListCellRendererComponent(list, value,
51 index, isSelected, cellHasFocus);
52 if (isSelected || !SimpleFontEditor.this.hasFocus())
53 SimpleFontEditor.this.setFont(Font.decode(name));
54 c.setFont(Font.decode(name));
55 return c;
56
57 }
58
59 }
60
61 public SimpleFontEditor() {
62 super();
63 fonts = GraphicsEnvironment.getLocalGraphicsEnvironment()
64 .getAvailableFontFamilyNames();
65 setModel(new DefaultComboBoxModel(fonts));
66 setRenderer(new FontRenderer());
67 setEditable(false);
68
69 addItemListener(new ItemListener() {
70 Object old = null;
71
72 public void itemStateChanged(ItemEvent e) {
73 if (e.getStateChange() == ItemEvent.DESELECTED) {
74 old = e.getItem();
75 } else {
76 firePropertyChange(PROPERTY_VALUE_NAME, old, e.getItem());
77 }
78 }
79 });
80 }
81
82 public Object getPropertyValue() {
83 String name = (String) getSelectedItem();
84 return Font.decode(name);
85 }
86
87
88
89
90
91
92 public boolean setPropertyValue(Object value) {
93 setSelectedItem(((Font) value).getFamily());
94 return true;
95 }
96
97
98
99
100
101
102 public String getDescription() {
103 return "Font";
104 }
105
106
107
108
109
110
111 public void setDescription(String description) {
112 }
113
114 }