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

#ifndef __javax_swing_JList$ListListener__
#define __javax_swing_JList$ListListener__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace javax
  {
    namespace swing
    {
        class JList;
        class JList$ListListener;
      namespace event
      {
          class ListDataEvent;
          class ListSelectionEvent;
      }
    }
  }
}

class javax::swing::JList$ListListener : public ::java::lang::Object
{

  JList$ListListener(::javax::swing::JList *);
public:
  virtual void contentsChanged(::javax::swing::event::ListDataEvent *);
  virtual void intervalAdded(::javax::swing::event::ListDataEvent *);
  virtual void intervalRemoved(::javax::swing::event::ListDataEvent *);
  virtual void valueChanged(::javax::swing::event::ListSelectionEvent *);
public: // actually package-private
  JList$ListListener(::javax::swing::JList *, ::javax::swing::JList$ListListener *);
  ::javax::swing::JList * __attribute__((aligned(__alignof__( ::java::lang::Object)))) this$0;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_swing_JList$ListListener__
