/
TextSelection.js
128 lines (104 loc) · 2.92 KB
/
TextSelection.js
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
/* ************************************************************************
qooxdoo - the new era of web development
http://qooxdoo.org
Copyright:
2011-2012 1&1 Internet AG, Germany, http://www.1und1.de
License:
LGPL: http://www.gnu.org/licenses/lgpl.html
EPL: http://www.eclipse.org/org/documents/epl-v10.php
See the LICENSE file in the project's top-level directory for details.
Authors:
* Martin Wittemann (wittemann)
* Daniel Wagner (danielwagner)
************************************************************************ */
/**
* Text selection manipulation module
*/
qx.Bootstrap.define("qx.module.TextSelection", {
statics: {
/**
* Get the selection of the first element.
*
* @return {String|null}
*/
getTextSelection : function() {
var el = this[0];
if (el) {
return qx.bom.Selection.get(el);
}
return null;
},
/**
* Get the length of the selection of the first element.
*
*
* @return {Integer|null}
*/
getTextSelectionLength : function() {
var el = this[0];
if (el) {
return qx.bom.Selection.getLength(el);
}
return null;
},
/**
* Get the start of the selection of the first element.
*
* @return {Integer|null}
*/
getTextSelectionStart : function() {
var el = this[0];
if (el) {
return qx.bom.Selection.getStart(el);
}
return null;
},
/**
* Get the end of the selection of the first element.
*
* @return {Integer|null}
*/
getTextSelectionEnd : function() {
var el = this[0];
if (el) {
return qx.bom.Selection.getEnd(el);
}
return null;
},
/**
* Set the selection of each element with the given start and end value.
* If no end value is passed the selection will extend to the end.
*
* @param start {Integer} start of the selection (zero based)
* @param end {Integer} end of the selection
* @return {qxWeb} The collection for chaining.
*/
setTextSelection : function(start, end) {
this._forEachElement(function(el) {
qx.bom.Selection.set(el, start, end);
});
return this;
},
/**
* Clears the selection of all elements.
*
* @return {qxWeb} The collection for chaining.
*/
clearTextSelection : function() {
this._forEachElement(function(el) {
qx.bom.Selection.clear(el, start, end);
});
return this;
}
},
defer : function(statics) {
qxWeb.$attach({
"getTextSelection" : statics.getTextSelection,
"getTextSelectionLength" : statics.getTextSelectionLength,
"getTextSelectionStart" : statics.getTextSelectionStart,
"getTextSelectionEnd" : statics.getTextSelectionEnd,
"setTextSelection" : statics.setTextSelection,
"clearTextSelection" : statics.clearTextSelection
});
}
});