A generic editor action listener interface. 
 <P>
 nsIEditActionListener is the interface used by applications wishing to be notified
 when the editor modifies the DOM tree.

 Note:  this is the wrong class to implement if you are interested in generic
 change notifications.  For generic notifications, you should implement
 nsIDocumentObserver.
[scriptable, uuid(b22907b1-ee93-11d2-8d50-000064657374)]
interface nsIEditActionListener : nsISupports

Methods

 
 Called after the editor creates a node.
 @param aTag      The tag name of the DOM Node to create.
 @param aNode     The DOM Node that was created.
 @param aParent   The node to insert the new object into
 @param aPosition The place in aParent to insert the new node
                  0=first child, 1=second child, etc.
                  any number > number of current children = last child
 @param aResult   The result of the create node operation.
void DidCreateNode(in DOMString aTag, in nsIDOMNode aNode, in nsIDOMNode aParent, in long aPosition, in nsresult aResult)
 
 Called after the editor deletes a node.
 @param aChild    The node to delete
 @param aResult   The result of the delete node operation.
void DidDeleteNode(in nsIDOMNode aChild, in nsresult aResult)
 
 Called after the editor deletes the selection.
 @param aSelection   The selection, after deletion
void DidDeleteSelection(in nsISelection aSelection)
 
 Called before the editor deletes text.
 @param aTextNode   This node getting text deleted
 @param aOffset     The offset in aTextNode to delete at.
 @param aLength     The amount of text to delete.
 @param aResult     The result of the delete text operation.
void DidDeleteText(in nsIDOMCharacterData aTextNode, in long aOffset, in long aLength, in nsresult aResult)
 
 Called after the editor inserts a node.
 @param aNode     The DOM Node to insert.
 @param aParent   The node to insert the new object into
 @param aPosition The place in aParent to insert the new node
                  0=first child, 1=second child, etc.
                  any number > number of current children = last child
 @param aResult   The result of the insert node operation.
void DidInsertNode(in nsIDOMNode aNode, in nsIDOMNode aParent, in long aPosition, in nsresult aResult)
 
 Called after the editor inserts text.
 @param aTextNode   This node getting inserted text
 @param aOffset     The offset in aTextNode to insert at.
 @param aString     The string that gets inserted.
 @param aResult     The result of the insert text operation.
void DidInsertText(in nsIDOMCharacterData aTextNode, in long aOffset, in DOMString aString, in nsresult aResult)
 
 Called after the editor joins 2 nodes.
 @param aLeftNode   This node will be merged into the right node
 @param aRightNode  The node that will be merged into.
                    There is no requirement that the two nodes be of
                    the same type.
 @param aParent     The parent of aRightNode
 @param aResult     The result of the join operation.
void DidJoinNodes(in nsIDOMNode aLeftNode, in nsIDOMNode aRightNode, in nsIDOMNode aParent, in nsresult aResult)
 
 Called after the editor splits a node.
 @param aExistingRightNode   the node to split.  It will become the new node's next sibling.
 @param aOffset              the offset of aExistingRightNode's content|children to do the split at
 @param aNewLeftNode         [OUT] the new node resulting from the split, becomes aExistingRightNode's previous sibling.
void DidSplitNode(in nsIDOMNode aExistingRightNode, in long aOffset, in nsIDOMNode aNewLeftNode, in nsresult aResult)
 
 Called before the editor creates a node.
 @param aTag      The tag name of the DOM Node to create.
 @param aParent   The node to insert the new object into
 @param aPosition The place in aParent to insert the new node
                  0=first child, 1=second child, etc.
                  any number > number of current children = last child
void WillCreateNode(in DOMString aTag, in nsIDOMNode aParent, in long aPosition)
 
 Called before the editor deletes a node.
 @param aChild    The node to delete
void WillDeleteNode(in nsIDOMNode aChild)
 
 Called before the editor deletes the selection.
 @param aSelection   The selection to be deleted
void WillDeleteSelection(in nsISelection aSelection)
 
 Called before the editor deletes text.
 @param aTextNode   This node getting text deleted
 @param aOffset     The offset in aTextNode to delete at.
 @param aLength     The amount of text to delete.
void WillDeleteText(in nsIDOMCharacterData aTextNode, in long aOffset, in long aLength)
 
 Called before the editor inserts a node.
 @param aNode     The DOM Node to insert.
 @param aParent   The node to insert the new object into
 @param aPosition The place in aParent to insert the new node
                  0=first child, 1=second child, etc.
                  any number > number of current children = last child
void WillInsertNode(in nsIDOMNode aNode, in nsIDOMNode aParent, in long aPosition)
 
 Called before the editor inserts text.
 @param aTextNode   This node getting inserted text
 @param aOffset     The offset in aTextNode to insert at.
 @param aString     The string that gets inserted.
void WillInsertText(in nsIDOMCharacterData aTextNode, in long aOffset, in DOMString aString)
 
 Called before the editor joins 2 nodes.
 @param aLeftNode   This node will be merged into the right node
 @param aRightNode  The node that will be merged into.
                    There is no requirement that the two nodes be of
                    the same type.
 @param aParent     The parent of aRightNode
void WillJoinNodes(in nsIDOMNode aLeftNode, in nsIDOMNode aRightNode, in nsIDOMNode aParent)
 
 Called before the editor splits a node.
 @param aExistingRightNode   the node to split.  It will become the new node's next sibling.
 @param aOffset              the offset of aExistingRightNode's content|children to do the split at
 @param aNewLeftNode         [OUT] the new node resulting from the split, becomes aExistingRightNode's previous sibling.
void WillSplitNode(in nsIDOMNode aExistingRightNode, in long aOffset)