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

#ifndef __javax_swing_text_html_FormView$SubmitThread__
#define __javax_swing_text_html_FormView$SubmitThread__

#pragma interface

#include <java/lang/Thread.h>
extern "Java"
{
  namespace java
  {
    namespace net
    {
        class URL;
        class URLConnection;
    }
  }
  namespace javax
  {
    namespace swing
    {
      namespace text
      {
          class AttributeSet;
        namespace html
        {
            class FormSubmitEvent;
            class FormView;
            class FormView$SubmitThread;
        }
      }
    }
  }
}

class javax::swing::text::html::FormView$SubmitThread : public ::java::lang::Thread
{

public: // actually package-private
  FormView$SubmitThread(::javax::swing::text::html::FormView *, ::java::lang::String *);
public:
  virtual void run();
private:
  ::java::lang::String * getMethod();
  ::java::net::URL * getActionURL();
  ::java::lang::String * getTarget();
  void postData(::java::net::URLConnection *, ::java::lang::String *);
  ::javax::swing::text::AttributeSet * getFormAttributes();
public: // actually package-private
  virtual ::javax::swing::text::html::FormSubmitEvent * createSubmitEvent(::java::lang::String *, ::java::net::URL *, ::java::lang::String *);
private:
  ::java::lang::String * __attribute__((aligned(__alignof__( ::java::lang::Thread)))) data;
public: // actually package-private
  ::javax::swing::text::html::FormView * this$0;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_swing_text_html_FormView$SubmitThread__
