CompositeEditCommand.h [plain text]
#ifndef composite_edit_command_h__
#define composite_edit_command_h__
#include "EditCommand.h"
#include "DeprecatedValueList.h"
namespace WebCore {
class CSSStyleDeclaration;
class String;
class Text;
class QualifiedName;
}
namespace WebCore {
class CompositeEditCommand : public EditCommand
{
public:
CompositeEditCommand(Document *);
virtual void doUnapply();
virtual void doReapply();
protected:
void appendNode(Node *appendChild, Node *parentNode);
void applyCommandToComposite(EditCommandPtr &);
void applyStyle(CSSStyleDeclaration *style, EditAction editingAction=EditActionChangeAttributes);
void applyStyle(CSSStyleDeclaration *style, Position start, Position end, EditAction editingAction=EditActionChangeAttributes);
void applyStyledElement(Element*);
void removeStyledElement(Element*);
void deleteKeyPressed();
void deleteSelection(bool smartDelete=false, bool mergeBlocksAfterDelete=true, bool replace=false);
void deleteSelection(const Selection &selection, bool smartDelete=false, bool mergeBlocksAfterDelete=true, bool replace=false);
virtual void deleteTextFromNode(Text *node, int offset, int count);
void inputText(const String &text, bool selectInsertedText = false);
void insertNodeAfter(Node *insertChild, Node *refChild);
void insertNodeAt(Node *insertChild, Node *refChild, int offset);
void insertNodeBefore(Node *insertChild, Node *refChild);
void insertParagraphSeparator();
void insertTextIntoNode(Text *node, int offset, const String &text);
void joinTextNodes(Text *text1, Text *text2);
void rebalanceWhitespace();
void rebalanceWhitespaceAt(const Position &position);
void removeCSSProperty(CSSStyleDeclaration *, int property);
void removeNodeAttribute(Element *, const QualifiedName& attribute);
void removeChildrenInRange(Node *node, int from, int to);
virtual void removeNode(Node*);
void removeNodePreservingChildren(Node*);
void removeNodeAndPruneAncestors(Node* node);
void prune(PassRefPtr<Node> node);
void replaceTextInNode(Text *node, int offset, int count, const String &replacementText);
Position positionOutsideTabSpan(const Position& pos);
void insertNodeAtTabSpanPosition(Node *node, const Position& pos);
void setNodeAttribute(Element *, const QualifiedName& attribute, const String &);
void splitTextNode(Text *text, int offset);
void splitElement(Element *element, Node *atChild);
void mergeIdenticalElements(Element *first, Element *second);
void wrapContentsInDummySpan(Element *element);
void splitTextNodeContainingElement(Text *text, int offset);
void deleteInsignificantText(Text *, int start, int end);
void deleteInsignificantText(const Position &start, const Position &end);
void deleteInsignificantTextDownstream(const Position &);
Node *appendBlockPlaceholder(Node*);
Node *insertBlockPlaceholder(const Position &pos);
Node *addBlockPlaceholderIfNeeded(Node*);
void removeBlockPlaceholder(const VisiblePosition&);
void moveParagraphContentsToNewBlockIfNecessary(const Position &);
void pushAnchorElementDown(Node*);
void pushPartiallySelectedAnchorElementsDown();
void moveParagraph(const VisiblePosition&, const VisiblePosition&, const VisiblePosition&, bool preserveSelection = false, bool preserveStyle = true);
void moveParagraphs(const VisiblePosition&, const VisiblePosition&, const VisiblePosition&, bool preserveSelection = false, bool preserveStyle = true);
bool breakOutOfEmptyListItem();
DeprecatedValueList<EditCommandPtr> m_cmds;
};
}
#endif // __composite_edit_command_h__