diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 5b55699f41f..76f5ddec377 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,10 @@ +2003-02-27 Michael Koch + + * java/beans/Beans.java, + java/beans/FeatureDescriptor.java + java/beans/PropertyEditorManager.java: + Reformated to GNU style. + 2003-02-25 Michael Koch * gnu/java/nio/MappedByteFileBuffer.java, diff --git a/libjava/java/beans/Beans.java b/libjava/java/beans/Beans.java index 747e7cc9609..aa52c03d236 100644 --- a/libjava/java/beans/Beans.java +++ b/libjava/java/beans/Beans.java @@ -43,166 +43,216 @@ import java.applet.*; import gnu.java.io.*; /** - * Beans provides some helper methods that allow the basic operations of Bean-ness. + * Beans 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; +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. + } - /** - * 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.

+ * + * 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:

+ *

    + *
  1. 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()).
  2. + *
  3. 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().
  4. + *
+ * + * @param cl the ClassLoader to use, or null + * 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; + } + } - /** - * Allows you to instantiate a Bean. This method takes - * a ClassLoader from which to read the Bean and the - * name of the Bean.

- * - * 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:

- *

    - *
  1. 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()).
  2. - *
  3. 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().
  4. - *
- * @param cl the ClassLoader to use, or null - * 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; + if(bean instanceof Applet) + { + Applet a = (Applet)bean; + //a.setAppletContext(???); + //a.setStub(???); + if(serStream == null) + { + a.init(); + } + } - 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; - } - } + return bean; + } - if(bean instanceof Applet) { - Applet a = (Applet)bean; - //a.setAppletContext(???); - //a.setStub(???); - if(serStream == null) { - a.init(); - } - } + /** + * 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; + } - 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); + } - /** - * 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; - } + /** + * 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; + } - /** - * 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 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; + } - /** - * 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; - } + /** + * 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; + } - /** - * 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; - } + /** + * 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; + } } diff --git a/libjava/java/beans/FeatureDescriptor.java b/libjava/java/beans/FeatureDescriptor.java index cc8b7a214e9..90a3c1557f4 100644 --- a/libjava/java/beans/FeatureDescriptor.java +++ b/libjava/java/beans/FeatureDescriptor.java @@ -41,126 +41,175 @@ package java.beans; import java.util.*; /** - ** FeatureDescriptor is the common superclass for all JavaBeans Descriptor classes. - ** JavaBeans descriptors are abstract descriptors of properties, - ** events, methods, beans, etc.

- ** - ** Documentation Convention: 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 programmatic or localized to - ** make this distinction clear. - ** - ** @author John Keiser - ** @since JDK1.1 - ** @version 1.1.0, 31 May 1998 - **/ + * FeatureDescriptor is the common superclass for all JavaBeans Descriptor + * classes. JavaBeans descriptors are abstract descriptors of properties, + * events, methods, beans, etc.

+ * + * Documentation Convention: 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 programmatic or localized 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; +public class FeatureDescriptor +{ + String name; + String displayName; + String shortDescription; + boolean expert; + boolean hidden; - Hashtable valueHash; + Hashtable valueHash; - /** Instantiate this FeatureDescriptor with appropriate default values.**/ - public FeatureDescriptor() { - valueHash = new Hashtable(); - } + /** + * Instantiate this FeatureDescriptor with appropriate default values. + */ + public FeatureDescriptor() + { + valueHash = new Hashtable(); + } - /** Get the programmatic name of this feature. **/ - public String getName() { - return name; - } + /** + * 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; - } + /** + * 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; - } + /** + * 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; - } + /** + * 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; - } + /** + * 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; - } + /** + * 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; - } + /** + * 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; - } + /** + * 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; - } + /** + * 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; - } + /** + * 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); - } + /** + * 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); - } + /** + * 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(); - } + /** + * 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(); + } } diff --git a/libjava/java/beans/PropertyEditorManager.java b/libjava/java/beans/PropertyEditorManager.java index c4dc2c9b6c5..4bd4a9f7edf 100644 --- a/libjava/java/beans/PropertyEditorManager.java +++ b/libjava/java/beans/PropertyEditorManager.java @@ -41,121 +41,152 @@ package java.beans; import gnu.java.lang.ClassHelper; /** - ** PropertyEditorManager is used to find property editors - ** for various types (not necessarily Beans).

- ** - ** 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.

- ** - ** Default property editors are provided for:

- **

    - **
  1. boolean, byte, short, int, long, float, and double
  2. - **
  3. java.lang.String
  4. - **
  5. java.awt.Color
  6. - **
  7. java.awt.Font
  8. - **
      - ** - ** Spec Suggestion: 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 - **/ + * PropertyEditorManager is used to find property editors + * for various types (not necessarily Beans).

      + * + * 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.

      + * + * Default property editors are provided for:

      + *

        + *
      1. boolean, byte, short, int, long, float, and double
      2. + *
      3. java.lang.String
      4. + *
      5. java.awt.Color
      6. + *
      7. java.awt.Font
      8. + *
          + * + * Spec Suggestion: 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"}; +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); - } + 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() { } + /** + * 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); - } + /** + * 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 { + /** + * 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(); + } - 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) + { + } - 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