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

#ifndef __javax_swing_colorchooser_DefaultHSBChooserPanel$1__
#define __javax_swing_colorchooser_DefaultHSBChooserPanel$1__

#pragma interface

#include <javax/swing/JPanel.h>
extern "Java"
{
  namespace java
  {
    namespace awt
    {
        class Dimension;
        class Graphics;
    }
  }
  namespace javax
  {
    namespace swing
    {
      namespace colorchooser
      {
          class DefaultHSBChooserPanel;
          class DefaultHSBChooserPanel$1;
      }
    }
  }
}

class javax::swing::colorchooser::DefaultHSBChooserPanel$1 : public ::javax::swing::JPanel
{

public: // actually package-private
  DefaultHSBChooserPanel$1(::javax::swing::colorchooser::DefaultHSBChooserPanel *);
public:
  ::java::awt::Dimension * getPreferredSize();
  void paint(::java::awt::Graphics *);
public: // actually package-private
  ::javax::swing::colorchooser::DefaultHSBChooserPanel * __attribute__((aligned(__alignof__( ::javax::swing::JPanel)))) this$0;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_swing_colorchooser_DefaultHSBChooserPanel$1__
