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

#ifndef __javax_swing_plaf_metal_MetalBorders$TableHeaderBorder__
#define __javax_swing_plaf_metal_MetalBorders$TableHeaderBorder__

#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$TableHeaderBorder;
        }
      }
    }
  }
}

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

public:
  MetalBorders$TableHeaderBorder();
  virtual ::java::awt::Insets * getBorderInsets(::java::awt::Component *);
  virtual void paintBorder(::java::awt::Component *, ::java::awt::Graphics *, jint, jint, jint, jint);
public: // actually protected
  ::java::awt::Insets * __attribute__((aligned(__alignof__( ::javax::swing::border::AbstractBorder)))) editorBorderInsets;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_swing_plaf_metal_MetalBorders$TableHeaderBorder__
