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

#ifndef __javax_swing_plaf_basic_BasicSplitPaneDivider$MouseHandler__
#define __javax_swing_plaf_basic_BasicSplitPaneDivider$MouseHandler__

#pragma interface

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

class javax::swing::plaf::basic::BasicSplitPaneDivider$MouseHandler : public ::java::awt::event::MouseAdapter
{

public: // actually protected
  BasicSplitPaneDivider$MouseHandler(::javax::swing::plaf::basic::BasicSplitPaneDivider *);
public:
  virtual void mousePressed(::java::awt::event::MouseEvent *);
  virtual void mouseReleased(::java::awt::event::MouseEvent *);
  virtual void mouseDragged(::java::awt::event::MouseEvent *);
  virtual void mouseMoved(::java::awt::event::MouseEvent *);
private:
  jboolean __attribute__((aligned(__alignof__( ::java::awt::event::MouseAdapter)))) isDragging;
public: // actually package-private
  ::javax::swing::plaf::basic::BasicSplitPaneDivider * this$0;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_swing_plaf_basic_BasicSplitPaneDivider$MouseHandler__
