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

#ifndef __gnu_java_awt_peer_swing_SwingButtonPeer$SwingButtonListener__
#define __gnu_java_awt_peer_swing_SwingButtonPeer$SwingButtonListener__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace awt
      {
        namespace peer
        {
          namespace swing
          {
              class SwingButtonPeer;
              class SwingButtonPeer$SwingButtonListener;
          }
        }
      }
    }
  }
  namespace java
  {
    namespace awt
    {
      namespace event
      {
          class ActionEvent;
      }
    }
  }
}

class gnu::java::awt::peer::swing::SwingButtonPeer$SwingButtonListener : public ::java::lang::Object
{

public: // actually package-private
  SwingButtonPeer$SwingButtonListener(::gnu::java::awt::peer::swing::SwingButtonPeer *);
public:
  virtual void actionPerformed(::java::awt::event::ActionEvent *);
public: // actually package-private
  ::gnu::java::awt::peer::swing::SwingButtonPeer * __attribute__((aligned(__alignof__( ::java::lang::Object)))) this$0;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_awt_peer_swing_SwingButtonPeer$SwingButtonListener__
