This is the mail archive of the java-patches@gcc.gnu.org mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

FYI: java.beans


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi list,


I commited a patch to java.beans to reformat the code to GNU style. No 
other code changes.


Michael
- -- 
Homepage: http://www.worldforge.org/
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (GNU/Linux)

iD8DBQE+Xe4TWSOgCCdjSDsRAisaAJ4wT4JoK7FHYyQbm3EouBB8BUVfswCghu8L
hcLoAhtjRQkV/GjboEPcvH4=
=+xBr
-----END PGP SIGNATURE-----
Index: ChangeLog
===================================================================
RCS file: /cvs/gcc/gcc/libjava/ChangeLog,v
retrieving revision 1.1734
diff -u -r1.1734 ChangeLog
--- ChangeLog	25 Feb 2003 11:09:43 -0000	1.1734
+++ ChangeLog	27 Feb 2003 10:50:42 -0000
@@ -1,3 +1,10 @@
+2003-02-27  Michael Koch  <konqueror at gmx dot de>
+
+	* java/beans/Beans.java,
+	java/beans/FeatureDescriptor.java
+	java/beans/PropertyEditorManager.java:
+	Reformated to GNU style.
+
 2003-02-25  Michael Koch  <konqueror at gmx dot de>
 
 	* gnu/java/nio/MappedByteFileBuffer.java,
Index: java/beans/Beans.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/beans/Beans.java,v
retrieving revision 1.3
diff -u -r1.3 Beans.java
--- java/beans/Beans.java	22 Jan 2002 22:40:11 -0000	1.3
+++ java/beans/Beans.java	27 Feb 2003 10:50:42 -0000
@@ -43,166 +43,216 @@
 import gnu.java.io.*;
 
 /**
- * <code>Beans</code> provides some helper methods that allow the basic operations of Bean-ness.
+ * <code>Beans</code> provides some helper methods that allow the basic
+ * operations of Bean-ness.
  *
  * @author John Keiser
- * @since JDK1.1
+ * @since 1.1
  * @version 1.1.0, 29 Jul 1998
  *
  */
