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

#ifndef __org_w3c_dom_ls_LSProgressEvent__
#define __org_w3c_dom_ls_LSProgressEvent__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace org
  {
    namespace w3c
    {
      namespace dom
      {
        namespace events
        {
            class EventTarget;
        }
        namespace ls
        {
            class LSInput;
            class LSProgressEvent;
        }
      }
    }
  }
}

class org::w3c::dom::ls::LSProgressEvent : public ::java::lang::Object
{

public:
  virtual ::org::w3c::dom::ls::LSInput * getInput() = 0;
  virtual jint getPosition() = 0;
  virtual jint getTotalSize() = 0;
  virtual ::java::lang::String * getType() = 0;
  virtual ::org::w3c::dom::events::EventTarget * getTarget() = 0;
  virtual ::org::w3c::dom::events::EventTarget * getCurrentTarget() = 0;
  virtual jshort getEventPhase() = 0;
  virtual jboolean getBubbles() = 0;
  virtual jboolean getCancelable() = 0;
  virtual jlong getTimeStamp() = 0;
  virtual void stopPropagation() = 0;
  virtual void preventDefault() = 0;
  virtual void initEvent(::java::lang::String *, jboolean, jboolean) = 0;
  static ::java::lang::Class class$;
} __attribute__ ((java_interface));

#endif // __org_w3c_dom_ls_LSProgressEvent__
