Source code: com/eireneh/swing/config/StyleField.java
1
2 package com.eireneh.swing.config;
3
4 import java.awt.*;
5 import java.awt.event.*;
6 import javax.swing.*;
7
8 import com.eireneh.swing.*;
9 import com.eireneh.config.*;
10 import com.eireneh.config.swing.*;
11 import com.eireneh.util.*;
12
13 /**
14 * A PropertyNumberField is a PropertyTextField that only
15 * stores numbers.
16 *
17 * <table border='1' cellPadding='3' cellSpacing='0' width="100%">
18 * <tr><td bgColor='white'class='TableRowColor'><font size='-7'>
19 * Distribution Licence:<br />
20 * Project B is free software; you can redistribute it
21 * and/or modify it under the terms of the GNU General Public License,
22 * version 2 as published by the Free Software Foundation.<br />
23 * This program is distributed in the hope that it will be useful,
24 * but WITHOUT ANY WARRANTY; without even the implied warranty of
25 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
26 * General Public License for more details.<br />
27 * The License is available on the internet
28 * <a href='http://www.gnu.org/copyleft/gpl.html'>here</a>, by writing to
29 * <i>Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
30 * MA 02111-1307, USA</i>, Or locally at the Licence link below.<br />
31 * The copyright to this program is held by it's authors.
32 * </font></td></tr></table>
33 * @see <a href='http://www.eireneh.com/servlets/Web'>Project B Home</a>
34 * @see docs.Licence
35 * @author Joe Walker
36 */
37 public class StyleField extends JPanel implements Field
38 {
39 /**
40 * Create a new FileField
41 */
42 public StyleField()
43 {
44 font = new FontButtonField();
45 font.setOptions("Font");
46 foreground = new ColorField();
47 foreground.setOptions("Fore");
48 background = new ColorField();
49 background.setOptions("Back");
50
51 match.setColumns(7);
52 iconfile.setColumns(8);
53
54 setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0));
55 add(new JLabel("Match: "));
56 add(match);
57 add(new JLabel(" Style: "));
58 add(font.getComponent());
59 add(foreground.getComponent());
60 add(background.getComponent());
61 // add(iconfile);
62 }
63
64 /**
65 * This method does nothing because there is no configuring that this
66 * class requires other than the current value.
67 * @param obj The ignored paramter
68 */
69 public void setOptions(Object obj)
70 {
71 }
72
73 /**
74 * Return a string version of the current value
75 * @return The current value
76 */
77 public String getValue()
78 {
79 return match.getText()+":"+
80 font.getValue()+":"+
81 foreground.getValue()+":"+
82 background.getValue()+":"+
83 iconfile.getText();
84 }
85
86 /**
87 * Set the current value
88 * @param value The new text
89 */
90 public void setValue(String value)
91 {
92 if (value == null || value.equals(""))
93 {
94 match.setText("");
95 font.setValue("");
96 foreground.setValue("");
97 background.setValue("");
98 iconfile.setText("");
99 return;
100 }
101
102 int c1 = value.indexOf(":", 0);
103 int c2 = value.indexOf(":", c1+1);
104 int c3 = value.indexOf(":", c2+1);
105 int c4 = value.indexOf(":", c3+1);
106
107 if (c4 == -1) throw new IllegalArgumentException(value);
108
109 match.setText(value.substring(0, c1));
110 font.setValue(value.substring(c1+1, c2));
111 foreground.setValue(value.substring(c2+1, c3));
112 background.setValue(value.substring(c3+1, c4));
113 iconfile.setText(value.substring(c4+1));
114 }
115
116 /**
117 * Get the actual component that we can add to a Panel.
118 * (This can well be this in an implementation).
119 */
120 public JComponent getComponent()
121 {
122 return this;
123 }
124
125 /** The match string */
126 private JTextField match = new JTextField();
127
128 /** The font */
129 private FontButtonField font;
130
131 /** The foreground color */
132 private ColorField foreground;
133
134 /** The background color */
135 private ColorField background;
136
137 /** The icon */
138 private JTextField iconfile = new JTextField();
139 }
140