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

#ifndef __javax_swing_ComponentInputMap__
#define __javax_swing_ComponentInputMap__

#pragma interface

#include <javax/swing/InputMap.h>
extern "Java"
{
  namespace javax
  {
    namespace swing
    {
        class ComponentInputMap;
        class InputMap;
        class JComponent;
        class KeyStroke;
    }
  }
}

class javax::swing::ComponentInputMap : public ::javax::swing::InputMap
{

public:
  ComponentInputMap(::javax::swing::JComponent *);
  virtual void put(::javax::swing::KeyStroke *, ::java::lang::Object *);
  virtual void clear();
  virtual void remove(::javax::swing::KeyStroke *);
  virtual void setParent(::javax::swing::InputMap *);
  virtual ::javax::swing::JComponent * getComponent();
private:
  ::javax::swing::JComponent * __attribute__((aligned(__alignof__( ::javax::swing::InputMap)))) component;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_swing_ComponentInputMap__
