1 /* -------------------------------------------------------------------
2 * Java source file for the class BorderEditor
3 *
4 * Copyright (c), 2002, Masahiro Takatsuka.
5 * All Rights Researved.
6 *
7 * Original Author: Masahiro Takatsuka (masa@jbeans.net)
8 * $Author: takatsukam $
9 *
10 * $Date: 2003/07/25 04:51:45 $
11 *
12 * $Id: BorderEditor.java,v 1.1.1.1 2003/07/25 04:51:45 takatsukam Exp $
13 *
14 * Reference: Document no:
15 * ___ ___
16 *
17 * To Do:
18 * ___
19 *
20 ------------------------------------------------------------------- */
21
22 /* --------------------------- Package ---------------------------- */
23 package net.jbeans.bean.property.editor;
24
25 /* ------------------ Import classes (packages) ------------------- *//package-summary/html">color="#329900"> ------------------ Import classes (packages) ------------------- *//package-summary.html">color="#329900">/* ------------------ Import classes (packages) ------------------- *//package-summary.html">color="#329900"> ------------------ Import classes (packages) ------------------- */
26 import java.awt.*;
27 import java.awt.event.*;
28 import javax.swing.*;
29 import javax.swing.border.*;
30
31 import net.jbeans.ui.*;
32
33 /*====================================================================
34 Implementation of class BorderEditor
35 ====================================================================*/
36 /***
37 * generally describe BorderEditor in here
38 *
39 * @version $Revision: 1.1.1.1 $
40 * @author Masahiro Takatsuka (masa@jbeans.net)
41 * @see EditorSupport
42 */
43
44 public final class BorderEditor extends EditorSupport {
45 private JComboBox borderCombo;
46 private JButton borderButton;
47 private BorderDialog borderDialog;
48
49 private Border empty = BorderFactory.createEmptyBorder();
50 private Border etched = BorderFactory.createEtchedBorder();
51 private Border bevelLowered = BorderFactory.createLoweredBevelBorder();
52 private Border bevelRaised =BorderFactory.createRaisedBevelBorder();
53 private Border line = BorderFactory.createLineBorder(Color.black);
54 private Border[] borders = {this.empty,
55 this.etched,
56 this.bevelLowered,
57 this.bevelRaised,
58 this.line};
59 private Border border;
60
61 public BorderEditor(){
62 JPanel panel = new JPanel();
63 panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
64 panel.setAlignmentX(Component.LEFT_ALIGNMENT);
65 UIDefaults table = UIManager.getDefaults();
66 table.put("bean.editor.BorderIcon", LookAndFeel.makeIcon(getClass(), "resources/BorderIcon.gif"));
67 table.put("bean.editor.BorderBevelLowered", LookAndFeel.makeIcon(getClass(), "resources/BorderBevelLowered.gif"));
68 table.put("bean.editor.BorderBevelRaised", LookAndFeel.makeIcon(getClass(), "resources/BorderBevelRaised.gif"));
69 table.put("bean.editor.BorderEtched", LookAndFeel.makeIcon(getClass(), "resources/BorderEtched.gif"));
70 table.put("bean.editor.BorderLine", LookAndFeel.makeIcon(getClass(), "resources/BorderLine.gif"));
71
72 this.borderCombo = createComboBox();
73
74 // need rigid area match up
75 Icon buttonIcon = UIManager.getIcon("bean.editor.BorderIcon");
76 this.borderButton = new JButton(buttonIcon);
77 Dimension d = new Dimension(buttonIcon.getIconWidth(), buttonIcon.getIconHeight());
78 this.borderButton.setPreferredSize(d);
79 this.borderButton.setMinimumSize(d);
80 this.borderButton.setMaximumSize(d);
81 this.borderButton.addActionListener(new ActionListener(){
82 public void actionPerformed(ActionEvent e){
83 if (BorderEditor.this.borderDialog == null)
84 BorderEditor.this.borderDialog = new BorderDialog(getPanel().getParent(), "Border Chooser");
85 BorderEditor.this.border = BorderEditor.this.borderDialog.showDialog();
86 if (!(BorderEditor.this.borderDialog.isCancelled()))
87 setValue(BorderEditor.this.border);
88 }
89 });
90 setAlignment(this.borderCombo);
91 setAlignment(this.borderButton);
92 panel.add(this.borderCombo);
93 panel.add(Box.createRigidArea(new Dimension(5,0)));
94 panel.add(this.borderButton);
95 panel.add(Box.createHorizontalGlue());
96 setPanel(panel);
97 }
98
99 public final void setValue(Object value){
100 super.setValue(value);
101 // update our GUI state
102 // set ComboBox to any equal border value
103 // set BorderChooser - setSelectedBorder to any equal value as well
104 }
105
106 private JComboBox createComboBox(){
107 DefaultComboBoxModel model = new DefaultComboBoxModel();
108 for (int i = 0; i < 5; i++){
109 model.addElement(new Integer(i));
110 }
111
112 JComboBox c = new JComboBox(model); // borders);
113 c.setRenderer(new BorderCellRenderer(c));
114 c.setPreferredSize(EditorSupport.MEDIUM_DIMENSION); // new Dimension(120,20));
115 c.setMinimumSize(EditorSupport.MEDIUM_DIMENSION);
116 c.setMaximumSize(EditorSupport.MEDIUM_DIMENSION);
117 c.setSelectedIndex(-1);
118 c.addActionListener(new ActionListener(){
119 public final void actionPerformed(ActionEvent e){
120 JComboBox cb = (JComboBox)e.getSource();
121 BorderEditor.this.border = BorderEditor.this.borders[cb.getSelectedIndex()];
122 setValue(BorderEditor.this.border);
123 }
124 });
125 return c;
126 }
127
128 public final String getJavaInitializationString() {
129
130 Border border = (Border) getValue();
131
132 // return "javax.swing.BorderFactory(new javax.awt.Font(\"" + font.getFamily() + "\", " +
133 // font.getStyle() + ", " + font.getSize() + ")";
134
135 return null;
136 }
137
138 class BorderCellRenderer extends JLabel implements ListCellRenderer {
139 JComboBox _combobox;
140 Icon[] _images = {
141 null,
142 UIManager.getIcon("bean.editor.BorderEtched"),
143 UIManager.getIcon("bean.editor.BorderBevelLowered"),
144 UIManager.getIcon("bean.editor.BorderBevelRaised"),
145 UIManager.getIcon("bean.editor.BorderLine") };
146
147 String[] _desc = {
148 "Empty",
149 "Etched",
150 "BevelLowered",
151 "BevelRaised",
152 "Line" };
153
154 BorderCellRenderer(JComboBox x) {
155 _combobox = x;
156 setOpaque(true);
157 }
158
159 public final Component getListCellRendererComponent(JList list,
160 Object value,
161 int modelIndex,
162 boolean isSelected,
163 boolean cellHasFocus) {
164 if (value == null) {
165 setText("");
166 setIcon(null);
167 } else {
168 int index = ((Integer)value).intValue();
169 if (index < 0){
170 setText("");
171 setIcon(null);
172 } else {
173 String text = " " + _desc[index];
174 setIcon(_images[index]);
175 setText(text);
176 if (isSelected){
177 setBackground(UIManager.getColor("ComboBox.selectionBackground"));
178 setForeground(UIManager.getColor("ComboBox.selectionForeground"));
179 } else {
180 setBackground(UIManager.getColor("ComboBox.background"));
181 setForeground(UIManager.getColor("ComboBox.foreground"));
182 }
183 }
184 }
185 return this;
186 }
187 }
188
189 public final void editorChangeValue(Object value){
190 }
191
192 final class BorderDialog extends JDialog {
193 JPanel pane;
194 JButton okButton;
195 BorderChooser borderChooser;
196 Border border = null;
197 boolean cancel = false;
198
199 public BorderDialog(Component c, String title){
200 super(JOptionPane.getFrameForComponent(c), title, true);
201 Container contentPane = getContentPane();
202 this.pane = new JPanel();
203 this.pane.setLayout(new BorderLayout());
204 contentPane.setLayout(new BorderLayout());
205 this.okButton = new JButton("OK"); // new BorderTracker(_pane);
206 ActionListener okListener = new ActionListener(){
207 public final void actionPerformed(ActionEvent e){
208 // get the Border from the pane
209 BorderDialog.this.border = getBorder();
210 }
211 };
212
213 getRootPane().setDefaultButton(this.okButton);
214 this.okButton.setActionCommand("OK");
215 if (okListener != null) {
216 this.okButton.addActionListener(okListener);
217 }
218 this.okButton.addActionListener(new ActionListener() {
219 public final void actionPerformed(ActionEvent e) {
220 hide();
221 }
222 });
223 JButton cancelButton = new JButton("Cancel");
224 cancelButton.setActionCommand("cancel");
225 cancelButton.addActionListener(new ActionListener() {
226 public final void actionPerformed(ActionEvent e) {
227 BorderDialog.this.cancel = true;
228 hide();
229 }
230 });
231 // borderlayout
232 addBorderChooser(this.pane);
233 JPanel buttonPanel = new JPanel();
234 buttonPanel.add(cancelButton);
235 buttonPanel.add(this.okButton);
236 this.pane.add(buttonPanel, BorderLayout.SOUTH);
237 contentPane.add(this.pane, BorderLayout.CENTER);
238 pack();
239 this.addWindowListener(new Closer());
240 this.addComponentListener(new DisposeOnClose());
241 }
242
243 public final void addBorderChooser(JPanel panel){
244 this.borderChooser = new BorderChooser();
245 panel.add(this.borderChooser, BorderLayout.CENTER);
246 }
247
248 public final void setBorder(){ // called from pane
249 }
250
251 public final Border getBorder(){
252 return this.borderChooser.getSelectedBorder();
253 // return this.border;
254 }
255
256 public final Border showDialog(){
257 this.cancel = false;
258 UiUtil.centerComponent(this);
259 show();
260 return getBorder(); // border should be ok
261 }
262
263 public final boolean isCancelled(){
264 return this.cancel;
265 }
266
267 class Closer extends WindowAdapter {
268 public final void windowClosing(WindowEvent e) {
269 Window w = e.getWindow();
270 w.hide();
271 }
272 }
273
274 class DisposeOnClose extends ComponentAdapter {
275 public final void componentHidden(ComponentEvent e) {
276 Window w = (Window)e.getComponent();
277 w.dispose();
278 }
279 }
280
281 }
282
283
284 public final static void main(String args[]){
285 JFrame f = new JFrame();
286 f.addWindowListener(new WindowAdapter(){
287 public final void windowClosing(WindowEvent e){
288 System.exit(0);
289 }
290 });
291 BorderEditor editor = new BorderEditor();
292 f.getContentPane().add(editor.getCustomEditor());
293 f.pack();
294 f.show();
295 }
296
297 }
This page was automatically generated by Maven