OpenCores
URL https://opencores.org/ocsvn/scarts/scarts/trunk

Subversion Repositories scarts

[/] [scarts/] [trunk/] [toolchain/] [scarts-gcc/] [gcc-4.1.1/] [libjava/] [classpath/] [java/] [beans/] [PropertyEditorManager.java] - Blame information for rev 14

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 14 jlechner
/* java.beans.PropertyEditorManager
2
   Copyright (C) 1998 Free Software Foundation, Inc.
3
 
4
This file is part of GNU Classpath.
5
 
6
GNU Classpath 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 2, or (at your option)
9
any later version.
10
 
11
GNU Classpath is distributed in the hope that it will be useful, but
12
WITHOUT ANY WARRANTY; without even the implied warranty of
13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14
General Public License for more details.
15
 
16
You should have received a copy of the GNU General Public License
17
along with GNU Classpath; see the file COPYING.  If not, write to the
18
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19
02110-1301 USA.
20
 
21
Linking this library statically or dynamically with other modules is
22
making a combined work based on this library.  Thus, the terms and
23
conditions of the GNU General Public License cover the whole
24
combination.
25
 
26
As a special exception, the copyright holders of this library give you
27
permission to link this library with independent modules to produce an
28
executable, regardless of the license terms of these independent
29
modules, and to copy and distribute the resulting executable under
30
terms of your choice, provided that you also meet, for each linked
31
independent module, the terms and conditions of the license of that
32
module.  An independent module is a module which is not derived from
33
or based on this library.  If you modify this library, you may extend
34
this exception to your version of the library, but you are not
35
obligated to do so.  If you do not wish to do so, delete this
36
exception statement from your version. */
37
 
38
 
39
package java.beans;
40
 
41
import gnu.java.beans.editors.ColorEditor;
42
import gnu.java.beans.editors.FontEditor;
43
import gnu.java.beans.editors.NativeBooleanEditor;
44
import gnu.java.beans.editors.NativeByteEditor;
45
import gnu.java.beans.editors.NativeDoubleEditor;
46
import gnu.java.beans.editors.NativeFloatEditor;
47
import gnu.java.beans.editors.NativeIntEditor;
48
import gnu.java.beans.editors.NativeLongEditor;
49
import gnu.java.beans.editors.NativeShortEditor;
50
import gnu.java.beans.editors.StringEditor;
51
import gnu.java.lang.ClassHelper;
52
 
53
import java.awt.Color;
54
import java.awt.Font;
55
 
56
/**
57
 * PropertyEditorManager is used to find property editors
58
 * for various types (not necessarily Beans).<P>
59
 *
60
 * It first checks to see if the property editor is
61
 * already registered; if it is, that property editor is
62
 * used.  Next it takes the type's classname and appends
63
 * "Editor" to it, and searches first in the class's
64
 * package and then in the property editor search path.
65
 *
66
 * <p>Default property editors are provided for:</p>
67
 *
68
 * <ol>
69
 * <li>boolean, byte, short, int, long, float, and double</li>
70
 * <li>java.lang.String</li>
71
 * <li>java.awt.Color</li>
72
 * <li>java.awt.Font</li>
73
 * </ol>
74
 *
75
 * <p><strong>Spec Suggestion:</strong> Perhaps an editor for
76
 * Filename or something like it should be provided.  As well
77
 * as char.</p>
78
 *
79
 * @author John Keiser
80
 * @since 1.1
81
 * @version 1.1.0, 29 Jul 1998
82
 */
83
 
84
public class PropertyEditorManager
85
{
86
  static java.util.Hashtable editors = new java.util.Hashtable();
87
  static String[] editorSearchPath = { "gnu.java.beans.editors",
88
                                       "sun.beans.editors" };
89
 
90
  static
91
    {
92
      registerEditor(Boolean.TYPE, NativeBooleanEditor.class);
93
      registerEditor(Byte.TYPE,    NativeByteEditor.class);
94
      registerEditor(Short.TYPE,   NativeShortEditor.class);
95
      registerEditor(Integer.TYPE, NativeIntEditor.class);
96
      registerEditor(Long.TYPE,    NativeLongEditor.class);
97
      registerEditor(Float.TYPE,   NativeFloatEditor.class);
98
      registerEditor(Double.TYPE,  NativeDoubleEditor.class);
99
      registerEditor(String.class, StringEditor.class);
100
      registerEditor(Color.class,  ColorEditor.class);
101
      registerEditor(Font.class,   FontEditor.class);
102
    }
103
 
104
  /**
105
   * Beats me why this class can be instantiated, but there
106
   * you have it.
107
   */
108
  public PropertyEditorManager()
109
  {
110
    // Do nothing here
111
  }
112
 
113
  /**
114
   * Register an editor for a class.  Replaces old editor
115
   * if there was one registered before.
116
   *
117
   * @param editedClass the class that the property editor
118
   *        will edit.
119
   * @param editorClass the PropertyEditor class.
120
   */
121
  public static void registerEditor(Class editedClass, Class editorClass)
122
  {
123
    editors.put(editedClass, editorClass);
124
  }
125
 
126
  /**
127
   * Returns a new instance of the property editor for the
128
   * specified class.
129
   *
130
   * @param editedClass the class that the property editor
131
   *        will edit.
132
   * @return a PropertyEditor instance that can edit the
133
   *         specified class.
134
   */
135
  public static PropertyEditor findEditor(Class editedClass)
136
  {
137
    try
138
      {
139
        Class found = (Class)editors.get(editedClass);
140
        if(found != null)
141
          {
142
            return (PropertyEditor)found.newInstance();
143
          }
144
 
145
        ClassLoader contextClassLoader
146
                = Thread.currentThread().getContextClassLoader();
147
 
148
        try
149
          {
150
            found = Class.forName(editedClass.getName()+"Editor", true,
151
                                  contextClassLoader);
152
            registerEditor(editedClass,found);
153
            return (PropertyEditor)found.newInstance();
154
          }
155
        catch(ClassNotFoundException E)
156
          {
157
          }
158
 
159
        String appendName
160
                = "."
161
                + ClassHelper.getTruncatedClassName(editedClass)
162
                + "Editor";
163
        synchronized(editorSearchPath)
164
          {
165
            for(int i=0;i<editorSearchPath.length;i++)
166
              {
167
                try
168
                  {
169
                    found = Class.forName(editorSearchPath[i] + appendName,
170
                                          true, contextClassLoader);
171
                    registerEditor(editedClass,found);
172
                    return (PropertyEditor)found.newInstance();
173
                  }
174
                catch(ClassNotFoundException E)
175
                  {
176
                  }
177
              }
178
          }
179
      }
180
    catch(InstantiationException E)
181
      {
182
      }
183
    catch(IllegalAccessException E)
184
      {
185
      }
186
 
187
    return null;
188
  }
189
 
190
  /**
191
   * Get the editor search path.
192
   * As a minor departure from the spec, the default value
193
   * for the editor search path is "gnu.java.beans.editors",
194
   * "sun.beans.editors".
195
   *
196
   * @return the editor search path.
197
   */
198
  public static String[] getEditorSearchPath()
199
  {
200
    return editorSearchPath;
201
  }
202
 
203
  /**
204
   * Set the editor search path.
205
   *
206
   * @param editorSearchPath the new value for the editor search path.
207
   */
208
  public static void setEditorSearchPath(String[] editorSearchPath)
209
  {
210
    synchronized(editorSearchPath)
211
      {
212
        PropertyEditorManager.editorSearchPath = editorSearchPath;
213
      }
214
  }
215
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.