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

#ifndef __javax_swing_plaf_basic_BasicMenuUI$MenuHandler__
#define __javax_swing_plaf_basic_BasicMenuUI$MenuHandler__

#pragma interface

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

class javax::swing::plaf::basic::BasicMenuUI$MenuHandler : public ::java::lang::Object
{

  BasicMenuUI$MenuHandler(::javax::swing::plaf::basic::BasicMenuUI *);
public:
  virtual void menuCanceled(::javax::swing::event::MenuEvent *);
  virtual void menuDeselected(::javax::swing::event::MenuEvent *);
  virtual void menuSelected(::javax::swing::event::MenuEvent *);
public: // actually package-private
  BasicMenuUI$MenuHandler(::javax::swing::plaf::basic::BasicMenuUI *, ::javax::swing::plaf::basic::BasicMenuUI$MenuHandler *);
  ::javax::swing::plaf::basic::BasicMenuUI * __attribute__((aligned(__alignof__( ::java::lang::Object)))) this$0;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_swing_plaf_basic_BasicMenuUI$MenuHandler__
