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

#ifndef __javax_swing_plaf_basic_BasicTableUI$FocusHandler__
#define __javax_swing_plaf_basic_BasicTableUI$FocusHandler__

#pragma interface

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

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

public:
  BasicTableUI$FocusHandler(::javax::swing::plaf::basic::BasicTableUI *);
  virtual void focusGained(::java::awt::event::FocusEvent *);
  virtual void focusLost(::java::awt::event::FocusEvent *);
private:
  void repaintLeadCell();
public: // actually package-private
  ::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$FocusHandler__
