more styling
[roojs1] / docs / src / Roo_lib_Selection.js.html
1 <html><head><title>Roo/lib/Selection.js</title><link rel="stylesheet" type="text/css" href="../../css/highlight-js.css"/></head><body class="highlightpage"><code class="jsdoc-pretty"><span class="jsdoc-comment">/**
2  * @class Roo.lib.Selection
3  * @constructor
4  * This is a toolkit, normally used to copy features into a Dom Selection element
5  * Roo.lib.Selection.wrap(x);
6  *
7  *
8  *
9  */
10 </span><span class="jsdoc-var">Roo.lib.Selection </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">() { };
11
12 </span><span class="jsdoc-comment">/**
13  * Wrap a Dom Range object, to give it new features...
14  * @static
15  * @param {Range} the range to wrap
16  */
17 </span><span class="jsdoc-var">Roo.lib.Selection.wrap </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">r</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">doc</span><span class="jsdoc-syntax">) {
18     </span><span class="jsdoc-var">Roo.apply</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">r</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">Roo.lib.Selection.prototype</span><span class="jsdoc-syntax">);
19     </span><span class="jsdoc-var">r.ownerDocument </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">doc</span><span class="jsdoc-syntax">; </span><span class="jsdoc-comment">// usefull so we dont have to keep referening to it.
20     </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">r</span><span class="jsdoc-syntax">;
21 };
22 </span><span class="jsdoc-comment">/**
23  * find a parent node eg. LI / OL
24  * @param {string|Array} node name or array of nodenames
25  * @return {DomElement|false}
26  */
27 </span><span class="jsdoc-var">Roo.apply</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.lib.Selection.prototype</span><span class="jsdoc-syntax">,
28 {
29     </span><span class="jsdoc-comment">/**
30      * the owner document
31      */
32     </span><span class="jsdoc-var">ownerDocument </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
33
34     </span><span class="jsdoc-var">getRangeAt </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">)
35     {
36         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">Roo.lib.Range.wrap</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Selection.prototype.getRangeAt.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">,</span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">));
37     },
38
39     </span><span class="jsdoc-comment">/**
40      * insert node at selection 
41      * @param {DomElement|string} node
42      * @param {string} cursor (after|in|none) where to place the cursor after inserting.
43      */
44     </span><span class="jsdoc-var">insertNode</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">cursor</span><span class="jsdoc-syntax">)
45     {
46         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">) == </span><span class="jsdoc-string">'string'</span><span class="jsdoc-syntax">) {
47             </span><span class="jsdoc-var">node </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.ownerDocument.createElement</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">);
48             </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cursor </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'in'</span><span class="jsdoc-syntax">) {
49                 </span><span class="jsdoc-var">node.innerHTML </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">'&amp;nbsp;'</span><span class="jsdoc-syntax">;
50             }
51         }
52
53         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">range </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.getRangeAt</span><span class="jsdoc-syntax">(0);
54
55         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.type </span><span class="jsdoc-syntax">!= </span><span class="jsdoc-string">'Caret'</span><span class="jsdoc-syntax">) {
56             </span><span class="jsdoc-var">range.deleteContents</span><span class="jsdoc-syntax">();
57         }
58         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">sn </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">node.childNodes</span><span class="jsdoc-syntax">[0]; </span><span class="jsdoc-comment">// select the contents.
59
60
61
62         </span><span class="jsdoc-var">range.insertNode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">);
63         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cursor </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'after'</span><span class="jsdoc-syntax">) {
64             </span><span class="jsdoc-var">node.insertAdjacentHTML</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'afterend'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'&amp;nbsp;'</span><span class="jsdoc-syntax">);
65             </span><span class="jsdoc-var">sn </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">node.nextSibling</span><span class="jsdoc-syntax">;
66         }
67
68         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cursor </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'none'</span><span class="jsdoc-syntax">) {
69             </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
70         }
71
72         </span><span class="jsdoc-var">this.cursorText</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">sn</span><span class="jsdoc-syntax">);
73     },
74
75     </span><span class="jsdoc-var">cursorText </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">)
76     {
77
78         </span><span class="jsdoc-comment">//var range = this.getRangeAt(0);
79         </span><span class="jsdoc-var">range </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.lib.Range.wrap</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Range</span><span class="jsdoc-syntax">());
80         </span><span class="jsdoc-comment">//range.selectNode(n);
81
82         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">ix </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Array.from</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n.parentNode.childNodes</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">);
83         </span><span class="jsdoc-var">range.setStart</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n.parentNode</span><span class="jsdoc-syntax">,</span><span class="jsdoc-var">ix</span><span class="jsdoc-syntax">);
84         </span><span class="jsdoc-var">range.setEnd</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n.parentNode</span><span class="jsdoc-syntax">,</span><span class="jsdoc-var">ix</span><span class="jsdoc-syntax">+1);
85         </span><span class="jsdoc-comment">//range.collapse(false);
86
87         </span><span class="jsdoc-var">this.removeAllRanges</span><span class="jsdoc-syntax">();
88         </span><span class="jsdoc-var">this.addRange</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">range</span><span class="jsdoc-syntax">);
89
90         </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">([</span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">range</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">,</span><span class="jsdoc-var">this.baseOffset</span><span class="jsdoc-syntax">,</span><span class="jsdoc-var">this.extentOffset</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.type</span><span class="jsdoc-syntax">]);
91     },
92     </span><span class="jsdoc-var">cursorAfter </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">)
93     {
94         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">n.nextSibling </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">n.nextSibling.nodeValue </span><span class="jsdoc-syntax">!= </span><span class="jsdoc-string">'&amp;nbsp;'</span><span class="jsdoc-syntax">) {
95             </span><span class="jsdoc-var">n.insertAdjacentHTML</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'afterend'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'&amp;nbsp;'</span><span class="jsdoc-syntax">);
96         }
97         </span><span class="jsdoc-var">this.cursorText </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n.nextSibling</span><span class="jsdoc-syntax">);
98     }
99
100
101 });</span></code></body></html>