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

#ifndef __java_awt_event_InvocationEvent__
#define __java_awt_event_InvocationEvent__

#pragma interface

#include <java/awt/AWTEvent.h>
extern "Java"
{
  namespace java
  {
    namespace awt
    {
      namespace event
      {
          class InvocationEvent;
      }
    }
  }
}

class java::awt::event::InvocationEvent : public ::java::awt::AWTEvent
{

public:
  InvocationEvent(::java::lang::Object *, ::java::lang::Runnable *);
  InvocationEvent(::java::lang::Object *, ::java::lang::Runnable *, ::java::lang::Object *, jboolean);
public: // actually protected
  InvocationEvent(::java::lang::Object *, jint, ::java::lang::Runnable *, ::java::lang::Object *, jboolean);
public:
  virtual void dispatch();
  virtual ::java::lang::Exception * getException();
  virtual ::java::lang::Throwable * getThrowable();
  virtual jlong getWhen();
  virtual ::java::lang::String * paramString();
private:
  static const jlong serialVersionUID = 436056344909459450LL;
public:
  static const jint INVOCATION_FIRST = 1200;
  static const jint INVOCATION_DEFAULT = 1200;
  static const jint INVOCATION_LAST = 1200;
public: // actually protected
  ::java::lang::Runnable * __attribute__((aligned(__alignof__( ::java::awt::AWTEvent)))) runnable;
  ::java::lang::Object * notifier;
  jboolean catchExceptions;
private:
  ::java::lang::Exception * exception;
  ::java::lang::Throwable * throwable;
  jlong when;
public:
  static ::java::lang::Class class$;
};

#endif // __java_awt_event_InvocationEvent__
