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

#ifndef __gnu_javax_security_auth_callback_SwingCallbackHandler$6__
#define __gnu_javax_security_auth_callback_SwingCallbackHandler$6__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace gnu
  {
    namespace javax
    {
      namespace security
      {
        namespace auth
        {
          namespace callback
          {
              class SwingCallbackHandler;
              class SwingCallbackHandler$6;
          }
        }
      }
    }
  }
  namespace java
  {
    namespace awt
    {
      namespace event
      {
          class ActionEvent;
      }
    }
  }
  namespace javax
  {
    namespace security
    {
      namespace auth
      {
        namespace callback
        {
            class TextInputCallback;
        }
      }
    }
    namespace swing
    {
        class JDialog;
        class JTextArea;
    }
  }
}

class gnu::javax::security::auth::callback::SwingCallbackHandler$6 : public ::java::lang::Object
{

public: // actually package-private
  SwingCallbackHandler$6(::gnu::javax::security::auth::callback::SwingCallbackHandler *, ::javax::security::auth::callback::TextInputCallback *, ::javax::swing::JTextArea *, ::javax::swing::JDialog *);
public:
  virtual void actionPerformed(::java::awt::event::ActionEvent *);
public: // actually package-private
  ::gnu::javax::security::auth::callback::SwingCallbackHandler * __attribute__((aligned(__alignof__( ::java::lang::Object)))) this$0;
private:
  ::javax::security::auth::callback::TextInputCallback * val$callback;
  ::javax::swing::JTextArea * val$text;
  ::javax::swing::JDialog * val$dialog;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_javax_security_auth_callback_SwingCallbackHandler$6__
