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

#ifndef __javax_swing_plaf_basic_BasicInternalFrameTitlePane$SystemMenuBar__
#define __javax_swing_plaf_basic_BasicInternalFrameTitlePane$SystemMenuBar__

#pragma interface

#include <javax/swing/JMenuBar.h>
extern "Java"
{
  namespace java
  {
    namespace awt
    {
        class Graphics;
    }
  }
  namespace javax
  {
    namespace swing
    {
      namespace plaf
      {
        namespace basic
        {
            class BasicInternalFrameTitlePane;
            class BasicInternalFrameTitlePane$SystemMenuBar;
        }
      }
    }
  }
}

class javax::swing::plaf::basic::BasicInternalFrameTitlePane$SystemMenuBar : public ::javax::swing::JMenuBar
{

public:
  BasicInternalFrameTitlePane$SystemMenuBar(::javax::swing::plaf::basic::BasicInternalFrameTitlePane *);
  virtual jboolean isFocusTraversable();
  virtual jboolean isOpaque();
  virtual void paint(::java::awt::Graphics *);
  virtual void requestFocus();
public: // actually package-private
  ::javax::swing::plaf::basic::BasicInternalFrameTitlePane * __attribute__((aligned(__alignof__( ::javax::swing::JMenuBar)))) this$0;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_swing_plaf_basic_BasicInternalFrameTitlePane$SystemMenuBar__
