
// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-

#ifndef __java_beans_EventHandler__
#define __java_beans_EventHandler__

#pragma interface

#include <java/lang/Object.h>
#include <gcj/array.h>

extern "Java"
{
  namespace java
  {
    namespace beans
    {
        class EventHandler;
    }
  }
}

class java::beans::EventHandler : public ::java::lang::Object
{

  ::java::lang::String * capitalize(::java::lang::String *);
public:
  EventHandler(::java::lang::Object *, ::java::lang::String *, ::java::lang::String *, ::java::lang::String *);
  virtual ::java::lang::String * getEventPropertyName();
  virtual ::java::lang::String * getListenerMethodName();
  virtual ::java::lang::Object * getTarget();
  virtual ::java::lang::String * getAction();
private:
  JArray< ::java::lang::Object * > * getProperty(::java::lang::Object *, ::java::lang::String *);
public:
  virtual ::java::lang::Object * invoke(::java::lang::Object *, ::java::lang::reflect::Method *, JArray< ::java::lang::Object * > *);
private:
  ::java::lang::Class * initClass(::java::lang::Class *);
  ::java::lang::Class * nextClass(::java::lang::Class *);
public:
  static ::java::lang::Object * create(::java::lang::Class *, ::java::lang::Object *, ::java::lang::String *);
  static ::java::lang::Object * create(::java::lang::Class *, ::java::lang::Object *, ::java::lang::String *, ::java::lang::String *);
  static ::java::lang::Object * create(::java::lang::Class *, ::java::lang::Object *, ::java::lang::String *, ::java::lang::String *, ::java::lang::String *);
private:
  ::java::lang::String * __attribute__((aligned(__alignof__( ::java::lang::Object)))) listenerMethod;
  ::java::lang::Object * target;
  ::java::lang::String * action;
  ::java::lang::String * property;
  ::java::lang::Class * targetClass;
public:
  static ::java::lang::Class class$;
};

#endif // __java_beans_EventHandler__
