 -- Method on BeanDescriptor: public Class getBeanClass ()
     Get the Bean's class.

 -- Method on BeanDescriptor: public Class getCustomizerClass ()
     Get the Bean's customizer's class.

 -- Method on BeanInfo: public BeanDescriptor getBeanDescriptor ()
     Get the general description of this Bean type.

 -- Method on BeanInfo: public EventSetDescriptor getEventSetDescriptors ()
     Get the events this Bean type fires.

 -- Method on BeanInfo: public int getDefaultEventIndex ()
     Get the "default" event, basically the one a RAD tool user is most likely to select.

 -- Method on BeanInfo: public PropertyDescriptor getPropertyDescriptors ()
     Get the properties (get/set method pairs) this Bean type supports.

 -- Method on BeanInfo: public int getDefaultPropertyIndex ()
     Get the "default" property, basically the one a RAD tool user is most likely to select.

 -- Method on BeanInfo: public MethodDescriptor getMethodDescriptors ()
     Get the methods this Bean type supports.

 -- Method on BeanInfo: public BeanInfo getAdditionalBeanInfo ()
     Get additional BeanInfos representing this Bean. In this version of JavaBeans, this method is used so that space and time can be saved by reading a BeanInfo for each class in the hierarchy (super, super(super), and so on).

     The order of precedence when two pieces of BeanInfo conflict (such as two PropertyDescriptors that have the same name), in order from highest precedence to lowest, is:

       * This BeanInfo object.

       * getAdditionalBeanInfo()[getAdditionalBeanInfo().length]

       * ...

       * getAdditionalBeanInfo()[1]

       * getAdditionalBeanInfo()[0]

     <STRONG>Spec Note:</STRONG> It is possible that returning null from this method could stop Introspection in its tracks, but it is unclear from the spec whether this is the case.

 -- Method on BeanInfo: public Image getIcon (int ICONTYPE)
     Get a visual icon for this Bean. A Bean does not have to support icons, and if it does support icons, it does not have to support every single type.  Sun recommends that if you only support one type, you support 16x16 color.  Sun also notes that you should try to use a type (like GIF) that allows for transparent pixels, so that the background of the RAD tool can show through.

     <STRONG>Spec Note:</STRONG> If you do not support the type of icon that is being asked for, but you do support another type, it is unclear whether you should return the other type or not.  I would presume not.

 -- Method on Beans: public static Object instantiate (java.lang.ClassLoader CL, java.lang.String BEANNAME)
throws IOException, ClassNotFoundException
     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:

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

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

 -- Method on Beans: public static Object getInstanceOf (java.lang.Object BEAN, java.lang.Class NEWCLASS)
     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.

 -- Method on Beans: public static boolean isInstanceOf (java.lang.Object BEAN, java.lang.Class NEWBEANCLASS)
     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.

 -- Method on Beans: public static boolean isGuiAvailable ()
     Find out whether the GUI is available to use. Defaults to true.

 -- Method on Beans: public static boolean isDesignTime ()
     Find out whether it is design time.  Design time means we are in a RAD tool. Defaults to false.

 -- Method on Beans: public static void setGuiAvailable (boolean GUIAVAILABLE)
throws SecurityException
     Set whether the GUI is available to use.

 -- Method on Beans: public static void setDesignTime (boolean DESIGNTIME)
