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

#ifndef __javax_swing_JEditorPane$AccessibleJEditorPane__
#define __javax_swing_JEditorPane$AccessibleJEditorPane__

#pragma interface

#include <javax/swing/text/JTextComponent$AccessibleJTextComponent.h>
extern "Java"
{
  namespace javax
  {
    namespace accessibility
    {
        class AccessibleStateSet;
    }
    namespace swing
    {
        class JEditorPane;
        class JEditorPane$AccessibleJEditorPane;
    }
  }
}

class javax::swing::JEditorPane$AccessibleJEditorPane : public ::javax::swing::text::JTextComponent$AccessibleJTextComponent
{

public: // actually protected
  JEditorPane$AccessibleJEditorPane(::javax::swing::JEditorPane *);
public:
  virtual ::java::lang::String * getAccessibleDescription();
  virtual ::javax::accessibility::AccessibleStateSet * getAccessibleStateSet();
public: // actually package-private
  ::javax::swing::JEditorPane * __attribute__((aligned(__alignof__( ::javax::swing::text::JTextComponent$AccessibleJTextComponent)))) this$0;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_swing_JEditorPane$AccessibleJEditorPane__
