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

#ifndef __javax_swing_plaf_basic_BasicMenuItemUI$MenuKeyHandler__
#define __javax_swing_plaf_basic_BasicMenuItemUI$MenuKeyHandler__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace javax
  {
    namespace swing
    {
      namespace event
      {
          class MenuKeyEvent;
      }
      namespace plaf
      {
        namespace basic
        {
            class BasicMenuItemUI;
            class BasicMenuItemUI$MenuKeyHandler;
        }
      }
    }
  }
}

class javax::swing::plaf::basic::BasicMenuItemUI$MenuKeyHandler : public ::java::lang::Object
{

  BasicMenuItemUI$MenuKeyHandler(::javax::swing::plaf::basic::BasicMenuItemUI *);
public:
  virtual void menuKeyPressed(::javax::swing::event::MenuKeyEvent *);
  virtual void menuKeyReleased(::javax::swing::event::MenuKeyEvent *);
  virtual void menuKeyTyped(::javax::swing::event::MenuKeyEvent *);
public: // actually package-private
  BasicMenuItemUI$MenuKeyHandler(::javax::swing::plaf::basic::BasicMenuItemUI *, ::javax::swing::plaf::basic::BasicMenuItemUI$MenuKeyHandler *);
  ::javax::swing::plaf::basic::BasicMenuItemUI * __attribute__((aligned(__alignof__( ::java::lang::Object)))) this$0;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_swing_plaf_basic_BasicMenuItemUI$MenuKeyHandler__
