package sun.beanbox.beans;
import java.beans.*;
import java.lang.reflect.Method;

//
// Marketing department wants to put the right
// spin on the class name when publicly viewed
// in builder tools.
//
public class NervousText08BeanInfo extends SimpleBeanInfo {
    private final static Class beanClass =
        NervousText08.class;
    public BeanDescriptor getBeanDescriptor() {
        System.err.println("ENTER---> NervousText08BeanInfo.getBeanDescriptor");
        BeanDescriptor bd = new BeanDescriptor(beanClass);
        bd.setDisplayName("Uneasy Text 08");
        System.err.println("EXIT----> NervousText08BeanInfo.getBeanDescriptor");
        return bd;
    }
    // ----\/------------------------------------
    public PropertyDescriptor[] getPropertyDescriptors() {
        try {
            PropertyDescriptor textPD =
                new PropertyDescriptor("text", beanClass);
            PropertyDescriptor rv[] = {textPD};
            textPD.setPropertyEditorClass(NervousText08TextPropertyEditor.class);
            return rv;
        } catch (IntrospectionException e) {
            throw new Error(e.toString());
        }
    }
    // ----\/------------------------------------
    public MethodDescriptor[] getMethodDescriptors() {
    System.err.println("ENTER---> NervousText08BeanInfo.getMethodDescriptors");

    // First find the "method" objects.
    Method startMethod, stopMethod, changeDirectionMethod;
    Method propertyChangeMethod;
    Class args[] = { };
    Class actionEventArgs[] = { java.awt.event.ActionEvent.class };
    Class propertyChangeEventArgs[] = { PropertyChangeEvent.class };

    try {
        startMethod = NervousText08.class.getMethod("start", args);
        stopMethod = NervousText08.class.getMethod("stop", args);
                           
        // ActionEvent handler methods
        //FIND METHOD: public void changeDirection(ActionEvent x)
        changeDirectionMethod = NervousText08.class.getMethod("changeDirection", actionEventArgs);

        // PropertyChangeEvent handler methods
        // FIND METHOD public void makeChange(PropertyChangeEvent evt) {
        propertyChangeMethod = NervousText08.class.getMethod("makeChange", propertyChangeEventArgs);
    } catch (Exception ex) {
        // "should never happen"
        throw new Error("Missing method: " + ex);
    }

    // Now create the MethodDescriptor array
    // with visible event response methods:
    MethodDescriptor result[] = { 
        new MethodDescriptor(startMethod),
        new MethodDescriptor(stopMethod),
        new MethodDescriptor(changeDirectionMethod),
        new MethodDescriptor(propertyChangeMethod)
    };  
    System.err.println("EXIT----> NervousText08BeanInfo.getMethodDescriptors");
    return result;
    }

}



