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

#ifndef __javax_swing_plaf_basic_BasicProgressBarUI$AncestorHandler__
#define __javax_swing_plaf_basic_BasicProgressBarUI$AncestorHandler__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace javax
  {
    namespace swing
    {
      namespace event
      {
          class AncestorEvent;
      }
      namespace plaf
      {
        namespace basic
        {
            class BasicProgressBarUI;
            class BasicProgressBarUI$AncestorHandler;
        }
      }
    }
  }
}

class javax::swing::plaf::basic::BasicProgressBarUI$AncestorHandler : public ::java::lang::Object
{

  BasicProgressBarUI$AncestorHandler(::javax::swing::plaf::basic::BasicProgressBarUI *);
public:
  virtual void ancestorAdded(::javax::swing::event::AncestorEvent *);
  virtual void ancestorRemoved(::javax::swing::event::AncestorEvent *);
  virtual void ancestorMoved(::javax::swing::event::AncestorEvent *);
public: // actually package-private
  BasicProgressBarUI$AncestorHandler(::javax::swing::plaf::basic::BasicProgressBarUI *, ::javax::swing::plaf::basic::BasicProgressBarUI$AncestorHandler *);
  ::javax::swing::plaf::basic::BasicProgressBarUI * __attribute__((aligned(__alignof__( ::java::lang::Object)))) this$0;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_swing_plaf_basic_BasicProgressBarUI$AncestorHandler__
