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

#ifndef __javax_swing_plaf_basic_BasicDesktopIconUI$BoundButton__
#define __javax_swing_plaf_basic_BasicDesktopIconUI$BoundButton__

#pragma interface

#include <javax/swing/JButton.h>
extern "Java"
{
  namespace java
  {
    namespace awt
    {
        class Dimension;
    }
  }
  namespace javax
  {
    namespace swing
    {
      namespace plaf
      {
        namespace basic
        {
            class BasicDesktopIconUI;
            class BasicDesktopIconUI$BoundButton;
        }
      }
    }
  }
}

class javax::swing::plaf::basic::BasicDesktopIconUI$BoundButton : public ::javax::swing::JButton
{

public:
  BasicDesktopIconUI$BoundButton(::javax::swing::plaf::basic::BasicDesktopIconUI *, ::java::lang::String *);
  virtual ::java::awt::Dimension * getPreferredSize();
  virtual ::java::awt::Dimension * getMinimumSize();
  virtual ::java::awt::Dimension * getMaximumSize();
public: // actually package-private
  ::javax::swing::plaf::basic::BasicDesktopIconUI * __attribute__((aligned(__alignof__( ::javax::swing::JButton)))) this$0;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_swing_plaf_basic_BasicDesktopIconUI$BoundButton__
