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

#ifndef __javax_swing_text_StyledEditorKit__
#define __javax_swing_text_StyledEditorKit__

#pragma interface

#include <javax/swing/text/DefaultEditorKit.h>
#include <gcj/array.h>

extern "Java"
{
  namespace javax
  {
    namespace swing
    {
        class Action;
        class JEditorPane;
      namespace text
      {
          class Document;
          class Element;
          class MutableAttributeSet;
          class StyledEditorKit;
          class StyledEditorKit$CaretTracker;
          class StyledEditorKit$StyledViewFactory;
          class ViewFactory;
      }
    }
  }
}

class javax::swing::text::StyledEditorKit : public ::javax::swing::text::DefaultEditorKit
{

public:
  StyledEditorKit();
  virtual ::java::lang::Object * clone();
  virtual JArray< ::javax::swing::Action * > * getActions();
  virtual ::javax::swing::text::MutableAttributeSet * getInputAttributes();
  virtual ::javax::swing::text::Element * getCharacterAttributeRun();
  virtual ::javax::swing::text::Document * createDefaultDocument();
  virtual void install(::javax::swing::JEditorPane *);
  virtual void deinstall(::javax::swing::JEditorPane *);
  virtual ::javax::swing::text::ViewFactory * getViewFactory();
public: // actually protected
  virtual void createInputAttributes(::javax::swing::text::Element *, ::javax::swing::text::MutableAttributeSet *);
private:
  static const jlong serialVersionUID = 7002391892985555948LL;
public: // actually package-private
  ::javax::swing::text::Element * __attribute__((aligned(__alignof__( ::javax::swing::text::DefaultEditorKit)))) currentRun;
  ::javax::swing::text::MutableAttributeSet * inputAttributes;
  ::javax::swing::text::StyledEditorKit$CaretTracker * caretTracker;
  ::javax::swing::text::StyledEditorKit$StyledViewFactory * viewFactory;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_swing_text_StyledEditorKit__
