]>
Commit | Line | Data |
---|---|---|
a90939db JF |
1 | /* |
2 | * Copyright (C) 2007 Apple Inc. All rights reserved. | |
3 | * | |
4 | * Redistribution and use in source and binary forms, with or without | |
5 | * modification, are permitted provided that the following conditions | |
6 | * are met: | |
7 | * | |
8 | * 1. Redistributions of source code must retain the above copyright | |
9 | * notice, this list of conditions and the following disclaimer. | |
10 | * 2. Redistributions in binary form must reproduce the above copyright | |
11 | * notice, this list of conditions and the following disclaimer in the | |
12 | * documentation and/or other materials provided with the distribution. | |
13 | * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of | |
14 | * its contributors may be used to endorse or promote products derived | |
15 | * from this software without specific prior written permission. | |
16 | * | |
17 | * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY | |
18 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | |
19 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |
20 | * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY | |
21 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | |
22 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | |
23 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | |
24 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |
25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | |
26 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
27 | */ | |
28 | ||
29 | ||
30 | #ifndef DOMSelection_h | |
31 | #define DOMSelection_h | |
32 | ||
33 | #include <wtf/RefCounted.h> | |
34 | #include <wtf/Forward.h> | |
35 | #include <wtf/PassRefPtr.h> | |
36 | ||
37 | namespace WebCore { | |
38 | ||
39 | class Frame; | |
40 | class Range; | |
41 | class Node; | |
42 | class String; | |
43 | ||
44 | typedef int ExceptionCode; | |
45 | ||
46 | class DOMSelection : public RefCounted<DOMSelection> { | |
47 | public: | |
48 | static PassRefPtr<DOMSelection> create(Frame* frame) { return adoptRef(new DOMSelection(frame)); } | |
49 | ||
50 | Frame* frame() const; | |
51 | void disconnectFrame(); | |
52 | ||
53 | // Safari Selection Object API | |
54 | // These methods return the valid equivalents of internal editing positions. | |
55 | Node* baseNode() const; | |
56 | Node* extentNode() const; | |
57 | int baseOffset() const; | |
58 | int extentOffset() const; | |
59 | String type() const; | |
60 | void setBaseAndExtent(Node* baseNode, int baseOffset, Node* extentNode, int extentOffset, ExceptionCode&); | |
61 | void setPosition(Node*, int offset, ExceptionCode&); | |
62 | void modify(const String& alter, const String& direction, const String& granularity); | |
63 | ||
64 | // Mozilla Selection Object API | |
65 | // In Firefox, anchor/focus are the equal to the start/end of the selection, | |
66 | // but reflect the direction in which the selection was made by the user. That does | |
67 | // not mean that they are base/extent, since the base/extent don't reflect | |
68 | // expansion. | |
69 | // These methods return the valid equivalents of internal editing positions. | |
70 | Node* anchorNode() const; | |
71 | int anchorOffset() const; | |
72 | Node* focusNode() const; | |
73 | int focusOffset() const; | |
74 | bool isCollapsed() const; | |
75 | int rangeCount() const; | |
76 | void collapse(Node*, int offset, ExceptionCode&); | |
77 | void collapseToEnd(); | |
78 | void collapseToStart(); | |
79 | void extend(Node*, int offset, ExceptionCode&); | |
80 | PassRefPtr<Range> getRangeAt(int, ExceptionCode&); | |
81 | void removeAllRanges(); | |
82 | void addRange(Range*); | |
83 | void deleteFromDocument(); | |
84 | bool containsNode(const Node*, bool partlyContained) const; | |
85 | void selectAllChildren(Node*, ExceptionCode&); | |
86 | ||
87 | String toString(); | |
88 | ||
89 | // Microsoft Selection Object API | |
90 | void empty(); | |
91 | //void clear(); | |
92 | //TextRange *createRange(); | |
93 | ||
94 | private: | |
95 | DOMSelection(Frame*); | |
96 | ||
97 | Frame* m_frame; | |
98 | }; | |
99 | ||
100 | } // namespace WebCore | |
101 | ||
102 | #endif // DOMSelection_h |