throws SecurityException
     Set whether it is design time.  Design time means we are in a RAD tool.

 -- Method on Customizer: public void setObject (java.lang.Object BEAN)
     Set the object to Customize.  This will always be a Bean that had a BeanDescriptor indicating this Customizer.

 -- Method on Customizer: public void addPropertyChangeListener (java.beans.PropertyChangeListener L)
     Add a PropertyChangeListener.

 -- Method on Customizer: public void removePropertyChangeListener (java.beans.PropertyChangeListener L)
     Remove a PropertyChangeListener.

 -- Method on DesignMode: public void setDesignTime (boolean DESIGNTIME)
     The environment will call this method on your BeanContextChild when it is registered in a parent BeanContext or when behavior needs to switch from design time to runtime behavior (or vice versa).

     BeanContexts are required to fire PropertyChangeEvents when properties change. designTime is a property, and therefore when you implement setDesignTime(), you need to fire a PropertyChangeEvent with the old value, the new value and using PROPERTYNAME as the property name.

 -- Method on DesignMode: public boolean isDesignTime ()
     This method should tell whether it is design time or runtime.

 -- Method on EventSetDescriptor: public Class getListenerType ()
     Get the class that contains the event firing methods.

 -- Method on EventSetDescriptor: public Method getListenerMethods ()
     Get the event firing methods.

 -- Method on EventSetDescriptor: public MethodDescriptor getListenerMethodDescriptors ()
     Get the event firing methods as MethodDescriptors.

 -- Method on EventSetDescriptor: public Method getAddListenerMethod ()
     Get the add listener method.

 -- Method on EventSetDescriptor: public Method getRemoveListenerMethod ()
     Get the remove listener method.

 -- Method on EventSetDescriptor: public void setUnicast (boolean UNICAST)
     Set whether or not multiple listeners may be added.

 -- Method on EventSetDescriptor: public boolean isUnicast ()
     Get whether or not multiple listeners may be added.  (Defaults to false.)

 -- Method on EventSetDescriptor: public void setInDefaultEventSet (boolean INDEFAULTEVENTSET)
     Set whether or not this is in the default event set.

 -- Method on EventSetDescriptor: public boolean isInDefaultEventSet ()
     Get whether or not this is in the default event set.  (Defaults to true.)

 -- Method on FeatureDescriptor: public String getName ()
     Get the programmatic name of this feature.

 -- Method on FeatureDescriptor: public void setName (java.lang.String NAME)
     Set the programmatic name of this feature.

 -- Method on FeatureDescriptor: public String getDisplayName ()
     Get the localized (display) name of this feature.

 -- Method on FeatureDescriptor: public void setDisplayName (java.lang.String DISPLAYNAME)
     Set the localized (display) name of this feature.

 -- Method on FeatureDescriptor: public String getShortDescription ()
     Get the localized short description for this feature.

 -- Method on FeatureDescriptor: public void setShortDescription (java.lang.String SHORTDESCRIPTION)
     Set the localized short description for this feature.

 -- Method on FeatureDescriptor: public boolean isExpert ()
     Indicates whether this feature is for expert use only.

 -- Method on FeatureDescriptor: public void setExpert (boolean EXPERT)
     Set whether this feature is for expert use only.

 -- Method on FeatureDescriptor: public boolean isHidden ()
     Indicates whether this feature is for use by tools only. If it is for use by tools only, then it should not be displayed.

 -- Method on FeatureDescriptor: public void setHidden (boolean 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.

 -- Method on FeatureDescriptor: public Object getValue (java.lang.String NAME)
     Get an arbitrary value set with setValue().

 -- Method on FeatureDescriptor: public void setValue (java.lang.String NAME, java.lang.Object VALUE)
     Set an arbitrary string-value pair with this feature.

 -- Method on FeatureDescriptor: public Enumeration attributeNames ()
     Get a list of the programmatic key names set with setValue().

 -- Method on IndexedPropertyDescriptor: public Class getIndexedPropertyType ()

 -- Method on IndexedPropertyDescriptor: public Method getIndexedReadMethod ()

 -- Method on IndexedPropertyDescriptor: public Method getIndexedWriteMethod ()

 -- Method on Introspector: public static BeanInfo getBeanInfo (java.lang.Class BEANCLASS)
throws IntrospectionException
     Get the BeanInfo for class beanClass, first by looking for explicit information, next by using standard design patterns to determine information about the class.

 -- Method on Introspector: public static BeanInfo getBeanInfo (java.lang.Class BEANCLASS, java.lang.Class STOPCLASS)
throws IntrospectionException
     Get the BeanInfo for class beanClass, first by looking for explicit information, next by using standard design patterns to determine information about the class.  It crawls up the inheritance tree until it hits topClass.

 -- Method on Introspector: public static String getBeanInfoSearchPath ()
     Get the search path for BeanInfo classes.

 -- Method on Introspector: public static void setBeanInfoSearchPath (java.lang.String[] BEANINFOSEARCHPATH)
     Set the search path for BeanInfo classes.

 -- Method on Introspector: public static String decapitalize (java.lang.String NAME)
     A helper method to convert a name to standard Java naming conventions: anything with two capitals as the first two letters remains the same, otherwise the first letter is decapitalized.  URL = URL, I = i, MyMethod = myMethod.

 -- Method on MethodDescriptor: public ParameterDescriptor getParameterDescriptors ()
     Get the parameter descriptors from this method. Since MethodDescriptor has no way of determining what the parameter names were, this defaults to null.

 -- Method on MethodDescriptor: public Method getMethod ()
     Get the method this MethodDescriptor represents.

 -- Method on PropertyChangeEvent: public String getPropertyName ()
     Get the property name.

 -- Method on PropertyChangeEvent: public Object getOldValue ()
     Get the property's old value.

 -- Method on PropertyChangeEvent: public Object getNewValue ()
     Get the property's new value.

 -- Method on PropertyChangeEvent: public void setPropagationId (java.lang.Object PROPAGATIONID)
     Set the propagation ID.  This is a way for the event to be passed from hand to hand and retain a little extra state.  Right now it is unused, but it should be propagated anyway so that future versions of JavaBeans can use it, for God knows what.

 -- Method on PropertyChangeEvent: public Object getPropagationId ()
     Get the propagation ID.

 -- Method on PropertyChangeListener: public void propertyChange (java.beans.PropertyChangeEvent E)
     Fired after a Bean's property has changed.

 -- Method on PropertyChangeSupport: public void addPropertyChangeListener (java.beans.PropertyChangeListener L)
     Adds a PropertyChangeListener to the list of listeners. All property change events will be sent to this listener.

     The listener add is not unique: that is, <em>n</em> adds with the same listener will result in <em>n</em> events being sent to that listener for every property change.

     Adding a null listener will cause undefined behavior.

 -- Method on PropertyChangeSupport: public void addPropertyChangeListener (java.lang.String PROPERTYNAME, java.beans.PropertyChangeListener L)
     Adds a PropertyChangeListener listening on the specified property. Events will be sent to the listener for that particular property.

     The listener add is not unique; that is, <em>n</em> adds on a particular property for a particular listener will result in <em>n</em> events being sent to that listener when that property is changed.

     The effect is cumulative, too; if you are registered to listen to receive events on all property changes, and then you register on a particular property, you will receive change events for that property twice.

     Adding a null listener will cause undefined behavior.

 -- Method on PropertyChangeSupport: public void removePropertyChangeListener (java.beans.PropertyChangeListener L)
     Removes a PropertyChangeListener from the list of listeners. If any specific properties are being listened on, they must be deregistered by themselves; this will only remove the general listener to all properties.

     If add() has been called multiple times for a particular listener, remove() will have to be called the same number of times to deregister it.

 -- Method on PropertyChangeSupport: public void removePropertyChangeListener (java.lang.String PROPERTYNAME, java.beans.PropertyChangeListener L)
     Removes a PropertyChangeListener from listening to a specific property.

     If add() has been called multiple times for a particular listener on a property, remove() will have to be called the same number of times to deregister it.

 -- Method on PropertyChangeSupport: public void firePropertyChange (java.beans.PropertyChangeEvent EVENT)
     Fire a PropertyChangeEvent to all the listeners.

 -- Method on PropertyChangeSupport: public void firePropertyChange (java.lang.String PROPERTYNAME, java.lang.Object OLDVAL, java.lang.Object NEWVAL)
     Fire a PropertyChangeEvent containing the old and new values of the property to all the listeners.

 -- Method on PropertyChangeSupport: public void firePropertyChange (java.lang.String PROPERTYNAME, boolean OLDVAL, boolean NEWVAL)
     Fire a PropertyChangeEvent containing the old and new values of the property to all the listeners.

 -- Method on PropertyChangeSupport: public void firePropertyChange (java.lang.String PROPERTYNAME, int OLDVAL, int NEWVAL)
     Fire a PropertyChangeEvent containing the old and new values of the property to all the listeners.

 -- Method on PropertyChangeSupport: public boolean hasListeners (java.lang.String PROPERTYNAME)
     Tell whether the specified property is being listened on or not. This will only return true if there are listeners on all properties or if there is a listener specifically on this property.

 -- Method on PropertyDescriptor: public Class getPropertyType ()
     Get the property type. This is the type the get method returns and the set method takes in.

 -- Method on PropertyDescriptor: public Method getReadMethod ()
     Get the get method.  Why they call it readMethod here and get everywhere else is beyond me.

 -- Method on PropertyDescriptor: public Method getWriteMethod ()
     Get the set method.  Why they call it writeMethod here and set everywhere else is beyond me.

 -- Method on PropertyDescriptor: public boolean isBound ()
     Get whether the property is bound.  Defaults to false.

 -- Method on PropertyDescriptor: public void setBound (boolean BOUND)
     Set whether the property is bound. As long as the the bean implements addPropertyChangeListener() and removePropertyChangeListener(), setBound(true) may safely be called.

     If these things are not true, then the behavior of the system will be undefined.

     When a property is bound, its set method is required to fire the PropertyChangeListener.propertyChange()) event after the value has changed.

 -- Method on PropertyDescriptor: public boolean isConstrained ()
     Get whether the property is constrained.  Defaults to false.

 -- Method on PropertyDescriptor: public void setConstrained (boolean CONSTRAINED)
     Set whether the property is constrained. If the set method throws java.beans.PropertyVetoException (or subclass thereof) and the bean implements addVetoableChangeListener() and removeVetoableChangeListener(), then setConstrained(true) may safely be called.  Otherwise, the system behavior is undefined. <B>Spec note:</B> given those strict parameters, it would be nice if it got set automatically by detection, but oh well.

     When a property is constrained, its set method is required to:

       * Fire the VetoableChangeListener.vetoableChange() event notifying others of the change and allowing them a chance to say it is a bad thing.

       * If any of the listeners throws a PropertyVetoException, then it must fire another vetoableChange() event notifying the others of a reversion to the old value (though, of course, the change was never made).  Then it rethrows the PropertyVetoException and exits.

       * If all has gone well to this point, the value may be changed.

 -- Method on PropertyDescriptor: public Class getPropertyEditorClass ()
     Get the PropertyEditor class.  Defaults to null.

 -- Method on PropertyDescriptor: public void setPropertyEditorClass (java.lang.Class PROPERTYEDITORCLASS)
     Set the PropertyEditor class.  If the class does not implement the PropertyEditor interface, you will likely get an exception late in the game.

 -- Method on PropertyEditor: public void setValue (java.lang.Object VALUE)
     Called by the RAD tool to set the value of this property for the PropertyEditor. If the property type is native, it should be wrapped in the appropriate wrapper type.

 -- Method on PropertyEditor: public Object getValue ()
     Accessor method to get the current value the PropertyEditor is working with. If the property type is native, it will be wrapped in the appropriate wrapper type.

 -- Method on PropertyEditor: public void setAsText (java.lang.String TEXT)
