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

#ifndef __java_awt_dnd_DropTarget$DropTargetAutoScroller__
#define __java_awt_dnd_DropTarget$DropTargetAutoScroller__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace java
  {
    namespace awt
    {
        class Component;
        class Point;
        class Rectangle;
      namespace dnd
      {
          class DropTarget$DropTargetAutoScroller;
      }
      namespace event
      {
          class ActionEvent;
      }
    }
  }
  namespace javax
  {
    namespace swing
    {
        class Timer;
    }
  }
}

class java::awt::dnd::DropTarget$DropTargetAutoScroller : public ::java::lang::Object
{

public: // actually protected
  DropTarget$DropTargetAutoScroller(::java::awt::Component *, ::java::awt::Point *);
  virtual void updateLocation(::java::awt::Point *);
  virtual void stop();
public:
  virtual void actionPerformed(::java::awt::event::ActionEvent *);
private:
  static const jint HYSTERESIS = 10;
  static const jint DELAY = 100;
  ::java::awt::Component * __attribute__((aligned(__alignof__( ::java::lang::Object)))) component;
  ::java::awt::Point * point;
  ::javax::swing::Timer * timer;
  ::java::awt::Rectangle * outer;
  ::java::awt::Rectangle * inner;
public:
  static ::java::lang::Class class$;
};

#endif // __java_awt_dnd_DropTarget$DropTargetAutoScroller__
