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

#ifndef __javax_swing_plaf_basic_BasicToolBarUI$ToolBarBorder__
#define __javax_swing_plaf_basic_BasicToolBarUI$ToolBarBorder__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace java
  {
    namespace awt
    {
        class Color;
        class Component;
        class Graphics;
        class Insets;
    }
  }
  namespace javax
  {
    namespace swing
    {
      namespace plaf
      {
        namespace basic
        {
            class BasicToolBarUI$ToolBarBorder;
        }
      }
    }
  }
}

class javax::swing::plaf::basic::BasicToolBarUI$ToolBarBorder : public ::java::lang::Object
{

  BasicToolBarUI$ToolBarBorder();
public:
  virtual ::java::awt::Insets * getBorderInsets(::java::awt::Component *);
  virtual jboolean isBorderOpaque();
private:
  void paintBumps(::java::awt::Graphics *, jint, jint, jint, jint, jint, ::java::awt::Color *);
public:
  virtual void paintBorder(::java::awt::Component *, ::java::awt::Graphics *, jint, jint, jint, jint);
private:
  static const jint offset = 10;
  static const jint regular = 2;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_swing_plaf_basic_BasicToolBarUI$ToolBarBorder__
