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

#ifndef __javax_swing_plaf_basic_BasicSplitPaneUI$PropertyHandler__
#define __javax_swing_plaf_basic_BasicSplitPaneUI$PropertyHandler__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace java
  {
    namespace beans
    {
        class PropertyChangeEvent;
    }
  }
  namespace javax
  {
    namespace swing
    {
      namespace plaf
      {
        namespace basic
        {
            class BasicSplitPaneUI;
            class BasicSplitPaneUI$PropertyHandler;
        }
      }
    }
  }
}

class javax::swing::plaf::basic::BasicSplitPaneUI$PropertyHandler : public ::java::lang::Object
{

public:
  BasicSplitPaneUI$PropertyHandler(::javax::swing::plaf::basic::BasicSplitPaneUI *);
  virtual void propertyChange(::java::beans::PropertyChangeEvent *);
public: // actually package-private
  ::javax::swing::plaf::basic::BasicSplitPaneUI * __attribute__((aligned(__alignof__( ::java::lang::Object)))) this$0;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_swing_plaf_basic_BasicSplitPaneUI$PropertyHandler__
