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

#ifndef __javax_swing_plaf_metal_MetalBorders$InternalFrameBorder__
#define __javax_swing_plaf_metal_MetalBorders$InternalFrameBorder__

#pragma interface

#include <javax/swing/border/AbstractBorder.h>
extern "Java"
{
  namespace java
  {
    namespace awt
    {
        class Component;
        class Graphics;
        class Insets;
    }
  }
  namespace javax
  {
    namespace swing
    {
      namespace plaf
      {
        namespace metal
        {
            class MetalBorders$InternalFrameBorder;
        }
      }
    }
  }
}

class javax::swing::plaf::metal::MetalBorders$InternalFrameBorder : public ::javax::swing::border::AbstractBorder
{

public:
  MetalBorders$InternalFrameBorder();
  virtual ::java::awt::Insets * getBorderInsets(::java::awt::Component *);
  virtual ::java::awt::Insets * getBorderInsets(::java::awt::Component *, ::java::awt::Insets *);
  virtual void paintBorder(::java::awt::Component *, ::java::awt::Graphics *, jint, jint, jint, jint);
private:
  static ::java::awt::Insets * borderInsets;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_swing_plaf_metal_MetalBorders$InternalFrameBorder__
