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

#ifndef __gnu_java_awt_peer_gtk_GtkMenuBarPeer__
#define __gnu_java_awt_peer_gtk_GtkMenuBarPeer__

#pragma interface

#include <gnu/java/awt/peer/gtk/GtkMenuComponentPeer.h>
extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace awt
      {
        namespace peer
        {
          namespace gtk
          {
              class GtkMenuBarPeer;
              class GtkMenuPeer;
          }
        }
      }
    }
  }
  namespace java
  {
    namespace awt
    {
        class Menu;
        class MenuBar;
    }
  }
}

class gnu::java::awt::peer::gtk::GtkMenuBarPeer : public ::gnu::java::awt::peer::gtk::GtkMenuComponentPeer
{

public: // actually protected
  virtual void create();
private:
  void addMenu(::gnu::java::awt::peer::gtk::GtkMenuPeer *);
public:
  GtkMenuBarPeer(::java::awt::MenuBar *);
  virtual void addHelpMenu(::java::awt::Menu *);
  virtual void delMenu(jint);
  virtual void addMenu(::java::awt::Menu *);
private:
  jboolean __attribute__((aligned(__alignof__( ::gnu::java::awt::peer::gtk::GtkMenuComponentPeer)))) hasHelpMenu;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_awt_peer_gtk_GtkMenuBarPeer__
