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

#ifndef __javax_swing_plaf_basic_BasicProgressBarUI$Animator__
#define __javax_swing_plaf_basic_BasicProgressBarUI$Animator__

#pragma interface

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

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

  BasicProgressBarUI$Animator(::javax::swing::plaf::basic::BasicProgressBarUI *);
public:
  virtual void actionPerformed(::java::awt::event::ActionEvent *);
public: // actually package-private
  BasicProgressBarUI$Animator(::javax::swing::plaf::basic::BasicProgressBarUI *, ::javax::swing::plaf::basic::BasicProgressBarUI$Animator *);
  ::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$Animator__
