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

#ifndef __javax_swing_plaf_basic_BasicTableUI$PropertyChangeHandler__
#define __javax_swing_plaf_basic_BasicTableUI$PropertyChangeHandler__

#pragma interface

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

class javax::swing::plaf::basic::BasicTableUI$PropertyChangeHandler : public ::java::lang::Object
{

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

#endif // __javax_swing_plaf_basic_BasicTableUI$PropertyChangeHandler__
