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

#ifndef __javax_swing_plaf_basic_BasicIconFactory__
#define __javax_swing_plaf_basic_BasicIconFactory__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace javax
  {
    namespace swing
    {
        class Icon;
      namespace plaf
      {
        namespace basic
        {
            class BasicIconFactory;
            class BasicIconFactory$CheckBoxIcon;
            class BasicIconFactory$RadioButtonIcon;
        }
      }
    }
  }
}

class javax::swing::plaf::basic::BasicIconFactory : public ::java::lang::Object
{

public:
  BasicIconFactory();
  static ::javax::swing::Icon * getMenuItemCheckIcon();
  static ::javax::swing::Icon * getMenuItemArrowIcon();
  static ::javax::swing::Icon * getMenuArrowIcon();
  static ::javax::swing::Icon * getCheckBoxIcon();
  static ::javax::swing::Icon * getRadioButtonIcon();
  static ::javax::swing::Icon * getCheckBoxMenuItemIcon();
  static ::javax::swing::Icon * getRadioButtonMenuItemIcon();
  static ::javax::swing::Icon * createEmptyFrameIcon();
public: // actually package-private
  static const jlong serialVersionUID = 5605588811185324383LL;
private:
  static ::javax::swing::plaf::basic::BasicIconFactory$CheckBoxIcon * checkBoxIcon;
  static ::javax::swing::plaf::basic::BasicIconFactory$RadioButtonIcon * radioButtonIcon;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_swing_plaf_basic_BasicIconFactory__
