Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/openjdk-multiarch-jdk8u
Path: blob/aarch64-shenandoah-jdk8u272-b10/jaxp/src/org/w3c/dom/ranges/Range.java
86410 views
1
/*
2
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
3
*
4
* This code is free software; you can redistribute it and/or modify it
5
* under the terms of the GNU General Public License version 2 only, as
6
* published by the Free Software Foundation. Oracle designates this
7
* particular file as subject to the "Classpath" exception as provided
8
* by Oracle in the LICENSE file that accompanied this code.
9
*
10
* This code is distributed in the hope that it will be useful, but WITHOUT
11
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
13
* version 2 for more details (a copy is included in the LICENSE file that
14
* accompanied this code).
15
*
16
* You should have received a copy of the GNU General Public License version
17
* 2 along with this work; if not, write to the Free Software Foundation,
18
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
19
*
20
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
21
* or visit www.oracle.com if you need additional information or have any
22
* questions.
23
*/
24
25
/*
26
* This file is available under and governed by the GNU General Public
27
* License version 2 only, as published by the Free Software Foundation.
28
* However, the following notice accompanied the original version of this
29
* file and, per its terms, should not be removed:
30
*
31
* Copyright (c) 2000 World Wide Web Consortium,
32
* (Massachusetts Institute of Technology, Institut National de
33
* Recherche en Informatique et en Automatique, Keio University). All
34
* Rights Reserved. This program is distributed under the W3C's Software
35
* Intellectual Property License. This program is distributed in the
36
* hope that it will be useful, but WITHOUT ANY WARRANTY; without even
37
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
38
* PURPOSE.
39
* See W3C License http://www.w3.org/Consortium/Legal/ for more details.
40
*/
41
42
package org.w3c.dom.ranges;
43
44
import org.w3c.dom.Node;
45
import org.w3c.dom.DOMException;
46
import org.w3c.dom.DocumentFragment;
47
48
/**
49
* <p>See also the <a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Traversal-Range-20001113'>Document Object Model (DOM) Level 2 Traversal and Range Specification</a>.
50
* @since DOM Level 2
51
*/
52
public interface Range {
53
/**
54
* Node within which the Range begins
55
* @exception DOMException
56
* INVALID_STATE_ERR: Raised if <code>detach()</code> has already been
57
* invoked on this object.
58
*/
59
public Node getStartContainer()
60
throws DOMException;
61
62
/**
63
* Offset within the starting node of the Range.
64
* @exception DOMException
65
* INVALID_STATE_ERR: Raised if <code>detach()</code> has already been
66
* invoked on this object.
67
*/
68
public int getStartOffset()
69
throws DOMException;
70
71
/**
72
* Node within which the Range ends
73
* @exception DOMException
74
* INVALID_STATE_ERR: Raised if <code>detach()</code> has already been
75
* invoked on this object.
76
*/
77
public Node getEndContainer()
78
throws DOMException;
79
80
/**
81
* Offset within the ending node of the Range.
82
* @exception DOMException
83
* INVALID_STATE_ERR: Raised if <code>detach()</code> has already been
84
* invoked on this object.
85
*/
86
public int getEndOffset()
87
throws DOMException;
88
89
/**
90
* TRUE if the Range is collapsed
91
* @exception DOMException
92
* INVALID_STATE_ERR: Raised if <code>detach()</code> has already been
93
* invoked on this object.
94
*/
95
public boolean getCollapsed()
96
throws DOMException;
97
98
/**
99
* The deepest common ancestor container of the Range's two
100
* boundary-points.
101
* @exception DOMException
102
* INVALID_STATE_ERR: Raised if <code>detach()</code> has already been
103
* invoked on this object.
104
*/
105
public Node getCommonAncestorContainer()
106
throws DOMException;
107
108
/**
109
* Sets the attributes describing the start of the Range.
110
* @param refNode The <code>refNode</code> value. This parameter must be
111
* different from <code>null</code>.
112
* @param offset The <code>startOffset</code> value.
113
* @exception RangeException
114
* INVALID_NODE_TYPE_ERR: Raised if <code>refNode</code> or an ancestor
115
* of <code>refNode</code> is an Entity, Notation, or DocumentType
116
* node.
117
* @exception DOMException
118
* INDEX_SIZE_ERR: Raised if <code>offset</code> is negative or greater
119
* than the number of child units in <code>refNode</code>. Child units
120
* are 16-bit units if <code>refNode</code> is a type of CharacterData
121
* node (e.g., a Text or Comment node) or a ProcessingInstruction
122
* node. Child units are Nodes in all other cases.
123
* <br>INVALID_STATE_ERR: Raised if <code>detach()</code> has already
124
* been invoked on this object.
125
* <br>WRONG_DOCUMENT_ERR: Raised if <code>refNode</code> was created
126
* from a different document than the one that created this range.
127
*/
128
public void setStart(Node refNode,
129
int offset)
130
throws RangeException, DOMException;
131
132
/**
133
* Sets the attributes describing the end of a Range.
134
* @param refNode The <code>refNode</code> value. This parameter must be
135
* different from <code>null</code>.
136
* @param offset The <code>endOffset</code> value.
137
* @exception RangeException
138
* INVALID_NODE_TYPE_ERR: Raised if <code>refNode</code> or an ancestor
139
* of <code>refNode</code> is an Entity, Notation, or DocumentType
140
* node.
141
* @exception DOMException
142
* INDEX_SIZE_ERR: Raised if <code>offset</code> is negative or greater
143
* than the number of child units in <code>refNode</code>. Child units
144
* are 16-bit units if <code>refNode</code> is a type of CharacterData
145
* node (e.g., a Text or Comment node) or a ProcessingInstruction
146
* node. Child units are Nodes in all other cases.
147
* <br>INVALID_STATE_ERR: Raised if <code>detach()</code> has already
148
* been invoked on this object.
149
* <br>WRONG_DOCUMENT_ERR: Raised if <code>refNode</code> was created
150
* from a different document than the one that created this range.
151
*/
152
public void setEnd(Node refNode,
153
int offset)
154
throws RangeException, DOMException;
155
156
/**
157
* Sets the start position to be before a node
158
* @param refNode Range starts before <code>refNode</code>
159
* @exception RangeException
160
* INVALID_NODE_TYPE_ERR: Raised if the root container of
161
* <code>refNode</code> is not an Attr, Document, or DocumentFragment
162
* node or if <code>refNode</code> is a Document, DocumentFragment,
163
* Attr, Entity, or Notation node.
164
* @exception DOMException
165
* INVALID_STATE_ERR: Raised if <code>detach()</code> has already been
166
* invoked on this object.
167
* <br>WRONG_DOCUMENT_ERR: Raised if <code>refNode</code> was created
168
* from a different document than the one that created this range.
169
*/
170
public void setStartBefore(Node refNode)
171
throws RangeException, DOMException;
172
173
/**
174
* Sets the start position to be after a node
175
* @param refNode Range starts after <code>refNode</code>
176
* @exception RangeException
177
* INVALID_NODE_TYPE_ERR: Raised if the root container of
178
* <code>refNode</code> is not an Attr, Document, or DocumentFragment
179
* node or if <code>refNode</code> is a Document, DocumentFragment,
180
* Attr, Entity, or Notation node.
181
* @exception DOMException
182
* INVALID_STATE_ERR: Raised if <code>detach()</code> has already been
183
* invoked on this object.
184
* <br>WRONG_DOCUMENT_ERR: Raised if <code>refNode</code> was created
185
* from a different document than the one that created this range.
186
*/
187
public void setStartAfter(Node refNode)
188
throws RangeException, DOMException;
189
190
/**
191
* Sets the end position to be before a node.
192
* @param refNode Range ends before <code>refNode</code>
193
* @exception RangeException
194
* INVALID_NODE_TYPE_ERR: Raised if the root container of
195
* <code>refNode</code> is not an Attr, Document, or DocumentFragment
196
* node or if <code>refNode</code> is a Document, DocumentFragment,
197
* Attr, Entity, or Notation node.
198
* @exception DOMException
199
* INVALID_STATE_ERR: Raised if <code>detach()</code> has already been
200
* invoked on this object.
201
* <br>WRONG_DOCUMENT_ERR: Raised if <code>refNode</code> was created
202
* from a different document than the one that created this range.
203
*/
204
public void setEndBefore(Node refNode)
205
throws RangeException, DOMException;
206
207
/**
208
* Sets the end of a Range to be after a node
209
* @param refNode Range ends after <code>refNode</code>.
210
* @exception RangeException
211
* INVALID_NODE_TYPE_ERR: Raised if the root container of
212
* <code>refNode</code> is not an Attr, Document or DocumentFragment
213
* node or if <code>refNode</code> is a Document, DocumentFragment,
214
* Attr, Entity, or Notation node.
215
* @exception DOMException
216
* INVALID_STATE_ERR: Raised if <code>detach()</code> has already been
217
* invoked on this object.
218
* <br>WRONG_DOCUMENT_ERR: Raised if <code>refNode</code> was created
219
* from a different document than the one that created this range.
220
*/
221
public void setEndAfter(Node refNode)
222
throws RangeException, DOMException;
223
224
/**
225
* Collapse a Range onto one of its boundary-points
226
* @param toStart If TRUE, collapses the Range onto its start; if FALSE,
227
* collapses it onto its end.
228
* @exception DOMException
229
* INVALID_STATE_ERR: Raised if <code>detach()</code> has already been
230
* invoked on this object.
231
*/
232
public void collapse(boolean toStart)
233
throws DOMException;
234
235
/**
236
* Select a node and its contents
237
* @param refNode The node to select.
238
* @exception RangeException
239
* INVALID_NODE_TYPE_ERR: Raised if an ancestor of <code>refNode</code>
240
* is an Entity, Notation or DocumentType node or if
241
* <code>refNode</code> is a Document, DocumentFragment, Attr, Entity,
242
* or Notation node.
243
* @exception DOMException
244
* INVALID_STATE_ERR: Raised if <code>detach()</code> has already been
245
* invoked on this object.
246
* <br>WRONG_DOCUMENT_ERR: Raised if <code>refNode</code> was created
247
* from a different document than the one that created this range.
248
*/
249
public void selectNode(Node refNode)
250
throws RangeException, DOMException;
251
252
/**
253
* Select the contents within a node
254
* @param refNode Node to select from
255
* @exception RangeException
256
* INVALID_NODE_TYPE_ERR: Raised if <code>refNode</code> or an ancestor
257
* of <code>refNode</code> is an Entity, Notation or DocumentType node.
258
* @exception DOMException
259
* INVALID_STATE_ERR: Raised if <code>detach()</code> has already been
260
* invoked on this object.
261
* <br>WRONG_DOCUMENT_ERR: Raised if <code>refNode</code> was created
262
* from a different document than the one that created this range.
263
*/
264
public void selectNodeContents(Node refNode)
265
throws RangeException, DOMException;
266
267
// CompareHow
268
/**
269
* Compare start boundary-point of <code>sourceRange</code> to start
270
* boundary-point of Range on which <code>compareBoundaryPoints</code>
271
* is invoked.
272
*/
273
public static final short START_TO_START = 0;
274
/**
275
* Compare start boundary-point of <code>sourceRange</code> to end
276
* boundary-point of Range on which <code>compareBoundaryPoints</code>
277
* is invoked.
278
*/
279
public static final short START_TO_END = 1;
280
/**
281
* Compare end boundary-point of <code>sourceRange</code> to end
282
* boundary-point of Range on which <code>compareBoundaryPoints</code>
283
* is invoked.
284
*/
285
public static final short END_TO_END = 2;
286
/**
287
* Compare end boundary-point of <code>sourceRange</code> to start
288
* boundary-point of Range on which <code>compareBoundaryPoints</code>
289
* is invoked.
290
*/
291
public static final short END_TO_START = 3;
292
293
/**
294
* Compare the boundary-points of two Ranges in a document.
295
* @param how A code representing the type of comparison, as defined
296
* above.
297
* @param sourceRange The <code>Range</code> on which this current
298
* <code>Range</code> is compared to.
299
* @return -1, 0 or 1 depending on whether the corresponding
300
* boundary-point of the Range is respectively before, equal to, or
301
* after the corresponding boundary-point of <code>sourceRange</code>.
302
* @exception DOMException
303
* WRONG_DOCUMENT_ERR: Raised if the two Ranges are not in the same
304
* Document or DocumentFragment.
305
* <br>INVALID_STATE_ERR: Raised if <code>detach()</code> has already
306
* been invoked on this object.
307
*/
308
public short compareBoundaryPoints(short how,
309
Range sourceRange)
310
throws DOMException;
311
312
/**
313
* Removes the contents of a Range from the containing document or
314
* document fragment without returning a reference to the removed
315
* content.
316
* @exception DOMException
317
* NO_MODIFICATION_ALLOWED_ERR: Raised if any portion of the content of
318
* the Range is read-only or any of the nodes that contain any of the
319
* content of the Range are read-only.
320
* <br>INVALID_STATE_ERR: Raised if <code>detach()</code> has already
321
* been invoked on this object.
322
*/
323
public void deleteContents()
324
throws DOMException;
325
326
/**
327
* Moves the contents of a Range from the containing document or document
328
* fragment to a new DocumentFragment.
329
* @return A DocumentFragment containing the extracted contents.
330
* @exception DOMException
331
* NO_MODIFICATION_ALLOWED_ERR: Raised if any portion of the content of
332
* the Range is read-only or any of the nodes which contain any of the
333
* content of the Range are read-only.
334
* <br>HIERARCHY_REQUEST_ERR: Raised if a DocumentType node would be
335
* extracted into the new DocumentFragment.
336
* <br>INVALID_STATE_ERR: Raised if <code>detach()</code> has already
337
* been invoked on this object.
338
*/
339
public DocumentFragment extractContents()
340
throws DOMException;
341
342
/**
343
* Duplicates the contents of a Range
344
* @return A DocumentFragment that contains content equivalent to this
345
* Range.
346
* @exception DOMException
347
* HIERARCHY_REQUEST_ERR: Raised if a DocumentType node would be
348
* extracted into the new DocumentFragment.
349
* <br>INVALID_STATE_ERR: Raised if <code>detach()</code> has already
350
* been invoked on this object.
351
*/
352
public DocumentFragment cloneContents()
353
throws DOMException;
354
355
/**
356
* Inserts a node into the Document or DocumentFragment at the start of
357
* the Range. If the container is a Text node, this will be split at the
358
* start of the Range (as if the Text node's splitText method was
359
* performed at the insertion point) and the insertion will occur
360
* between the two resulting Text nodes. Adjacent Text nodes will not be
361
* automatically merged. If the node to be inserted is a
362
* DocumentFragment node, the children will be inserted rather than the
363
* DocumentFragment node itself.
364
* @param newNode The node to insert at the start of the Range
365
* @exception DOMException
366
* NO_MODIFICATION_ALLOWED_ERR: Raised if an ancestor container of the
367
* start of the Range is read-only.
368
* <br>WRONG_DOCUMENT_ERR: Raised if <code>newNode</code> and the
369
* container of the start of the Range were not created from the same
370
* document.
371
* <br>HIERARCHY_REQUEST_ERR: Raised if the container of the start of
372
* the Range is of a type that does not allow children of the type of
373
* <code>newNode</code> or if <code>newNode</code> is an ancestor of
374
* the container.
375
* <br>INVALID_STATE_ERR: Raised if <code>detach()</code> has already
376
* been invoked on this object.
377
* @exception RangeException
378
* INVALID_NODE_TYPE_ERR: Raised if <code>newNode</code> is an Attr,
379
* Entity, Notation, or Document node.
380
*/
381
public void insertNode(Node newNode)
382
throws DOMException, RangeException;
383
384
/**
385
* Reparents the contents of the Range to the given node and inserts the
386
* node at the position of the start of the Range.
387
* @param newParent The node to surround the contents with.
388
* @exception DOMException
389
* NO_MODIFICATION_ALLOWED_ERR: Raised if an ancestor container of
390
* either boundary-point of the Range is read-only.
391
* <br>WRONG_DOCUMENT_ERR: Raised if <code> newParent</code> and the
392
* container of the start of the Range were not created from the same
393
* document.
394
* <br>HIERARCHY_REQUEST_ERR: Raised if the container of the start of
395
* the Range is of a type that does not allow children of the type of
396
* <code>newParent</code> or if <code>newParent</code> is an ancestor
397
* of the container or if <code>node</code> would end up with a child
398
* node of a type not allowed by the type of <code>node</code>.
399
* <br>INVALID_STATE_ERR: Raised if <code>detach()</code> has already
400
* been invoked on this object.
401
* @exception RangeException
402
* BAD_BOUNDARYPOINTS_ERR: Raised if the Range partially selects a
403
* non-text node.
404
* <br>INVALID_NODE_TYPE_ERR: Raised if <code> node</code> is an Attr,
405
* Entity, DocumentType, Notation, Document, or DocumentFragment node.
406
*/
407
public void surroundContents(Node newParent)
408
throws DOMException, RangeException;
409
410
/**
411
* Produces a new Range whose boundary-points are equal to the
412
* boundary-points of the Range.
413
* @return The duplicated Range.
414
* @exception DOMException
415
* INVALID_STATE_ERR: Raised if <code>detach()</code> has already been
416
* invoked on this object.
417
*/
418
public Range cloneRange()
419
throws DOMException;
420
421
/**
422
* Returns the contents of a Range as a string. This string contains only
423
* the data characters, not any markup.
424
* @return The contents of the Range.
425
* @exception DOMException
426
* INVALID_STATE_ERR: Raised if <code>detach()</code> has already been
427
* invoked on this object.
428
*/
429
public String toString()
430
throws DOMException;
431
432
/**
433
* Called to indicate that the Range is no longer in use and that the
434
* implementation may relinquish any resources associated with this
435
* Range. Subsequent calls to any methods or attribute getters on this
436
* Range will result in a <code>DOMException</code> being thrown with an
437
* error code of <code>INVALID_STATE_ERR</code>.
438
* @exception DOMException
439
* INVALID_STATE_ERR: Raised if <code>detach()</code> has already been
440
* invoked on this object.
441
*/
442
public void detach()
443
throws DOMException;
444
445
}
446
447