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

#ifndef __javax_swing_text_StyledEditorKit$StyledTextAction__
#define __javax_swing_text_StyledEditorKit$StyledTextAction__

#pragma interface

#include <javax/swing/text/TextAction.h>
extern "Java"
{
  namespace java
  {
    namespace awt
    {
      namespace event
      {
          class ActionEvent;
      }
    }
  }
  namespace javax
  {
    namespace swing
    {
        class JEditorPane;
      namespace text
      {
          class AttributeSet;
          class StyledDocument;
          class StyledEditorKit;
          class StyledEditorKit$StyledTextAction;
      }
    }
  }
}

class javax::swing::text::StyledEditorKit$StyledTextAction : public ::javax::swing::text::TextAction
{

public:
  StyledEditorKit$StyledTextAction(::java::lang::String *);
public: // actually protected
  virtual ::javax::swing::JEditorPane * getEditor(::java::awt::event::ActionEvent *);
  virtual void setCharacterAttributes(::javax::swing::JEditorPane *, ::javax::swing::text::AttributeSet *, jboolean);
  virtual ::javax::swing::text::StyledDocument * getStyledDocument(::javax::swing::JEditorPane *);
  virtual ::javax::swing::text::StyledEditorKit * getStyledEditorKit(::javax::swing::JEditorPane *);
  virtual void setParagraphAttributes(::javax::swing::JEditorPane *, ::javax::swing::text::AttributeSet *, jboolean);
public:
  static ::java::lang::Class class$;
};

#endif // __javax_swing_text_StyledEditorKit$StyledTextAction__
