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

#ifndef __javax_swing_plaf_metal_MetalIconFactory$PaletteCloseIcon__
#define __javax_swing_plaf_metal_MetalIconFactory$PaletteCloseIcon__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace java
  {
    namespace awt
    {
        class Component;
        class Graphics;
    }
  }
  namespace javax
  {
    namespace swing
    {
      namespace plaf
      {
        namespace metal
        {
            class MetalIconFactory$PaletteCloseIcon;
        }
      }
    }
  }
}

class javax::swing::plaf::metal::MetalIconFactory$PaletteCloseIcon : public ::java::lang::Object
{

public:
  MetalIconFactory$PaletteCloseIcon();
  virtual jint getIconWidth();
  virtual jint getIconHeight();
  virtual void paintIcon(::java::awt::Component *, ::java::awt::Graphics *, jint, jint);
  static ::java::lang::Class class$;
};

#endif // __javax_swing_plaf_metal_MetalIconFactory$PaletteCloseIcon__
