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

#ifndef __javax_swing_table_JTableHeader$AccessibleJTableHeader__
#define __javax_swing_table_JTableHeader$AccessibleJTableHeader__

#pragma interface

#include <javax/swing/JComponent$AccessibleJComponent.h>
extern "Java"
{
  namespace java
  {
    namespace awt
    {
        class Point;
    }
  }
  namespace javax
  {
    namespace accessibility
    {
        class Accessible;
        class AccessibleRole;
    }
    namespace swing
    {
      namespace table
      {
          class JTableHeader;
          class JTableHeader$AccessibleJTableHeader;
      }
    }
  }
}

class javax::swing::table::JTableHeader$AccessibleJTableHeader : public ::javax::swing::JComponent$AccessibleJComponent
{

public: // actually protected
  JTableHeader$AccessibleJTableHeader(::javax::swing::table::JTableHeader *);
public:
  virtual ::javax::accessibility::AccessibleRole * getAccessibleRole();
  virtual jint getAccessibleChildrenCount();
  virtual ::javax::accessibility::Accessible * getAccessibleChild(jint);
  virtual ::javax::accessibility::Accessible * getAccessibleAt(::java::awt::Point *);
public: // actually package-private
  ::javax::swing::table::JTableHeader * __attribute__((aligned(__alignof__( ::javax::swing::JComponent$AccessibleJComponent)))) this$0;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_swing_table_JTableHeader$AccessibleJTableHeader__
