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

#ifndef __gnu_java_awt_peer_gtk_GtkComponentPeer$RepaintTimerTask__
#define __gnu_java_awt_peer_gtk_GtkComponentPeer$RepaintTimerTask__

#pragma interface

#include <java/util/TimerTask.h>
extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace awt
      {
        namespace peer
        {
          namespace gtk
          {
              class GtkComponentPeer$RepaintTimerTask;
          }
        }
      }
    }
  }
  namespace java
  {
    namespace awt
    {
        class Component;
    }
  }
}

class gnu::java::awt::peer::gtk::GtkComponentPeer$RepaintTimerTask : public ::java::util::TimerTask
{

public: // actually package-private
  GtkComponentPeer$RepaintTimerTask(::java::awt::Component *, jint, jint, jint, jint);
public:
  virtual void run();
public: // actually package-private
  static void schedule(jlong, jint, jint, jint, jint, ::java::awt::Component *);
private:
  static ::java::util::Timer * repaintTimer;
  jint __attribute__((aligned(__alignof__( ::java::util::TimerTask)))) x;
  jint y;
  jint width;
  jint height;
  ::java::awt::Component * awtComponent;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_awt_peer_gtk_GtkComponentPeer$RepaintTimerTask__
