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

#ifndef __javax_swing_JColorChooser$AccessibleJColorChooser__
#define __javax_swing_JColorChooser$AccessibleJColorChooser__

#pragma interface

#include <javax/swing/JComponent$AccessibleJComponent.h>
extern "Java"
{
  namespace javax
  {
    namespace accessibility
    {
        class AccessibleRole;
    }
    namespace swing
    {
        class JColorChooser;
        class JColorChooser$AccessibleJColorChooser;
    }
  }
}

class javax::swing::JColorChooser$AccessibleJColorChooser : public ::javax::swing::JComponent$AccessibleJComponent
{

public: // actually protected
  JColorChooser$AccessibleJColorChooser(::javax::swing::JColorChooser *);
public:
  virtual ::javax::accessibility::AccessibleRole * getAccessibleRole();
private:
  static const jlong serialVersionUID = -2038297864782299082LL;
public: // actually package-private
  ::javax::swing::JColorChooser * __attribute__((aligned(__alignof__( ::javax::swing::JComponent$AccessibleJComponent)))) this$0;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_swing_JColorChooser$AccessibleJColorChooser__
