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

#ifndef __javax_swing_plaf_basic_BasicComboBoxUI$KeyHandler__
#define __javax_swing_plaf_basic_BasicComboBoxUI$KeyHandler__

#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 BasicComboBoxUI;
            class BasicComboBoxUI$KeyHandler;
        }
      }
    }
  }
}

class javax::swing::plaf::basic::BasicComboBoxUI$KeyHandler : public ::java::awt::event::KeyAdapter
{

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

#endif // __javax_swing_plaf_basic_BasicComboBoxUI$KeyHandler__
