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

#ifndef __javax_swing_border_AbstractBorder__
#define __javax_swing_border_AbstractBorder__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace java
  {
    namespace awt
    {
        class Component;
        class Graphics;
        class Insets;
        class Rectangle;
    }
  }
  namespace javax
  {
    namespace swing
    {
      namespace border
      {
          class AbstractBorder;
          class Border;
      }
    }
  }
}

class javax::swing::border::AbstractBorder : public ::java::lang::Object
{

public:
  AbstractBorder();
  virtual void paintBorder(::java::awt::Component *, ::java::awt::Graphics *, jint, jint, jint, jint);
  virtual ::java::awt::Insets * getBorderInsets(::java::awt::Component *);
  virtual ::java::awt::Insets * getBorderInsets(::java::awt::Component *, ::java::awt::Insets *);
  virtual jboolean isBorderOpaque();
  virtual ::java::awt::Rectangle * getInteriorRectangle(::java::awt::Component *, jint, jint, jint, jint);
  static ::java::awt::Rectangle * getInteriorRectangle(::java::awt::Component *, ::javax::swing::border::Border *, jint, jint, jint, jint);
public: // actually package-private
  static const jlong serialVersionUID = -545885975315191844LL;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_swing_border_AbstractBorder__