throws IllegalArgumentException
     Set the value of this property using a String. Whether or not this PropertyEditor is editing a String type, this converts the String into the type of the PropertyEditor.

 -- Method on PropertyEditor: public String getAsText ()
     Get the value of this property in String format. Many times this can simply use Object.toString().

     Return null if you do not support getAsText()/setAsText(). setAsText(getAsText()) should be valid; i.e. the stuff you spit out in getAsText() should be able to go into setAsText().

 -- Method on PropertyEditor: public String getTags ()
     Get a list of possible Strings which this property type can have. The value of these will be used by the RAD tool to construct some sort of list box or to check text box input, and the resulting String passed to setAsText() should be one of these.  Note, however, that like most things with this mammoth, unwieldy interface, this is not guaranteed.  Thus, you must check the value in setAsText() anyway.

 -- Method on PropertyEditor: public boolean isPaintable ()
     The RAD tool calls this to find out whether the PropertyEditor can paint itself.

 -- Method on PropertyEditor: public void paintValue (java.awt.Graphics G, java.awt.Rectangle BOUNDS)
     The RAD tool calls this to paint the actual value of the property. The Graphics context will have the same current font, color, etc. as the parent Container.  You may safely change the font, color, etc. and not change them back.

     This method should do a silent no-op if isPaintable() is false.

 -- Method on PropertyEditor: public boolean supportsCustomEditor ()
     The RAD tool calls this to find out whether the PropertyEditor supports a custom component to edit and display itself.

 -- Method on PropertyEditor: public Component getCustomEditor ()
     The RAD tool calls this to grab the component that can edit this type. The component may be painted anywhere the RAD tool wants to paint it-- even in its own window.

     The component must hook up with the PropertyEditor and, whenever a change to the value is made, fire a PropertyChangeEvent to the source.

 -- Method on PropertyEditor: public void addPropertyChangeListener (java.beans.PropertyChangeListener LISTENER)
     Adds a property change listener to this PropertyEditor.

 -- Method on PropertyEditor: public void removePropertyChangeListener (java.beans.PropertyChangeListener LISTENER)
     Removes a property change listener from this PropertyEditor.

 -- Method on PropertyEditor: public String getJavaInitializationString ()
     Get a Java language-specific String which could be used to create an Object of the specified type.  Every PropertyEditor must support this.

     The reason for this is that while most RAD tools will serialize the Beans and deserialize them at runtime, some RAD tools will generate code that creates the Beans.  Examples of Java initialization strings would be:

       * 2

       * "I am a String"

       * new MyObject(2, "String", new StringBuffer())

 -- Method on PropertyEditorManager: public static void registerEditor (java.lang.Class EDITEDCLASS, java.lang.Class EDITORCLASS)
     Register an editor for a class.  Replaces old editor if there was one registered before.

 -- Method on PropertyEditorManager: public static PropertyEditor findEditor (java.lang.Class EDITEDCLASS)
     Returns a new instance of the property editor for the specified class.

 -- Method on PropertyEditorManager: public static String getEditorSearchPath ()
     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".

 -- Method on PropertyEditorManager: public static void setEditorSearchPath (java.lang.String[] EDITORSEARCHPATH)
     Set the editor search path.

 -- Method on PropertyEditorSupport: public void setValue (java.lang.Object VAL)
     Set the current value of the property. <STRONG>Implementation Note</STRONG> Sun does not state what exactly this version of the method does. Thus, in this implementation, it sets the value, and then if the old and new values are different, it fires a property change event with no property name and the old and new values.

 -- Method on PropertyEditorSupport: public Object getValue ()
     Get the current value of the property.

 -- Method on PropertyEditorSupport: public boolean isPaintable ()
     Get whether this object is paintable or not.

 -- Method on PropertyEditorSupport: public void paintValue (java.awt.Graphics G, java.awt.Rectangle R)
     Paint this object.  This class does nothing in this method.

 -- Method on PropertyEditorSupport: public String getJavaInitializationString ()
     Get the Java initialization String for the current value of the Object.  This class returns gibberish or null (though the spec does not say which).

     <STRONG>Implementation Note:</STRONG> This class returns the string "$#^" to make sure the code will be broken, so that you will know to override it when you create your own property editor.

 -- Method on PropertyEditorSupport: public String getAsText ()
     Get the value as text. In this class, you cannot count on getAsText() doing anything useful, although in this implementation I do toString().

 -- Method on PropertyEditorSupport: public void setAsText (java.lang.String S)