-public class Beans {
-	static boolean designTime = false;
-	static boolean guiAvailable = true;
-
-
-	/**
-	 * Once again, we have a java.beans class with only
-	 * static methods that can be instantiated.  When
-	 * will the madness end? :)
-	 */
-	public Beans() {
-	}
-
-	/**
-	 * Allows you to instantiate a Bean.  This method takes
-	 * a ClassLoader from which to read the Bean and the
-	 * name of the Bean.<P>
-	 *
-	 * The Bean name should be a dotted name, like a class.
-	 * It can represent several things.  Beans will search
-	 * for the Bean using the name like this:<P>
-	 * <OL>
-	 * <LI>Searches for a serialized instance of the Bean
-	 * using getResource(), mangling the Bean name by
-	 * replacing the dots with slashes and appending .ser
-	 * (for example, gnu.beans.BlahDeBlah would cause
-	 * Beans to search for gnu/beans/BlahDeBlah.ser using
-	 * getResource()).</LI>
-	 * <LI>Searches for the Bean class using the beanName,
-	 * and then instantiates it with the no-arg constructor.
-	 * At that point, if it is an Applet, it provides it
-	 * with AppletContext and AppletStub, and then calls
-	 * init().</LI>
-	 * </OL>
-	 * @param cl the ClassLoader to use, or <CODE>null</CODE>
-	 *        to use the default ClassLoader.
-	 * @param beanName the name of the Bean.
-	 * @return the Bean.
-	 * @XXX
-	 */
-	public static Object instantiate(ClassLoader cl, String beanName) throws IOException, ClassNotFoundException {
-		Object bean;
-
-		InputStream serStream;
-		if(cl == null) {
-			serStream = ClassLoader.getSystemResourceAsStream(beanName.replace('.','/')+".ser");
-		} else {
-			serStream = cl.getResourceAsStream(beanName.replace('.','/')+".ser");
-		}
-		if(serStream != null) {
-			if(cl == null) {
-				ObjectInputStream ois = new ObjectInputStream(serStream);
-				bean = ois.readObject();
-			} else {
-				ClassLoaderObjectInputStream ois = new ClassLoaderObjectInputStream(serStream, cl);
-				bean = ois.readObject();
-			}
-		} else if(cl == null) {
-			Class beanClass = Class.forName(beanName);
-			try {
-				bean = beanClass.newInstance();
-			} catch(IllegalAccessException E) {
-				bean = null;
-			} catch(InstantiationException E) {
-				bean = null;
-			}
-		} else {
-			Class beanClass = cl.loadClass(beanName);
-			try {
-				bean = beanClass.newInstance();
-			} catch(IllegalAccessException E) {
-				bean = null;
-			} catch(InstantiationException E) {
-				bean = null;
-			}
-		}
-
-		if(bean instanceof Applet) {
-			Applet a = (Applet)bean;
-			//a.setAppletContext(???);
-			//a.setStub(???);
-			if(serStream == null) {
-				a.init();
-			}
-		}
-
-		return bean;
-	}
-
-	/**
-	 * Get the Bean as a different class type.
-	 * This should be used instead of casting to get a new
-	 * type view of a Bean, because in the future there may
-	 * be new types of Bean, even Beans spanning multiple
-	 * Objects.
-	 * @param bean the Bean to cast.
-	 * @param newClass the Class to cast it to.
-	 * @return the Bean as a new view, or if the operation
-	 *         could not be performed, the Bean itself.
-	 */
-	public static Object getInstanceOf(Object bean, Class newClass) {
-		return bean;
-	}
-
-	/**
-	 * Determine whether the Bean can be cast to a different
-	 * class type.
-	 * This should be used instead of instanceof to determine
-	 * a Bean's castability, because in the future there may
-	 * be new types of Bean, even Beans spanning multiple
-	 * Objects.
-	 * @param bean the Bean to cast.
-	 * @param newClass the Class to cast it to.
-	 * @return whether the Bean can be cast to the class type
-	 *         in question.
-	 */
-	public static boolean isInstanceOf(Object bean, Class newBeanClass) {
-		return newBeanClass.isInstance(bean);
-	}
-
-	/**
-	 * Find out whether the GUI is available to use.
-	 * Defaults to true.
-	 * @return whether the GUI is available to use.
-	 */
-	public static boolean isGuiAvailable() {
-		return guiAvailable;
-	}
-
-	/**
-	 * Find out whether it is design time.  Design time means
-	 * we are in a RAD tool.
-	 * Defaults to false.
-	 * @return whether it is design time.
-	 */
-	public static boolean isDesignTime() {
-		return designTime;
-	}
-
-	/**
-	 * Set whether the GUI is available to use.
-	 * @param guiAvailable whether the GUI is available to use.
-	 */
-	public static void setGuiAvailable(boolean guiAvailable) throws SecurityException {
-		Beans.guiAvailable = guiAvailable;
-	}
-
-	/**
-	 * Set whether it is design time.  Design time means we
-	 * are in a RAD tool.
-	 * @param designTime whether it is design time.
-	 */
-	public static void setDesignTime(boolean designTime) throws SecurityException {
-		Beans.designTime = designTime;
-	}
+public class Beans
+{
+  static boolean designTime = false;
+  static boolean guiAvailable = true;
+
+  /**
+   * Once again, we have a java.beans class with only
+   * static methods that can be instantiated.  When
+   * will the madness end? :)
+   */
+  public Beans()
+  {
+    // Do nothing here.
+  }
+
+  /**
+   * Allows you to instantiate a Bean.  This method takes
+   * a ClassLoader from which to read the Bean and the
+   * name of the Bean.<P>
+   *
+   * The Bean name should be a dotted name, like a class.
+   * It can represent several things.  Beans will search
+   * for the Bean using the name like this:<P>
+   * <OL>
+   * <LI>Searches for a serialized instance of the Bean
+   * using getResource(), mangling the Bean name by
+   * replacing the dots with slashes and appending .ser
+   * (for example, gnu.beans.BlahDeBlah would cause
+   * Beans to search for gnu/beans/BlahDeBlah.ser using
+   * getResource()).</LI>
+   * <LI>Searches for the Bean class using the beanName,
+   * and then instantiates it with the no-arg constructor.
+   * At that point, if it is an Applet, it provides it
+   * with AppletContext and AppletStub, and then calls
+   * init().</LI>
+   * </OL>
+   *
+   * @param cl the ClassLoader to use, or <CODE>null</CODE>
+   *        to use the default ClassLoader.
+   * @param beanName the name of the Bean.
+   *
+   * @return the Bean.
+   *
+   * @XXX
+   */
+  public static Object instantiate (ClassLoader cl, String beanName)
+    throws IOException, ClassNotFoundException
+  {
+    Object bean;
+    InputStream serStream;
+    
+    if (cl == null)
+      {
+        serStream = ClassLoader.getSystemResourceAsStream
+          (beanName.replace ('.','/')+".ser");
+      }
+    else
+      {
+        serStream = cl.getResourceAsStream (beanName.replace ('.', '/')
+                                            + ".ser");
+      }
+    
+    if (serStream != null)
+      {
+        if(cl == null)
+          {
+            ObjectInputStream ois = new ObjectInputStream(serStream);
+            bean = ois.readObject();
+          }
+        else
+          {
+            ClassLoaderObjectInputStream ois =
+              new ClassLoaderObjectInputStream (serStream, cl);
+            bean = ois.readObject();
+          }
+      }
+    else if(cl == null)
+      {
+        Class beanClass = Class.forName(beanName);
+        try
+          {
+            bean = beanClass.newInstance();
+          }
+        catch(IllegalAccessException E)
+          {
+            bean = null;
+          }
+        catch(InstantiationException E)
+          {
+            bean = null;
+          }
+      }
+    else
+      {
+        Class beanClass = cl.loadClass(beanName);
+        try
+          {
+            bean = beanClass.newInstance();
+          }
+        catch(IllegalAccessException E)
+          {
+            bean = null;
+          }
+        catch(InstantiationException E)
+          {
+            bean = null;
+          }
+      }
+
+    if(bean instanceof Applet)
+      {
+        Applet a = (Applet)bean;
+        //a.setAppletContext(???);
+        //a.setStub(???);
+        if(serStream == null)
+          {
+            a.init();
+          }
+      }
+
+    return bean;
+  }
+
+  /**
+   * Get the Bean as a different class type.
+   * This should be used instead of casting to get a new
+   * type view of a Bean, because in the future there may
+   * be new types of Bean, even Beans spanning multiple
+   * Objects.
+   *
+   * @param bean the Bean to cast.
+   * @param newClass the Class to cast it to.
+   *
+   * @return the Bean as a new view, or if the operation
+   *         could not be performed, the Bean itself.
+   */
+  public static Object getInstanceOf(Object bean, Class newClass)
+  {
+    return bean;
+  }
+
+  /**
+   * Determine whether the Bean can be cast to a different
+   * class type.
+   * This should be used instead of instanceof to determine
+   * a Bean's castability, because in the future there may
+   * be new types of Bean, even Beans spanning multiple
+   * Objects.
+   *
+   * @param bean the Bean to cast.
+   * @param newClass the Class to cast it to.
+   *
+   * @return whether the Bean can be cast to the class type
+   *         in question.
+   */
+  public static boolean isInstanceOf(Object bean, Class newBeanClass)
+  {
+    return newBeanClass.isInstance(bean);
+  }
+
+  /**
+   * Find out whether the GUI is available to use.
+   * Defaults to true.
+   *
+   * @return whether the GUI is available to use.
+   */
+  public static boolean isGuiAvailable()
+  {
+    return guiAvailable;
+  }
+
+  /**
+   * Find out whether it is design time.  Design time means
+   * we are in a RAD tool.
+   * Defaults to false.
+   *
+   * @return whether it is design time.
+   */
+  public static boolean isDesignTime()
+  {
+    return designTime;
+  }
+
+  /**
+   * Set whether the GUI is available to use.
+   * @param guiAvailable whether the GUI is available to use.
+   */
+  public static void setGuiAvailable(boolean guiAvailable)
+    throws SecurityException
+  {
+    Beans.guiAvailable = guiAvailable;
+  }
+
+  /**
+   * Set whether it is design time.  Design time means we
+   * are in a RAD tool.
+   *
+   * @param designTime whether it is design time.
+   */
+  public static void setDesignTime(boolean designTime)
+    throws SecurityException
+  {
+    Beans.designTime = designTime;
+  }
 }
Index: java/beans/FeatureDescriptor.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/beans/FeatureDescriptor.java,v
retrieving revision 1.2
diff -u -r1.2 FeatureDescriptor.java
--- java/beans/FeatureDescriptor.java	22 Jan 2002 22:40:11 -0000	1.2
+++ java/beans/FeatureDescriptor.java	27 Feb 2003 10:50:42 -0000
@@ -41,126 +41,175 @@
 import java.util.*;
 
 /**
- ** FeatureDescriptor is the common superclass for all JavaBeans Descriptor classes.
- ** JavaBeans descriptors are abstract descriptors of properties,
- ** events, methods, beans, etc.<P>
- **
- ** <STRONG>Documentation Convention:</STRONG> for proper
- ** Internalization of Beans inside an RAD tool, sometimes there
- ** are two names for a property or method: a programmatic, or
- ** locale-independent name, which can be used anywhere, and a
- ** localized, display name, for ease of use.  In the
- ** documentation I will specify different String values as
- ** either <EM>programmatic</EM> or <EM>localized</EM> to
- ** make this distinction clear.
- **
- ** @author John Keiser
- ** @since JDK1.1
- ** @version 1.1.0, 31 May 1998
- **/
-
-public class FeatureDescriptor {
-	String name;
-	String displayName;
-	String shortDescription;
-	boolean expert;
-	boolean hidden;
-
-	Hashtable valueHash;
-
-	/** Instantiate this FeatureDescriptor with appropriate default values.**/
-	public FeatureDescriptor() {
-		valueHash = new Hashtable();
-	}
-
-	/** Get the programmatic name of this feature. **/
-	public String getName() {
-		return name;
-	}
-
-	/** Set the programmatic name of this feature.
-	 ** @param name the new name for this feature.
-	 **/
-	public void setName(String name) {
-		this.name = name;
-	}
-
-	/** Get the localized (display) name of this feature. **/
-	public String getDisplayName() {
-		return displayName;
-	}
-
-	/** Set the localized (display) name of this feature.
-	 ** @param displayName the new display name for this feature.
-	 **/
-	public void setDisplayName(String displayName) {
-		this.displayName = displayName;
-	}
-
-	/** Get the localized short description for this feature. **/
-	public String getShortDescription() {
-		return shortDescription;
-	}
-
-	/** Set the localized short description for this feature.
-	 ** @param shortDescription the new short description for this feature.
-	 **/
-	public void setShortDescription(String shortDescription) {
-		this.shortDescription = shortDescription;
-	}
-
-	/** Indicates whether this feature is for expert use only.
-	 ** @return true if for use by experts only, or false if anyone can use it.
-	 **/
-	public boolean isExpert() {
-		return expert;
-	}
-
-	/** Set whether this feature is for expert use only.
-	 ** @param expert true if for use by experts only, or false if anyone can use it.
-	 **/
-	public void setExpert(boolean expert) {
-		this.expert = expert;
-	}
-
-	/** Indicates whether this feature is for use by tools only.
-	 ** If it is for use by tools only, then it should not be displayed.
-	 ** @return true if tools only should use it, or false if anyone can see it.
-	 **/
-	public boolean isHidden() {
-		return hidden;
-	}
-
-	/** Set whether this feature is for use by tools only.
-	 ** If it is for use by tools only, then it should not be displayed.
-	 ** @param hidden true if tools only should use it, or false if anyone can see it.
-	 **/
-	public void setHidden(boolean hidden) {
-		this.hidden = hidden;
-	}
-
-
-	/** Get an arbitrary value set with setValue().
-	 ** @param name the programmatic name of the key.
-	 ** @return the value associated with this name, or null if there is none.
-	 **/
-	public Object getValue(String name) {
-		return valueHash.get(name);
-	}
-
-	/** Set an arbitrary string-value pair with this feature.
-	 ** @param name the programmatic name of the key.
-	 ** @param value the value to associate with the name.
-	 **/
-	public void setValue(String name, Object value) {
-		valueHash.put(name, value);
-	}
-
-	/** Get a list of the programmatic key names set with setValue().
-	 ** @return an Enumerator over all the programmatic key names associated
-	 ** with this feature.
-	 **/
-	public Enumeration attributeNames() {
-		return valueHash.keys();
-	}
+ * FeatureDescriptor is the common superclass for all JavaBeans Descriptor
+ * classes. JavaBeans descriptors are abstract descriptors of properties,
+ * events, methods, beans, etc.<P>
+ *
+ * <STRONG>Documentation Convention:</STRONG> for proper
+ * Internalization of Beans inside an RAD tool, sometimes there
+ * are two names for a property or method: a programmatic, or
+ * locale-independent name, which can be used anywhere, and a
+ * localized, display name, for ease of use.  In the
+ * documentation I will specify different String values as
+ * either <EM>programmatic</EM> or <EM>localized</EM> to
+ * make this distinction clear.
+ *
+ * @author John Keiser
+ * @since 1.1
+ * @version 1.1.0, 31 May 1998
+ */
+
+public class FeatureDescriptor
+{
+  String name;
+  String displayName;
+  String shortDescription;
+  boolean expert;
+  boolean hidden;
+
+  Hashtable valueHash;
+
+  /**
+   * Instantiate this FeatureDescriptor with appropriate default values.
+   */
+  public FeatureDescriptor()
+  {
+    valueHash = new Hashtable();
+  }
+
+  /**
+   * Get the programmatic name of this feature.
+   */
+  public String getName()
+  {
+    return name;
+  }
+
+  /**
+   * Set the programmatic name of this feature.
+   *
+   * @param name the new name for this feature.
+   */
+  public void setName(String name)
+  {
+    this.name = name;
+  }
+
+  /**
+   * Get the localized (display) name of this feature.
+   */
+  public String getDisplayName()
+  {
+    return displayName;
+  }
+
+  /**
+   * Set the localized (display) name of this feature.
+   *
+   * @param displayName the new display name for this feature.
+   */
+  public void setDisplayName(String displayName)
+  {
+    this.displayName = displayName;
+  }
+
+  /**
+   * Get the localized short description for this feature.
+   */
+  public String getShortDescription()
+  {
+    return shortDescription;
+  }
+
+  /**
+   * Set the localized short description for this feature.
+   *
+   * @param shortDescription the new short description for this feature.
+   */
+  public void setShortDescription(String shortDescription)
+  {
+    this.shortDescription = shortDescription;
+  }
+
+  /**
+   * Indicates whether this feature is for expert use only.
+   *
+   * @return true if for use by experts only,
+   * or false if anyone can use it.
+   */
+  public boolean isExpert()
+  {
+    return expert;
+  }
+
+  /**
+   * Set whether this feature is for expert use only.
+   *
+   * @param expert true if for use by experts only,
+   * or false if anyone can use it.
+   */
+  public void setExpert(boolean expert)
+  {
+    this.expert = expert;
+  }
+
+  /**
+   * Indicates whether this feature is for use by tools only.
+   * If it is for use by tools only, then it should not be displayed.
+   *
+   * @return true if tools only should use it,
+   * or false if anyone can see it.
+   */
+  public boolean isHidden()
+  {
+    return hidden;
+  }
+
+  /**
+   * Set whether this feature is for use by tools only.
+   * If it is for use by tools only, then it should not be displayed.
+   *
+   * @param hidden true if tools only should use it,
+   * or false if anyone can see it.
+   */
+  public void setHidden(boolean hidden)
+  {
+    this.hidden = hidden;
+  }
+
+
+  /**
+   * Get an arbitrary value set with setValue().
+   *
+   * @param name the programmatic name of the key.
+   *
+   * @return the value associated with this name,
+   * or null if there is none.
+   */
+  public Object getValue(String name)
+  {
+    return valueHash.get(name);
+  }
+
+  /**
+   * Set an arbitrary string-value pair with this feature.
+   *
+   * @param name the programmatic name of the key.
+   * @param value the value to associate with the name.
+   */
+  public void setValue(String name, Object value)
+  {
+    valueHash.put(name, value);
+  }
+
+  /**
+   * Get a list of the programmatic key names set with setValue().
+   *
+   * @return an Enumerator over all the programmatic key names associated
+   * with this feature.
+   */
+  public Enumeration attributeNames()
+  {
+    return valueHash.keys();
+  }
 }
Index: java/beans/PropertyEditorManager.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/beans/PropertyEditorManager.java,v
retrieving revision 1.2
diff -u -r1.2 PropertyEditorManager.java
--- java/beans/PropertyEditorManager.java	22 Jan 2002 22:40:11 -0000	1.2
+++ java/beans/PropertyEditorManager.java	27 Feb 2003 10:50:42 -0000
@@ -41,121 +41,152 @@
 import gnu.java.lang.ClassHelper;
 
 /**
- ** PropertyEditorManager is used to find property editors
- ** for various types (not necessarily Beans).<P>
- **
- ** It first checks to see if the property editor is
- ** already registered; if it is, that property editor is
- ** used.  Next it takes the type's classname and appends
- ** "Editor" to it, and searches first in the class's
- ** package and then in the property editor search path.<P>
- **
- ** Default property editors are provided for:<P>
- ** <OL>
- ** <LI>boolean, byte, short, int, long, float, and double</LI>
- ** <LI>java.lang.String</LI>
- ** <LI>java.awt.Color</LI>
- ** <LI>java.awt.Font</LI>
- ** <OL>
- **
- ** <STRONG>Spec Suggestion:</STRONG> Perhaps an editor for
- ** Filename or something like it should be provided.  As well
- ** as char.
- **
- ** @author John Keiser
- ** @since JDK1.1
- ** @version 1.1.0, 29 Jul 1998
- **/
-
-public class PropertyEditorManager {
-	static java.util.Hashtable editors = new java.util.Hashtable();
-	static String[] editorSearchPath = {"gnu.java.beans.editors","sun.beans.editors"};
-
-	static {
-		registerEditor(java.lang.Boolean.TYPE, gnu.java.beans.editors.NativeBooleanEditor.class);
-		registerEditor(java.lang.Byte.TYPE,    gnu.java.beans.editors.NativeByteEditor.class);
-		registerEditor(java.lang.Short.TYPE,   gnu.java.beans.editors.NativeShortEditor.class);
-		registerEditor(java.lang.Integer.TYPE, gnu.java.beans.editors.NativeIntEditor.class);
-		registerEditor(java.lang.Long.TYPE,    gnu.java.beans.editors.NativeLongEditor.class);
-		registerEditor(java.lang.Float.TYPE,   gnu.java.beans.editors.NativeFloatEditor.class);
-		registerEditor(java.lang.Double.TYPE,  gnu.java.beans.editors.NativeDoubleEditor.class);
-		registerEditor(java.lang.String.class, gnu.java.beans.editors.StringEditor.class);
-		registerEditor(java.awt.Color.class,   gnu.java.beans.editors.ColorEditor.class);
-		registerEditor(java.awt.Font.class,    gnu.java.beans.editors.FontEditor.class);
-	}
-
-	/** Beats me why this class can be instantiated, but there
-	 ** you have it.
-	 **/
-	public PropertyEditorManager() { }
-
-	/** Register an editor for a class.  Replaces old editor
-	 ** if there was one registered before.
-	 ** @param editedClass the class that the property editor
-	 **        will edit.
-	 ** @param editorClass the PropertyEditor class.
-	 **/
-	public static void registerEditor(Class editedClass, Class editorClass) {
-		editors.put(editedClass, editorClass);
-	}
-
-	/** Returns a new instance of the property editor for the
-	 ** specified class.
-	 ** @param editedClass the class that the property editor
-	 **        will edit.
-	 ** @return a PropertyEditor instance that can edit the
-	 **         specified class.
-	 **/
-	public static PropertyEditor findEditor(Class editedClass) {
-		try {
-
-		Class found = (Class)editors.get(editedClass);
-		if(found != null) {
-			return (PropertyEditor)found.newInstance();
-		}
-
-		try {
-			found = Class.forName(editedClass.getName()+"Editor");
-			registerEditor(editedClass,found);
-			return (PropertyEditor)found.newInstance();
-		} catch(ClassNotFoundException E) {
-		}
-
-		String appendName = "." + ClassHelper.getTruncatedClassName(editedClass) + "Editor";
-		synchronized(editorSearchPath) {
-			for(int i=0;i<editorSearchPath.length;i++) {
-				try {
-					found = Class.forName(editorSearchPath[i] + appendName);
-					registerEditor(editedClass,found);
-					return (PropertyEditor)found.newInstance();
-				} catch(ClassNotFoundException E) {
-				}
-			}
-		}
-
-		} catch(InstantiationException E) {
-		} catch(IllegalAccessException E) {
-		}
-		return null;
-	}
-
-	/** Get the editor search path.
-	 ** As a minor departure from the spec, the default value
-	 ** for the editor search path is "gnu.java.beans.editors",
-	 ** "sun.beans.editors".
-	 ** @return the editor search path.
-	 **/
-	public static String[] getEditorSearchPath() {
-		return editorSearchPath;
-	}
-
-	/** Set the editor search path.
-	 ** @param editorSearchPath the new value for the editor
-	 **        search path.
-	 **/
-	public static void setEditorSearchPath(String[] editorSearchPath) {
-		synchronized(editorSearchPath) {
-			PropertyEditorManager.editorSearchPath = editorSearchPath;
-		}
-	}
+ * PropertyEditorManager is used to find property editors
+ * for various types (not necessarily Beans).<P>
+ *
+ * It first checks to see if the property editor is
+ * already registered; if it is, that property editor is
+ * used.  Next it takes the type's classname and appends
+ * "Editor" to it, and searches first in the class's
+ * package and then in the property editor search path.<P>
+ *
+ * Default property editors are provided for:<P>
+ * <OL>
+ * <LI>boolean, byte, short, int, long, float, and double</LI>
+ * <LI>java.lang.String</LI>
+ * <LI>java.awt.Color</LI>
+ * <LI>java.awt.Font</LI>
+ * <OL>
+ *
+ * <STRONG>Spec Suggestion:</STRONG> Perhaps an editor for
+ * Filename or something like it should be provided.  As well
+ * as char.
+ *
+ * @author John Keiser
+ * @since 1.1
+ * @version 1.1.0, 29 Jul 1998
+ */
+
+public class PropertyEditorManager
+{
+  static java.util.Hashtable editors = new java.util.Hashtable();
+  static String[] editorSearchPath = {"gnu.java.beans.editors","sun.beans.editors"};
+
+  static
+    {
+      registerEditor(java.lang.Boolean.TYPE, gnu.java.beans.editors.NativeBooleanEditor.class);
+      registerEditor(java.lang.Byte.TYPE,    gnu.java.beans.editors.NativeByteEditor.class);
+      registerEditor(java.lang.Short.TYPE,   gnu.java.beans.editors.NativeShortEditor.class);
+      registerEditor(java.lang.Integer.TYPE, gnu.java.beans.editors.NativeIntEditor.class);
+      registerEditor(java.lang.Long.TYPE,    gnu.java.beans.editors.NativeLongEditor.class);
+      registerEditor(java.lang.Float.TYPE,   gnu.java.beans.editors.NativeFloatEditor.class);
+      registerEditor(java.lang.Double.TYPE,  gnu.java.beans.editors.NativeDoubleEditor.class);
+      registerEditor(java.lang.String.class, gnu.java.beans.editors.StringEditor.class);
+      registerEditor(java.awt.Color.class,   gnu.java.beans.editors.ColorEditor.class);
+      registerEditor(java.awt.Font.class,    gnu.java.beans.editors.FontEditor.class);
+    }
+
+  /**
+   * Beats me why this class can be instantiated, but there
+   * you have it.
+   */
+  public PropertyEditorManager()
+  {
+    // Do nothing here
+  }
+
+  /**
+   * Register an editor for a class.  Replaces old editor
+   * if there was one registered before.
+   *
+   * @param editedClass the class that the property editor
+   *        will edit.
+   * @param editorClass the PropertyEditor class.
+   */
+  public static void registerEditor(Class editedClass, Class editorClass)
+  {
+    editors.put(editedClass, editorClass);
+  }
+
+  /**
+   * Returns a new instance of the property editor for the
+   * specified class.
+   *
+   * @param editedClass the class that the property editor
+   *        will edit.
+   * @return a PropertyEditor instance that can edit the
+   *         specified class.
+   */
+  public static PropertyEditor findEditor(Class editedClass)
+  {
+    try
+      {
+        Class found = (Class)editors.get(editedClass);
+        if(found != null)
+          {
+            return (PropertyEditor)found.newInstance();
+          }
+
+        try
+          {
+            found = Class.forName(editedClass.getName()+"Editor");
+            registerEditor(editedClass,found);
+            return (PropertyEditor)found.newInstance();
+          }
+        catch(ClassNotFoundException E)
+          {
+          }
+
+        String appendName = "." + ClassHelper.getTruncatedClassName(editedClass) + "Editor";
+        synchronized(editorSearchPath)
+          {
+            for(int i=0;i<editorSearchPath.length;i++)
+              {
+                try
+                  {
+                    found = Class.forName(editorSearchPath[i] + appendName);
+                    registerEditor(editedClass,found);
+                    return (PropertyEditor)found.newInstance();
+                  }
+                catch(ClassNotFoundException E)
+                  {
+                  }
+              }
+          }
+      }
+    catch(InstantiationException E)
+      {
+      }
+    catch(IllegalAccessException E)
+      {
+      }
+    
+    return null;
+  }
+
+  /**
+   * Get the editor search path.
+   * As a minor departure from the spec, the default value
+   * for the editor search path is "gnu.java.beans.editors",
+   * "sun.beans.editors".
+   *
+   * @return the editor search path.
+   */
+  public static String[] getEditorSearchPath()
+  {
+    return editorSearchPath;
+  }
+
+  /**
+   * Set the editor search path.
+   *
+   * @param editorSearchPath the new value for the editor search path.
+   */
+  public static void setEditorSearchPath(String[] editorSearchPath)
+  {
+    synchronized(editorSearchPath)
+      {
+        PropertyEditorManager.editorSearchPath = editorSearchPath;
+      }
+  }
 }

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]