#ifndef typing_command_h__
#define typing_command_h__
#include "CompositeEditCommand.h"
namespace WebCore {
class TypingCommand : public CompositeEditCommand
{
public:
enum ETypingCommand {
DeleteKey,
ForwardDeleteKey,
InsertText,
InsertLineBreak,
InsertParagraphSeparator,
InsertParagraphSeparatorInQuotedContent,
};
TypingCommand(Document *document, ETypingCommand, const String &text = "", bool selectInsertedText = false, TextGranularity granularity = CharacterGranularity);
static void deleteKeyPressed(Document *, bool smartDelete = false, TextGranularity granularity = CharacterGranularity);
static void forwardDeleteKeyPressed(Document *, bool smartDelete = false, TextGranularity granularity = CharacterGranularity);
static void insertText(Document *, const String &, bool selectInsertedText = false);
static void insertLineBreak(Document *);
static void insertParagraphSeparator(Document *);
static void insertParagraphSeparatorInQuotedContent(Document *);
static bool isOpenForMoreTypingCommand(const EditCommandPtr &);
static void closeTyping(const EditCommandPtr &);
virtual void doApply();
virtual EditAction editingAction() const;
bool openForMoreTyping() const { return m_openForMoreTyping; }
void closeTyping() { m_openForMoreTyping = false; }
void insertText(const String &text, bool selectInsertedText);
void insertTextRunWithoutNewlines(const String &text, bool selectInsertedText);
void insertLineBreak();
void insertParagraphSeparatorInQuotedContent();
void insertParagraphSeparator();
void deleteKeyPressed(TextGranularity);
void forwardDeleteKeyPressed(TextGranularity);
bool smartDelete() { return m_smartDelete; }
void setSmartDelete(bool smartDelete) { m_smartDelete = smartDelete; }
private:
virtual bool isTypingCommand() const;
virtual bool preservesTypingStyle() const;
void markMisspellingsAfterTyping();
void typingAddedToOpenCommand();
ETypingCommand m_commandType;
String m_textToInsert;
bool m_openForMoreTyping;
bool m_applyEditing;
bool m_selectInsertedText;
bool m_smartDelete;
TextGranularity m_granularity;
};
}
#endif // __typing_command_h__