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

#ifndef __javax_swing_plaf_basic_BasicComboBoxUI$ItemHandler__
#define __javax_swing_plaf_basic_BasicComboBoxUI$ItemHandler__

#pragma interface

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

class javax::swing::plaf::basic::BasicComboBoxUI$ItemHandler : public ::java::lang::Object
{

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

#endif // __javax_swing_plaf_basic_BasicComboBoxUI$ItemHandler__