throws IllegalArgumentException
     Set the value as text. In this class, you cannot count on setAsText() doing anything useful across implementations. <STRONG>Implementation Note:</STRONG> In this implementation it checks if the String is "null", and if it is, sets the value to null, otherwise it throws an IllegalArgumentException.

 -- Method on PropertyEditorSupport: public String getTags ()
     Returns a list of possible choices for the value.

 -- Method on PropertyEditorSupport: public Component getCustomEditor ()
     Return a custom component to edit the value.

 -- Method on PropertyEditorSupport: public boolean supportsCustomEditor ()
     Find out whether this property editor supports a custom component to edit its value.

 -- Method on PropertyEditorSupport: public void addPropertyChangeListener (java.beans.PropertyChangeListener L)
     Add a property change listener to this property editor.

 -- Method on PropertyEditorSupport: public void removePropertyChangeListener (java.beans.PropertyChangeListener L)
     Remove a property change listener from this property editor.

 -- Method on PropertyEditorSupport: public void firePropertyChange ()
     Notify people that we've changed, although we don't tell them just how.  The only thing I can think of to send in the event is the new value (since the old value is unavailable and there is no property name). I confess I do not understand the point of this method.

 -- Method on PropertyVetoException: public PropertyChangeEvent getPropertyChangeEvent ()
     Get the PropertyChange event that was vetoed.

 -- Method on SimpleBeanInfo: public BeanDescriptor getBeanDescriptor ()
     Force Introspection of the general bean info.

 -- Method on SimpleBeanInfo: public EventSetDescriptor getEventSetDescriptors ()
     Force Introspection of the events this Bean type fires.

 -- Method on SimpleBeanInfo: public int getDefaultEventIndex ()
     Say that there is no "default" event set.

 -- Method on SimpleBeanInfo: public PropertyDescriptor getPropertyDescriptors ()
     Force Introspection of the Bean properties.

 -- Method on SimpleBeanInfo: public int getDefaultPropertyIndex ()
     Say that there is no "default" property.

 -- Method on SimpleBeanInfo: public MethodDescriptor getMethodDescriptors ()
     Force Introspection of the Bean's methods.

 -- Method on SimpleBeanInfo: public BeanInfo getAdditionalBeanInfo ()
     Tell the Introspector to go look for other BeanInfo itself.

 -- Method on SimpleBeanInfo: public Image getIcon (int ICONTYPE)
     Say that this Bean has no icons.

 -- Method on SimpleBeanInfo: public Image loadImage (java.lang.String LOCATION)
     Helper method to load an image using the Bean class getResource() method on the BeanInfo class (using getClass(), since you'll extend this class to get the BeanInfo).  Basically it's assumed that the Bean and its BeanInfo are both loaded by the same ClassLoader, generally a reasonable assumption.

 -- Method on VetoableChangeListener: public void vetoableChange (java.beans.PropertyChangeEvent E)
throws PropertyVetoException
     Fired before a Bean's property changes.

 -- Method on VetoableChangeSupport: public void addVetoableChangeListener (java.beans.VetoableChangeListener L)
     Adds a VetoableChangeListener to the list of listeners. All property change events will be sent to this listener.

     The listener add is not unique: that is, <em>n</em> adds with the same listener will result in <em>n</em> events being sent to that listener for every property change.

     Adding a null listener will cause undefined behavior.

 -- Method on VetoableChangeSupport: public void addVetoableChangeListener (java.lang.String PROPERTYNAME, java.beans.VetoableChangeListener L)
     Adds a VetoableChangeListener listening on the specified property. Events will be sent to the listener for that particular property.

     The listener add is not unique; that is, <em>n</em> adds on a particular property for a particular listener will result in <em>n</em> events being sent to that listener when that property is changed.

     The effect is cumulative, too; if you are registered to listen to receive events on all property changes, and then you register on a particular property, you will receive change events for that property twice.

     Adding a null listener will cause undefined behavior.

 -- Method on VetoableChangeSupport: public void removeVetoableChangeListener (java.beans.VetoableChangeListener L)
     Removes a VetoableChangeListener from the list of listeners. If any specific properties are being listened on, they must be deregistered by themselves; this will only remove the general listener to all properties.

     If add() has been called multiple times for a particular listener, remove() will have to be called the same number of times to deregister it.

 -- Method on VetoableChangeSupport: public void removeVetoableChangeListener (java.lang.String PROPERTYNAME, java.beans.VetoableChangeListener L)
     Removes a VetoableChangeListener from listening to a specific property.

     If add() has been called multiple times for a particular listener on a property, remove() will have to be called the same number of times to deregister it.

 -- Method on VetoableChangeSupport: public void fireVetoableChange (java.beans.PropertyChangeEvent PROPOSEDCHANGE)
throws PropertyVetoException
     Fire a VetoableChangeEvent to all the listeners. If any listener objects, a reversion event will be sent to those listeners who received the initial event.

 -- Method on VetoableChangeSupport: public void fireVetoableChange (java.lang.String PROPERTYNAME, java.lang.Object OLDVAL, java.lang.Object NEWVAL)
throws PropertyVetoException
     Fire a VetoableChangeEvent containing the old and new values of the property to all the listeners. If any listener objects, a reversion event will be sent to those listeners who received the initial event.

 -- Method on VetoableChangeSupport: public void fireVetoableChange (java.lang.String PROPERTYNAME, boolean OLDVAL, boolean NEWVAL)
throws PropertyVetoException
     Fire a VetoableChangeEvent containing the old and new values of the property to all the listeners. If any listener objects, a reversion event will be sent to those listeners who received the initial event.

 -- Method on VetoableChangeSupport: public void fireVetoableChange (java.lang.String PROPERTYNAME, int OLDVAL, int NEWVAL)
throws PropertyVetoException
     Fire a VetoableChangeEvent containing the old and new values of the property to all the listeners. If any listener objects, a reversion event will be sent to those listeners who received the initial event.

 -- Method on VetoableChangeSupport: public boolean hasListeners (java.lang.String PROPERTYNAME)
     Tell whether the specified property is being listened on or not. This will only return true if there are listeners on all properties or if there is a listener specifically on this property.

 -- Method on Visibility: public boolean needsGui ()
     Tells whether the Bean can run without a GUI or not.

 -- Method on Visibility: public boolean avoidingGui ()
     Tells whether Bean is trying not to use the GUI. If needsGui() is true, this method should always return false.

 -- Method on Visibility: public void dontUseGui ()
     Tells the Bean not to use GUI methods. If needsGUI() is false, then after this method is called, avoidingGui() should return true.

 -- Method on Visibility: public void okToUseGui ()
     Tells the Bean it may use the GUI. The Bean is not required to use the GUI in this case, it is merely being <EM>permitted</EM> to use it.  If needsGui() is false, avoidingGui() may return true or false after this method is called.