1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
|
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "nsISupports.idl"
#include "domstubs.idl"
interface nsISelection;
/*
Editor Action Listener interface to outside world
*/
/**
* 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{
/**
* 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 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 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 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 before the editor deletes a node.
* @param aChild The node to delete
*/
void WillDeleteNode(in nsIDOMNode aChild);
/**
* 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 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);
/**
* 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 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 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 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 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 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 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 before the editor deletes the selection.
* @param aSelection The selection to be deleted
*/
void WillDeleteSelection(in nsISelection aSelection);
/**
* Called after the editor deletes the selection.
* @param aSelection The selection, after deletion
*/
void DidDeleteSelection(in nsISelection aSelection);
};
|