1 /*
2 * Copyright (c) 2003-2008 by Cosylab d. d.
3 *
4 * This file is part of CosyBeans.
5 *
6 * CosyBeans is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
9 * (at your option) any later version.
10 *
11 * CosyBeans is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with CosyBeans. If not, see <http://www.gnu.org/licenses/>.
18 */
19
20 package com.cosylab.gui;
21
22 import java.awt.Component;
23 import java.beans.PropertyChangeEvent;
24 import java.beans.PropertyChangeListener;
25 import java.beans.PropertyEditor;
26 import java.beans.PropertyEditorSupport;
27
28 /**
29 * <code>IconPropertyEditor</code> is an implementation of the
30 * <code>java.beans.PropertyEditor</code> which enables setting of an icon.
31 * @author Jaka Bobnar, Cosylab
32 *
33 */
34 public class IconPropertyEditor extends PropertyEditorSupport implements PropertyEditor {
35
36 private IconEditor editor;
37
38 /**
39 * Creates new instance of SelectorPropertyEditor.
40 */
41 public IconPropertyEditor() {
42 super();
43 }
44
45 /*
46 * (non-Javadoc)
47 * @see java.beans.PropertyEditorSupport#getCustomEditor()
48 */
49 public Component getCustomEditor() {
50 if (editor == null) {
51 editor = new IconEditor();
52 editor.setIcon((String)getValue());
53 editor.addPropertyChangeListener(IconEditor.ICON,new PropertyChangeListener() {
54 public void propertyChange(PropertyChangeEvent evt) {
55 setValueSilently(editor.getIconPath());
56 }
57 });
58 editor.setSize(250,80);
59 }
60
61 return editor;
62 }
63
64 /*
65 * (non-Javadoc)
66 * @see java.beans.PropertyEditorSupport#getJavaInitializationString()
67 */
68 public String getJavaInitializationString() {
69 return "\"" + getAsText() + "\"";
70 // if (getValue() == null) return "null";
71 // String name = getValue().toString();
72 // name = name.replace('\\','/');
73 // int index = name.indexOf("!/");
74 // if (index > 0) {
75 // name = name.substring(index+2);
76 // }
77 // return "com.cosylab.gui.components.util.IconHelper.createIcon(\"" + name + "\")";
78 }
79
80 /*
81 * (non-Javadoc)
82 * @see java.beans.PropertyEditorSupport#supportsCustomEditor()
83 */
84 public boolean supportsCustomEditor() {
85 return true;
86 }
87
88 private void setValueSilently(Object value) {
89 super.setValue(value);
90 }
91
92 /* (non-Javadoc)
93 * @see java.beans.PropertyEditorSupport#setValue(java.lang.Object)
94 */
95 public void setValue(Object value) {
96 super.setValue(value);
97 if (editor!=null) {
98 editor.setIcon((String)value);
99 }
100 }
101
102 }
103
104
105 /* __oOo__ */