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

#ifndef __javax_swing_JMenu__
#define __javax_swing_JMenu__

#pragma interface

#include <javax/swing/JMenuItem.h>
#include <gcj/array.h>

extern "Java"
{
  namespace java
  {
    namespace beans
    {
      class PropertyChangeListener;
    }
    namespace awt
    {
      namespace event
      {
        class KeyEvent;
      }
      class Component;
      class Point;
    }
  }
  namespace javax
  {
    namespace accessibility
    {
      class AccessibleContext;
    }
    namespace swing
    {
      class JMenu;
      class KeyStroke;
      class MenuElement;
      class ButtonModel;
      class JMenuItem;
      class Action;
      class JMenu$WinListener;
      namespace event
      {
        class MenuListener;
        class MenuEvent;
      }
      class JPopupMenu;
    }
  }
}

class javax::swing::JMenu : public ::javax::swing::JMenuItem
{
public:
  JMenu ();
  JMenu (::java::lang::String *);
  JMenu (::javax::swing::Action *);
  JMenu (::java::lang::String *, jboolean);
  virtual ::javax::swing::JMenuItem *add (::javax::swing::JMenuItem *);
  virtual ::java::awt::Component *add (::java::awt::Component *);
  virtual ::java::awt::Component *add (::java::awt::Component *, jint);
  virtual ::javax::swing::JMenuItem *add (::java::lang::String *);
  virtual ::javax::swing::JMenuItem *add (::javax::swing::Action *);
  virtual void remove (::javax::swing::JMenuItem *);
  virtual void remove (jint);
  virtual void remove (::java::awt::Component *);
  virtual void removeAll ();
  virtual void insert (::java::lang::String *, jint);
  virtual ::javax::swing::JMenuItem *insert (::javax::swing::JMenuItem *, jint);
  virtual ::javax::swing::JMenuItem *insert (::javax::swing::Action *, jint);
  virtual void updateUI ();
  virtual ::java::lang::String *getUIClassID ();
  virtual void setModel (::javax::swing::ButtonModel *);
  virtual jboolean isSelected ();
private:
  void setSelectedHelper (jboolean, jboolean, jboolean);
public:
  virtual void setSelected (jboolean);
  virtual jboolean isPopupMenuVisible ();
  virtual void setPopupMenuVisible (jboolean);
public:  // actually protected
  virtual ::java::awt::Point *getPopupMenuOrigin ();
public:
  virtual jint getDelay () { return delay; }
  virtual void setDelay (jint);
  virtual void setMenuLocation (jint, jint);
public:  // actually protected
  virtual ::javax::swing::JMenuItem *createActionComponent (::javax::swing::Action *);
  virtual ::java::beans::PropertyChangeListener *createActionChangeListener (::javax::swing::JMenuItem *);
public:
  virtual void addSeparator ();
  virtual void insertSeparator (jint);
  virtual ::javax::swing::JMenuItem *getItem (jint);
  virtual jint getItemCount ();
  virtual jboolean isTearOff ();
  virtual jint getMenuComponentCount ();
  virtual ::java::awt::Component *getMenuComponent (jint);
  virtual JArray< ::java::awt::Component *> *getMenuComponents ();
  virtual jboolean isTopLevelMenu ();
  virtual jboolean isMenuComponent (::java::awt::Component *);
  virtual ::javax::swing::JPopupMenu *getPopupMenu () { return popupMenu; }
  virtual void addMenuListener (::javax::swing::event::MenuListener *);
  virtual void removeMenuListener (::javax::swing::event::MenuListener *);
  virtual JArray< ::javax::swing::event::MenuListener *> *getMenuListeners ();
public:  // actually protected
  virtual void fireMenuSelected ();
  virtual void fireMenuDeselected ();
  virtual void fireMenuCanceled ();
  virtual ::javax::swing::JMenu$WinListener *createWinListener (::javax::swing::JPopupMenu *);
public:
  virtual void menuSelectionChanged (jboolean);
  virtual JArray< ::javax::swing::MenuElement *> *getSubElements ();
  virtual ::java::awt::Component *getComponent () { return reinterpret_cast< ::java::awt::Component *> (this); }
  virtual void setAccelerator (::javax::swing::KeyStroke *);
public:  // actually protected
  virtual void processKeyEvent (::java::awt::event::KeyEvent *) { }
public:
  virtual void doClick (jint);
public:  // actually protected
  virtual ::java::lang::String *paramString ();
public:
  virtual ::javax::accessibility::AccessibleContext *getAccessibleContext ();
private:
  static const jlong serialVersionUID = 4227225638931828014LL;
  ::javax::swing::JPopupMenu * __attribute__((aligned(__alignof__( ::javax::swing::JMenuItem )))) popupMenu;
  ::javax::swing::event::MenuEvent *menuEvent;
  jint delay;
public:  // actually protected
  ::javax::swing::JMenu$WinListener *popupListener;
private:
  ::java::awt::Point *menuLocation;

  friend class javax_swing_JMenu$ActionChangedListener;
  friend class javax_swing_JMenu$WinListener;
  friend class javax_swing_JMenu$AccessibleJMenu;
public:

  static ::java::lang::Class class$;
};

#endif /* __javax_swing_JMenu__ */
