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

#ifndef __javax_swing_plaf_basic_BasicMenuBarUI$ContainerHandler__
#define __javax_swing_plaf_basic_BasicMenuBarUI$ContainerHandler__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace java
  {
    namespace awt
    {
      namespace event
      {
          class ContainerEvent;
      }
    }
  }
  namespace javax
  {
    namespace swing
    {
      namespace plaf
      {
        namespace basic
        {
            class BasicMenuBarUI;
            class BasicMenuBarUI$ContainerHandler;
        }
      }
    }
  }
}

class javax::swing::plaf::basic::BasicMenuBarUI$ContainerHandler : public ::java::lang::Object
{

  BasicMenuBarUI$ContainerHandler(::javax::swing::plaf::basic::BasicMenuBarUI *);
public:
  virtual void componentAdded(::java::awt::event::ContainerEvent *);
  virtual void componentRemoved(::java::awt::event::ContainerEvent *);
public: // actually package-private
  BasicMenuBarUI$ContainerHandler(::javax::swing::plaf::basic::BasicMenuBarUI *, ::javax::swing::plaf::basic::BasicMenuBarUI$ContainerHandler *);
  ::javax::swing::plaf::basic::BasicMenuBarUI * __attribute__((aligned(__alignof__( ::java::lang::Object)))) this$0;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_swing_plaf_basic_BasicMenuBarUI$ContainerHandler__
