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

#ifndef __javax_swing_plaf_basic_BasicSliderUI$TrackListener__
#define __javax_swing_plaf_basic_BasicSliderUI$TrackListener__

#pragma interface

#include <javax/swing/event/MouseInputAdapter.h>
extern "Java"
{
  namespace java
  {
    namespace awt
    {
      namespace event
      {
          class MouseEvent;
      }
    }
  }
  namespace javax
  {
    namespace swing
    {
      namespace plaf
      {
        namespace basic
        {
            class BasicSliderUI;
            class BasicSliderUI$TrackListener;
        }
      }
    }
  }
}

class javax::swing::plaf::basic::BasicSliderUI$TrackListener : public ::javax::swing::event::MouseInputAdapter
{

public:
  BasicSliderUI$TrackListener(::javax::swing::plaf::basic::BasicSliderUI *);
  virtual void mouseDragged(::java::awt::event::MouseEvent *);
  virtual void mouseMoved(::java::awt::event::MouseEvent *);
  virtual void mousePressed(::java::awt::event::MouseEvent *);
  virtual void mouseReleased(::java::awt::event::MouseEvent *);
  virtual jboolean shouldScroll(jint);
public: // actually protected
  jint __attribute__((aligned(__alignof__( ::javax::swing::event::MouseInputAdapter)))) currentMouseX;
  jint currentMouseY;
  jint offset;
public: // actually package-private
  ::javax::swing::plaf::basic::BasicSliderUI * this$0;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_swing_plaf_basic_BasicSliderUI$TrackListener__
