@deftypemethod BeanDescriptor {public Class} getBeanClass () Get the Bean's class. @end deftypemethod @deftypemethod BeanDescriptor {public Class} getCustomizerClass () Get the Bean's customizer's class. @end deftypemethod @deftypemethod BeanInfo {public BeanDescriptor} getBeanDescriptor () Get the general description of this Bean type. @end deftypemethod @deftypemethod BeanInfo {public EventSetDescriptor} getEventSetDescriptors () Get the events this Bean type fires. @end deftypemethod @deftypemethod BeanInfo {public int} getDefaultEventIndex () Get the "default" event, basically the one a RAD tool user is most likely to select. @end deftypemethod @deftypemethod BeanInfo {public PropertyDescriptor} getPropertyDescriptors () Get the properties (get/set method pairs) this Bean type supports. @end deftypemethod @deftypemethod BeanInfo {public int} getDefaultPropertyIndex () Get the "default" property, basically the one a RAD tool user is most likely to select. @end deftypemethod @deftypemethod BeanInfo {public MethodDescriptor} getMethodDescriptors () Get the methods this Bean type supports. @end deftypemethod @deftypemethod 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: @itemize @bullet @item This BeanInfo object. @item @code{getAdditionalBeanInfo()[getAdditionalBeanInfo().length]} @item ... @item @code{getAdditionalBeanInfo()[1]} @item @code{getAdditionalBeanInfo()[0]} @end itemize Spec Note: It is possible that returning @code{null} from this method could stop Introspection in its tracks, but it is unclear from the spec whether this is the case. @end deftypemethod @deftypemethod BeanInfo {public Image} getIcon (int@w{ }@var{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. Spec Note: 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. @end deftypemethod @deftypemethod Beans {public static Object} instantiate (java.lang.ClassLoader@w{ }@var{cl}, java.lang.String@w{ }@var{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: @itemize @bullet @item 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()). @item 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(). @end itemize @end deftypemethod @deftypemethod Beans {public static Object} getInstanceOf (java.lang.Object@w{ }@var{bean}, java.lang.Class@w{ }@var{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. @end deftypemethod @deftypemethod Beans {public static boolean} isInstanceOf (java.lang.Object@w{ }@var{bean}, java.lang.Class@w{ }@var{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. @end deftypemethod @deftypemethod Beans {public static boolean} isGuiAvailable () Find out whether the GUI is available to use. Defaults to true. @end deftypemethod @deftypemethod Beans {public static boolean} isDesignTime () Find out whether it is design time. Design time means we are in a RAD tool. Defaults to false. @end deftypemethod @deftypemethod Beans {public static void} setGuiAvailable (boolean@w{ }@var{guiAvailable}) @*throws SecurityException Set whether the GUI is available to use. @end deftypemethod @deftypemethod Beans {public static void} setDesignTime (boolean@w{ }@var{designTime}) @*throws SecurityException Set whether it is design time. Design time means we are in a RAD tool. @end deftypemethod @deftypemethod Customizer {public void} setObject (java.lang.Object@w{ }@var{bean}) Set the object to Customize. This will always be a Bean that had a BeanDescriptor indicating this Customizer. @end deftypemethod @deftypemethod Customizer {public void} addPropertyChangeListener (java.beans.PropertyChangeListener@w{ }@var{l}) Add a PropertyChangeListener. @end deftypemethod @deftypemethod Customizer {public void} removePropertyChangeListener (java.beans.PropertyChangeListener@w{ }@var{l}) Remove a PropertyChangeListener. @end deftypemethod @deftypemethod DesignMode {public void} setDesignTime (boolean@w{ }@var{designTime}) The environment will call this method on your @code{BeanContextChild} when it is registered in a parent @code{BeanContext} or when behavior needs to switch from design time to runtime behavior (or vice versa). @code{BeanContext}s are required to fire @code{PropertyChangeEvent}s when properties change. @code{designTime} is a property, and therefore when you implement @code{setDesignTime()}, you need to fire a @code{PropertyChangeEvent} with the old value, the new value and using @code{PROPERTYNAME} as the property name. @end deftypemethod @deftypemethod DesignMode {public boolean} isDesignTime () This method should tell whether it is design time or runtime. @end deftypemethod @deftypemethod EventSetDescriptor {public Class} getListenerType () Get the class that contains the event firing methods. @end deftypemethod @deftypemethod EventSetDescriptor {public Method} getListenerMethods () Get the event firing methods. @end deftypemethod @deftypemethod EventSetDescriptor {public MethodDescriptor} getListenerMethodDescriptors () Get the event firing methods as MethodDescriptors. @end deftypemethod @deftypemethod EventSetDescriptor {public Method} getAddListenerMethod () Get the add listener method. @end deftypemethod @deftypemethod EventSetDescriptor {public Method} getRemoveListenerMethod () Get the remove listener method. @end deftypemethod @deftypemethod EventSetDescriptor {public void} setUnicast (boolean@w{ }@var{unicast}) Set whether or not multiple listeners may be added. @end deftypemethod @deftypemethod EventSetDescriptor {public boolean} isUnicast () Get whether or not multiple listeners may be added. (Defaults to false.) @end deftypemethod @deftypemethod EventSetDescriptor {public void} setInDefaultEventSet (boolean@w{ }@var{inDefaultEventSet}) Set whether or not this is in the default event set. @end deftypemethod @deftypemethod EventSetDescriptor {public boolean} isInDefaultEventSet () Get whether or not this is in the default event set. (Defaults to true.) @end deftypemethod @deftypemethod FeatureDescriptor {public String} getName () Get the programmatic name of this feature. @end deftypemethod @deftypemethod FeatureDescriptor {public void} setName (java.lang.String@w{ }@var{name}) Set the programmatic name of this feature. @end deftypemethod @deftypemethod FeatureDescriptor {public String} getDisplayName () Get the localized (display) name of this feature. @end deftypemethod @deftypemethod FeatureDescriptor {public void} setDisplayName (java.lang.String@w{ }@var{displayName}) Set the localized (display) name of this feature. @end deftypemethod @deftypemethod FeatureDescriptor {public String} getShortDescription () Get the localized short description for this feature. @end deftypemethod @deftypemethod FeatureDescriptor {public void} setShortDescription (java.lang.String@w{ }@var{shortDescription}) Set the localized short description for this feature. @end deftypemethod @deftypemethod FeatureDescriptor {public boolean} isExpert () Indicates whether this feature is for expert use only. @end deftypemethod @deftypemethod FeatureDescriptor {public void} setExpert (boolean@w{ }@var{expert}) Set whether this feature is for expert use only. @end deftypemethod @deftypemethod 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. @end deftypemethod @deftypemethod FeatureDescriptor {public void} setHidden (boolean@w{ }@var{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. @end deftypemethod @deftypemethod FeatureDescriptor {public Object} getValue (java.lang.String@w{ }@var{name}) Get an arbitrary value set with setValue(). @end deftypemethod @deftypemethod FeatureDescriptor {public void} setValue (java.lang.String@w{ }@var{name}, java.lang.Object@w{ }@var{value}) Set an arbitrary string-value pair with this feature. @end deftypemethod @deftypemethod FeatureDescriptor {public Enumeration} attributeNames () Get a list of the programmatic key names set with setValue(). @end deftypemethod @deftypemethod IndexedPropertyDescriptor {public Class} getIndexedPropertyType () @end deftypemethod @deftypemethod IndexedPropertyDescriptor {public Method} getIndexedReadMethod () @end deftypemethod @deftypemethod IndexedPropertyDescriptor {public Method} getIndexedWriteMethod () @end deftypemethod @deftypemethod Introspector {public static BeanInfo} getBeanInfo (java.lang.Class@w{ }@var{beanClass}) @*throws IntrospectionException Get the BeanInfo for class @code{beanClass}, first by looking for explicit information, next by using standard design patterns to determine information about the class. @end deftypemethod @deftypemethod Introspector {public static BeanInfo} getBeanInfo (java.lang.Class@w{ }@var{beanClass}, java.lang.Class@w{ }@var{stopClass}) @*throws IntrospectionException Get the BeanInfo for class @code{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 @code{topClass}. @end deftypemethod @deftypemethod Introspector {public static String} getBeanInfoSearchPath () Get the search path for BeanInfo classes. @end deftypemethod @deftypemethod Introspector {public static void} setBeanInfoSearchPath (java.lang.String[]@w{ }@var{beanInfoSearchPath}) Set the search path for BeanInfo classes. @end deftypemethod @deftypemethod Introspector {public static String} decapitalize (java.lang.String@w{ }@var{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. @end deftypemethod @deftypemethod 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. @end deftypemethod @deftypemethod MethodDescriptor {public Method} getMethod () Get the method this MethodDescriptor represents. @end deftypemethod @deftypemethod PropertyChangeEvent {public String} getPropertyName () Get the property name. @end deftypemethod @deftypemethod PropertyChangeEvent {public Object} getOldValue () Get the property's old value. @end deftypemethod @deftypemethod PropertyChangeEvent {public Object} getNewValue () Get the property's new value. @end deftypemethod @deftypemethod PropertyChangeEvent {public void} setPropagationId (java.lang.Object@w{ }@var{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. @end deftypemethod @deftypemethod PropertyChangeEvent {public Object} getPropagationId () Get the propagation ID. @end deftypemethod @deftypemethod PropertyChangeListener {public void} propertyChange (java.beans.PropertyChangeEvent@w{ }@var{e}) Fired after a Bean's property has changed. @end deftypemethod @deftypemethod PropertyChangeSupport {public void} addPropertyChangeListener (java.beans.PropertyChangeListener@w{ }@var{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, n adds with the same listener will result in n events being sent to that listener for every property change. Adding a null listener will cause undefined behavior. @end deftypemethod @deftypemethod PropertyChangeSupport {public void} addPropertyChangeListener (java.lang.String@w{ }@var{propertyName}, java.beans.PropertyChangeListener@w{ }@var{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, n adds on a particular property for a particular listener will result in n 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. @end deftypemethod @deftypemethod PropertyChangeSupport {public void} removePropertyChangeListener (java.beans.PropertyChangeListener@w{ }@var{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 @code{add()} has been called multiple times for a particular listener, @code{remove()} will have to be called the same number of times to deregister it. @end deftypemethod @deftypemethod PropertyChangeSupport {public void} removePropertyChangeListener (java.lang.String@w{ }@var{propertyName}, java.beans.PropertyChangeListener@w{ }@var{l}) Removes a PropertyChangeListener from listening to a specific property. If @code{add()} has been called multiple times for a particular listener on a property, @code{remove()} will have to be called the same number of times to deregister it. @end deftypemethod @deftypemethod PropertyChangeSupport {public void} firePropertyChange (java.beans.PropertyChangeEvent@w{ }@var{event}) Fire a PropertyChangeEvent to all the listeners. @end deftypemethod @deftypemethod PropertyChangeSupport {public void} firePropertyChange (java.lang.String@w{ }@var{propertyName}, java.lang.Object@w{ }@var{oldVal}, java.lang.Object@w{ }@var{newVal}) Fire a PropertyChangeEvent containing the old and new values of the property to all the listeners. @end deftypemethod @deftypemethod PropertyChangeSupport {public void} firePropertyChange (java.lang.String@w{ }@var{propertyName}, boolean@w{ }@var{oldVal}, boolean@w{ }@var{newVal}) Fire a PropertyChangeEvent containing the old and new values of the property to all the listeners. @end deftypemethod @deftypemethod PropertyChangeSupport {public void} firePropertyChange (java.lang.String@w{ }@var{propertyName}, int@w{ }@var{oldVal}, int@w{ }@var{newVal}) Fire a PropertyChangeEvent containing the old and new values of the property to all the listeners. @end deftypemethod @deftypemethod PropertyChangeSupport {public boolean} hasListeners (java.lang.String@w{ }@var{propertyName}) Tell whether the specified property is being listened on or not. This will only return @code{true} if there are listeners on all properties or if there is a listener specifically on this property. @end deftypemethod @deftypemethod PropertyDescriptor {public Class} getPropertyType () Get the property type. This is the type the get method returns and the set method takes in. @end deftypemethod @deftypemethod PropertyDescriptor {public Method} getReadMethod () Get the get method. Why they call it readMethod here and get everywhere else is beyond me. @end deftypemethod @deftypemethod PropertyDescriptor {public Method} getWriteMethod () Get the set method. Why they call it writeMethod here and set everywhere else is beyond me. @end deftypemethod @deftypemethod PropertyDescriptor {public boolean} isBound () Get whether the property is bound. Defaults to false. @end deftypemethod @deftypemethod PropertyDescriptor {public void} setBound (boolean@w{ }@var{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 @code{PropertyChangeListener.propertyChange())} event after the value has changed. @end deftypemethod @deftypemethod PropertyDescriptor {public boolean} isConstrained () Get whether the property is constrained. Defaults to false. @end deftypemethod @deftypemethod PropertyDescriptor {public void} setConstrained (boolean@w{ }@var{constrained}) Set whether the property is constrained. If the set method throws @code{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. Spec note: 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: @itemize @bullet @item Fire the @code{VetoableChangeListener.vetoableChange()} event notifying others of the change and allowing them a chance to say it is a bad thing. @item 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. @item If all has gone well to this point, the value may be changed. @end itemize @end deftypemethod @deftypemethod PropertyDescriptor {public Class} getPropertyEditorClass () Get the PropertyEditor class. Defaults to null. @end deftypemethod @deftypemethod PropertyDescriptor {public void} setPropertyEditorClass (java.lang.Class@w{ }@var{propertyEditorClass}) Set the PropertyEditor class. If the class does not implement the PropertyEditor interface, you will likely get an exception late in the game. @end deftypemethod @deftypemethod PropertyEditor {public void} setValue (java.lang.Object@w{ }@var{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. @end deftypemethod @deftypemethod 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. @end deftypemethod @deftypemethod PropertyEditor {public void} setAsText (java.lang.String@w{ }@var{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. @end deftypemethod @deftypemethod 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(). @code{setAsText(getAsText())} should be valid; i.e. the stuff you spit out in getAsText() should be able to go into setAsText(). @end deftypemethod @deftypemethod 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. @end deftypemethod @deftypemethod PropertyEditor {public boolean} isPaintable () The RAD tool calls this to find out whether the PropertyEditor can paint itself. @end deftypemethod @deftypemethod PropertyEditor {public void} paintValue (java.awt.Graphics@w{ }@var{g}, java.awt.Rectangle@w{ }@var{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. @end deftypemethod @deftypemethod PropertyEditor {public boolean} supportsCustomEditor () The RAD tool calls this to find out whether the PropertyEditor supports a custom component to edit and display itself. @end deftypemethod @deftypemethod 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. @end deftypemethod @deftypemethod PropertyEditor {public void} addPropertyChangeListener (java.beans.PropertyChangeListener@w{ }@var{listener}) Adds a property change listener to this PropertyEditor. @end deftypemethod @deftypemethod PropertyEditor {public void} removePropertyChangeListener (java.beans.PropertyChangeListener@w{ }@var{listener}) Removes a property change listener from this PropertyEditor. @end deftypemethod @deftypemethod 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: @itemize @bullet @item @code{2} @item @code{"I am a String"} @item @code{new MyObject(2, "String", new StringBuffer())} @end itemize @end deftypemethod @deftypemethod PropertyEditorManager {public static void} registerEditor (java.lang.Class@w{ }@var{editedClass}, java.lang.Class@w{ }@var{editorClass}) Register an editor for a class. Replaces old editor if there was one registered before. @end deftypemethod @deftypemethod PropertyEditorManager {public static PropertyEditor} findEditor (java.lang.Class@w{ }@var{editedClass}) Returns a new instance of the property editor for the specified class. @end deftypemethod @deftypemethod 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". @end deftypemethod @deftypemethod PropertyEditorManager {public static void} setEditorSearchPath (java.lang.String[]@w{ }@var{editorSearchPath}) Set the editor search path. @end deftypemethod @deftypemethod PropertyEditorSupport {public void} setValue (java.lang.Object@w{ }@var{val}) Set the current value of the property. Implementation Note 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. @end deftypemethod @deftypemethod PropertyEditorSupport {public Object} getValue () Get the current value of the property. @end deftypemethod @deftypemethod PropertyEditorSupport {public boolean} isPaintable () Get whether this object is paintable or not. @end deftypemethod @deftypemethod PropertyEditorSupport {public void} paintValue (java.awt.Graphics@w{ }@var{g}, java.awt.Rectangle@w{ }@var{r}) Paint this object. This class does nothing in this method. @end deftypemethod @deftypemethod 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). Implementation Note: 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. @end deftypemethod @deftypemethod 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(). @end deftypemethod @deftypemethod PropertyEditorSupport {public void} setAsText (java.lang.String@w{ }@var{s}) @*throws IllegalArgumentException Set the value as text. In this class, you cannot count on setAsText() doing anything useful across implementations. Implementation Note: In this implementation it checks if the String is "null", and if it is, sets the value to null, otherwise it throws an IllegalArgumentException. @end deftypemethod @deftypemethod PropertyEditorSupport {public String} getTags () Returns a list of possible choices for the value. @end deftypemethod @deftypemethod PropertyEditorSupport {public Component} getCustomEditor () Return a custom component to edit the value. @end deftypemethod @deftypemethod PropertyEditorSupport {public boolean} supportsCustomEditor () Find out whether this property editor supports a custom component to edit its value. @end deftypemethod @deftypemethod PropertyEditorSupport {public void} addPropertyChangeListener (java.beans.PropertyChangeListener@w{ }@var{l}) Add a property change listener to this property editor. @end deftypemethod @deftypemethod PropertyEditorSupport {public void} removePropertyChangeListener (java.beans.PropertyChangeListener@w{ }@var{l}) Remove a property change listener from this property editor. @end deftypemethod @deftypemethod 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. @end deftypemethod @deftypemethod PropertyVetoException {public PropertyChangeEvent} getPropertyChangeEvent () Get the PropertyChange event that was vetoed. @end deftypemethod @deftypemethod SimpleBeanInfo {public BeanDescriptor} getBeanDescriptor () Force Introspection of the general bean info. @end deftypemethod @deftypemethod SimpleBeanInfo {public EventSetDescriptor} getEventSetDescriptors () Force Introspection of the events this Bean type fires. @end deftypemethod @deftypemethod SimpleBeanInfo {public int} getDefaultEventIndex () Say that there is no "default" event set. @end deftypemethod @deftypemethod SimpleBeanInfo {public PropertyDescriptor} getPropertyDescriptors () Force Introspection of the Bean properties. @end deftypemethod @deftypemethod SimpleBeanInfo {public int} getDefaultPropertyIndex () Say that there is no "default" property. @end deftypemethod @deftypemethod SimpleBeanInfo {public MethodDescriptor} getMethodDescriptors () Force Introspection of the Bean's methods. @end deftypemethod @deftypemethod SimpleBeanInfo {public BeanInfo} getAdditionalBeanInfo () Tell the Introspector to go look for other BeanInfo itself. @end deftypemethod @deftypemethod SimpleBeanInfo {public Image} getIcon (int@w{ }@var{iconType}) Say that this Bean has no icons. @end deftypemethod @deftypemethod SimpleBeanInfo {public Image} loadImage (java.lang.String@w{ }@var{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. @end deftypemethod @deftypemethod VetoableChangeListener {public void} vetoableChange (java.beans.PropertyChangeEvent@w{ }@var{e}) @*throws PropertyVetoException Fired before a Bean's property changes. @end deftypemethod @deftypemethod VetoableChangeSupport {public void} addVetoableChangeListener (java.beans.VetoableChangeListener@w{ }@var{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, n adds with the same listener will result in n events being sent to that listener for every property change. Adding a null listener will cause undefined behavior. @end deftypemethod @deftypemethod VetoableChangeSupport {public void} addVetoableChangeListener (java.lang.String@w{ }@var{propertyName}, java.beans.VetoableChangeListener@w{ }@var{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, n adds on a particular property for a particular listener will result in n 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. @end deftypemethod @deftypemethod VetoableChangeSupport {public void} removeVetoableChangeListener (java.beans.VetoableChangeListener@w{ }@var{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 @code{add()} has been called multiple times for a particular listener, @code{remove()} will have to be called the same number of times to deregister it. @end deftypemethod @deftypemethod VetoableChangeSupport {public void} removeVetoableChangeListener (java.lang.String@w{ }@var{propertyName}, java.beans.VetoableChangeListener@w{ }@var{l}) Removes a VetoableChangeListener from listening to a specific property. If @code{add()} has been called multiple times for a particular listener on a property, @code{remove()} will have to be called the same number of times to deregister it. @end deftypemethod @deftypemethod VetoableChangeSupport {public void} fireVetoableChange (java.beans.PropertyChangeEvent@w{ }@var{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. @end deftypemethod @deftypemethod VetoableChangeSupport {public void} fireVetoableChange (java.lang.String@w{ }@var{propertyName}, java.lang.Object@w{ }@var{oldVal}, java.lang.Object@w{ }@var{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. @end deftypemethod @deftypemethod VetoableChangeSupport {public void} fireVetoableChange (java.lang.String@w{ }@var{propertyName}, boolean@w{ }@var{oldVal}, boolean@w{ }@var{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. @end deftypemethod @deftypemethod VetoableChangeSupport {public void} fireVetoableChange (java.lang.String@w{ }@var{propertyName}, int@w{ }@var{oldVal}, int@w{ }@var{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. @end deftypemethod @deftypemethod VetoableChangeSupport {public boolean} hasListeners (java.lang.String@w{ }@var{propertyName}) Tell whether the specified property is being listened on or not. This will only return @code{true} if there are listeners on all properties or if there is a listener specifically on this property. @end deftypemethod @deftypemethod Visibility {public boolean} needsGui () Tells whether the Bean can run without a GUI or not. @end deftypemethod @deftypemethod Visibility {public boolean} avoidingGui () Tells whether Bean is trying not to use the GUI. If needsGui() is true, this method should always return false. @end deftypemethod @deftypemethod 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. @end deftypemethod @deftypemethod 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 permitted to use it. If needsGui() is false, avoidingGui() may return true or false after this method is called. @end deftypemethod