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

#ifndef __javax_swing_plaf_basic_BasicComboPopup$InvocationKeyHandler__
#define __javax_swing_plaf_basic_BasicComboPopup$InvocationKeyHandler__

#pragma interface

#include <java/awt/event/KeyAdapter.h>
extern "Java"
{
  namespace java
  {
    namespace awt
    {
      namespace event
      {
          class KeyEvent;
      }
    }
  }
  namespace javax
  {
    namespace swing
    {
      namespace plaf
      {
        namespace basic
        {
            class BasicComboPopup;
            class BasicComboPopup$InvocationKeyHandler;
        }
      }
    }
  }
}

class javax::swing::plaf::basic::BasicComboPopup$InvocationKeyHandler : public ::java::awt::event::KeyAdapter
{

public:
  BasicComboPopup$InvocationKeyHandler(::javax::swing::plaf::basic::BasicComboPopup *);
  virtual void keyReleased(::java::awt::event::KeyEvent *);
public: // actually package-private
  ::javax::swing::plaf::basic::BasicComboPopup * __attribute__((aligned(__alignof__( ::java::awt::event::KeyAdapter)))) this$0;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_swing_plaf_basic_BasicComboPopup$InvocationKeyHandler__
