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

#ifndef __javax_swing_plaf_metal_MetalBorders$RolloverMarginBorder__
#define __javax_swing_plaf_metal_MetalBorders$RolloverMarginBorder__

#pragma interface

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

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

public:
  MetalBorders$RolloverMarginBorder();
  virtual ::java::awt::Insets * getBorderInsets(::java::awt::Component *);
  virtual ::java::awt::Insets * getBorderInsets(::java::awt::Component *, ::java::awt::Insets *);
public: // actually protected
  static ::java::awt::Insets * borderInsets;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_swing_plaf_metal_MetalBorders$RolloverMarginBorder__
