mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-17 10:19:55 +09:00
git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3039 201d5d3c-b55e-5fd7-737f-ddc643e51545
163 lines
No EOL
37 KiB
HTML
163 lines
No EOL
37 KiB
HTML
<html><head><style>
|
|
.KEYW {color: #933;}
|
|
.COMM {color: #bbb; font-style: italic;}
|
|
.NUMB {color: #393;}
|
|
.STRN {color: #393;}
|
|
.REGX {color: #339;}
|
|
.linenumber {border-right: 1px dotted #666; color: #666; font-style: normal;}
|
|
</style></head><body><pre><span class='linenumber'> 1</span> <span class="COMM">/**
|
|
<span class='linenumber'> 2</span> * @fileOverview xq.EditHistory manages editing history and performs UNDO/REDO.
|
|
<span class='linenumber'> 3</span> */</span><span class="WHIT">
|
|
<span class='linenumber'> 4</span> </span><span class="NAME">xq.EditHistory</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Class.create</span><span class="PUNC">(</span><span class="PUNC">{</span><span class="WHIT">
|
|
<span class='linenumber'> 5</span> </span><span class="COMM">/**
|
|
<span class='linenumber'> 6</span> * Initializer
|
|
<span class='linenumber'> 7</span> *
|
|
<span class='linenumber'> 8</span> * @constructor
|
|
<span class='linenumber'> 9</span> * @param {xq.RichDom} rdom RichDom instance
|
|
<span class='linenumber'> 10</span> * @param {Number} [max] maximum UNDO buffer size(default value is 100).
|
|
<span class='linenumber'> 11</span> */</span><span class="WHIT">
|
|
<span class='linenumber'> 12</span> </span><span class="NAME">initialize</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">rdom</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">max</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
|
|
<span class='linenumber'> 13</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">rdom</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="STRN">"IllegalArgumentException"</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'> 14</span>
|
|
<span class='linenumber'> 15</span> </span><span class="NAME">this.disabled</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'> 16</span> </span><span class="NAME">this.max</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">max</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NUMB">100</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'> 17</span> </span><span class="NAME">this.rdom</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">rdom</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'> 18</span> </span><span class="NAME">this.root</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">rdom.getRoot</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'> 19</span> </span><span class="NAME">this.clear</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'> 20</span>
|
|
<span class='linenumber'> 21</span> </span><span class="NAME">this.lastModified</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Date.get</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'> 22</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
|
|
<span class='linenumber'> 23</span> </span><span class="NAME">getLastModifiedDate</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
|
|
<span class='linenumber'> 24</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.lastModified</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'> 25</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
|
|
<span class='linenumber'> 26</span> </span><span class="NAME">isUndoable</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
|
|
<span class='linenumber'> 27</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.queue.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">this.index</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'> 28</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
|
|
<span class='linenumber'> 29</span> </span><span class="NAME">isRedoable</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
|
|
<span class='linenumber'> 30</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.queue.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">this.index</span><span class="WHIT"> </span><span class="PUNC"><</span><span class="WHIT"> </span><span class="NAME">this.queue.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'> 31</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
|
|
<span class='linenumber'> 32</span> </span><span class="NAME">disable</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
|
|
<span class='linenumber'> 33</span> </span><span class="NAME">this.disabled</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'> 34</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
|
|
<span class='linenumber'> 35</span> </span><span class="NAME">enable</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
|
|
<span class='linenumber'> 36</span> </span><span class="NAME">this.disabled</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'> 37</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
|
|
<span class='linenumber'> 38</span> </span><span class="NAME">undo</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
|
|
<span class='linenumber'> 39</span> </span><span class="NAME">this.pushContent</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'> 40</span>
|
|
<span class='linenumber'> 41</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.isUndoable</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
|
|
<span class='linenumber'> 42</span> </span><span class="NAME">this.index</span><span class="PUNC">--</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'> 43</span> </span><span class="NAME">this.popContent</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'> 44</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'> 45</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
|
|
<span class='linenumber'> 46</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'> 47</span> </span><span class="PUNC">}</span><span class="WHIT">
|
|
<span class='linenumber'> 48</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
|
|
<span class='linenumber'> 49</span> </span><span class="NAME">redo</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
|
|
<span class='linenumber'> 50</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.isRedoable</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
|
|
<span class='linenumber'> 51</span> </span><span class="NAME">this.index</span><span class="PUNC">++</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'> 52</span> </span><span class="NAME">this.popContent</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'> 53</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'> 54</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
|
|
<span class='linenumber'> 55</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'> 56</span> </span><span class="PUNC">}</span><span class="WHIT">
|
|
<span class='linenumber'> 57</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
|
|
<span class='linenumber'> 58</span> </span><span class="NAME">onCommand</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
|
|
<span class='linenumber'> 59</span> </span><span class="NAME">this.lastModified</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Date.get</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'> 60</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.disabled</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'> 61</span>
|
|
<span class='linenumber'> 62</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.pushContent</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'> 63</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
|
|
<span class='linenumber'> 64</span> </span><span class="NAME">onEvent</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">event</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
|
|
<span class='linenumber'> 65</span> </span><span class="NAME">this.lastModified</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Date.get</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'> 66</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.disabled</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'> 67</span>
|
|
<span class='linenumber'> 68</span> </span><span class="COMM">// ignore normal keys</span><span class="WHIT">
|
|
<span class='linenumber'> 69</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="STRN">'keydown'</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">event.type</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="PUNC">(</span><span class="NAME">event.ctrlKey</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">event.metaKey</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'> 70</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">[</span><span class="STRN">'keydown'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'keyup'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'keypress'</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">include</span><span class="PUNC">(</span><span class="NAME">event.type</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">event.ctrlKey</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">event.altKey</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">event.metaKey</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="PUNC">[</span><span class="NUMB">33</span><span class="PUNC">,</span><span class="NUMB">34</span><span class="PUNC">,</span><span class="NUMB">35</span><span class="PUNC">,</span><span class="NUMB">36</span><span class="PUNC">,</span><span class="NUMB">37</span><span class="PUNC">,</span><span class="NUMB">38</span><span class="PUNC">,</span><span class="NUMB">39</span><span class="PUNC">,</span><span class="NUMB">40</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">include</span><span class="PUNC">(</span><span class="NAME">event.keyCode</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'> 71</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">[</span><span class="STRN">'keydown'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'keyup'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'keypress'</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">include</span><span class="PUNC">(</span><span class="NAME">event.type</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">event.ctrlKey</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">event.metaKey</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">89</span><span class="PUNC">,</span><span class="NUMB">90</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">include</span><span class="PUNC">(</span><span class="NAME">event.keyCode</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'> 72</span>
|
|
<span class='linenumber'> 73</span> </span><span class="COMM">// ignore ctrl/shift/alt/meta keys</span><span class="WHIT">
|
|
<span class='linenumber'> 74</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">[</span><span class="NUMB">16</span><span class="PUNC">,</span><span class="NUMB">17</span><span class="PUNC">,</span><span class="NUMB">18</span><span class="PUNC">,</span><span class="NUMB">224</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">include</span><span class="PUNC">(</span><span class="NAME">event.keyCode</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'> 75</span>
|
|
<span class='linenumber'> 76</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.pushContent</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'> 77</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
|
|
<span class='linenumber'> 78</span> </span><span class="NAME">popContent</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
|
|
<span class='linenumber'> 79</span> </span><span class="NAME">this.lastModified</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Date.get</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'> 80</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">entry</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.queue</span><span class="PUNC">[</span><span class="NAME">this.index</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'> 81</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">entry.caret</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
|
|
<span class='linenumber'> 82</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">html</span><span class="PUNC">=</span><span class="NAME">entry.html.substring</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">entry.caret</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'<span id="caret_marker_00700"></span>'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">entry.html.substring</span><span class="PUNC">(</span><span class="NAME">entry.caret</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'> 83</span> </span><span class="NAME">this.root.innerHTML</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">html</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'> 84</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
|
|
<span class='linenumber'> 85</span> </span><span class="NAME">this.root.innerHTML</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">entry.html</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'> 86</span> </span><span class="PUNC">}</span><span class="WHIT">
|
|
<span class='linenumber'> 87</span> </span><span class="NAME">this.restoreCaret</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'> 88</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
|
|
<span class='linenumber'> 89</span> </span><span class="NAME">pushContent</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">ignoreCaret</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
|
|
<span class='linenumber'> 90</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">xq.Browser.isTrident</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">ignoreCaret</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">this.rdom.hasFocus</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'> 91</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.rdom.getCurrentElement</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'> 92</span>
|
|
<span class='linenumber'> 93</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">html</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.root.innerHTML</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'> 94</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">html</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.queue</span><span class="PUNC">[</span><span class="NAME">this.index</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">this.queue</span><span class="PUNC">[</span><span class="NAME">this.index</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">html</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'> 95</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">caret</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ignoreCaret</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">this.saveCaret</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'> 96</span>
|
|
<span class='linenumber'> 97</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.queue.length</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NAME">this.max</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
|
|
<span class='linenumber'> 98</span> </span><span class="NAME">this.queue.shift</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'> 99</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
|
|
<span class='linenumber'>100</span> </span><span class="NAME">this.index</span><span class="PUNC">++</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'>101</span> </span><span class="PUNC">}</span><span class="WHIT">
|
|
<span class='linenumber'>102</span>
|
|
<span class='linenumber'>103</span> </span><span class="NAME">this.queue.splice</span><span class="PUNC">(</span><span class="NAME">this.index</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.queue.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">this.index</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="NAME">html</span><span class="PUNC">:</span><span class="NAME">html</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">caret</span><span class="PUNC">:</span><span class="NAME">caret</span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'>104</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'>105</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
|
|
<span class='linenumber'>106</span> </span><span class="NAME">clear</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
|
|
<span class='linenumber'>107</span> </span><span class="NAME">this.index</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'>108</span> </span><span class="NAME">this.queue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'>109</span> </span><span class="NAME">this.pushContent</span><span class="PUNC">(</span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'>110</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
|
|
<span class='linenumber'>111</span> </span><span class="NAME">saveCaret</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
|
|
<span class='linenumber'>112</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.rdom.hasSelection</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'>113</span>
|
|
<span class='linenumber'>114</span> </span><span class="COMM">// FF on Mac has a caret problem with these lines. --2007/11/19</span><span class="WHIT">
|
|
<span class='linenumber'>115</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">marker</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.pushMarker</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'>116</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">xq.Browser.isTrident</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="STRN">'<SPAN class='</span><span class="PUNC">+</span><span class="NAME">marker.className</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'<span class="'</span><span class="PUNC">+</span><span class="NAME">marker.className</span><span class="PUNC">+</span><span class="STRN">'"'</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'>117</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">caret</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.getRoot</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">innerHTML.indexOf</span><span class="PUNC">(</span><span class="NAME">str</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'>118</span> </span><span class="NAME">this.rdom.popMarker</span><span class="PUNC">(</span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'>119</span>
|
|
<span class='linenumber'>120</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">caret</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'>121</span>
|
|
<span class='linenumber'>122</span> </span><span class="COMM">/*
|
|
<span class='linenumber'>123</span> // This is old code. It also has same problem.
|
|
<span class='linenumber'>124</span>
|
|
<span class='linenumber'>125</span> if(this.rdom.hasSelection()) return null;
|
|
<span class='linenumber'>126</span>
|
|
<span class='linenumber'>127</span> var bookmark = this.rdom.saveSelection();
|
|
<span class='linenumber'>128</span> var marker = this.rdom.pushMarker();
|
|
<span class='linenumber'>129</span>
|
|
<span class='linenumber'>130</span> var str = xq.Browser.isTrident ? '<SPAN class='+marker.className : '<span class="'+marker.className+'"';
|
|
<span class='linenumber'>131</span> var caret = this.rdom.getRoot().innerHTML.indexOf(str);
|
|
<span class='linenumber'>132</span>
|
|
<span class='linenumber'>133</span> this.rdom.popMarker();
|
|
<span class='linenumber'>134</span> this.rdom.restoreSelection(bookmark);
|
|
<span class='linenumber'>135</span>
|
|
<span class='linenumber'>136</span> return caret;
|
|
<span class='linenumber'>137</span> */</span><span class="WHIT">
|
|
<span class='linenumber'>138</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
|
|
<span class='linenumber'>139</span> </span><span class="NAME">restoreCaret</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
|
|
<span class='linenumber'>140</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">marker</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.$</span><span class="PUNC">(</span><span class="STRN">'caret_marker_00700'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'>141</span>
|
|
<span class='linenumber'>142</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">marker</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
|
|
<span class='linenumber'>143</span> </span><span class="NAME">this.rdom.selectElement</span><span class="PUNC">(</span><span class="NAME">marker</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'>144</span> </span><span class="NAME">this.rdom.collapseSelection</span><span class="PUNC">(</span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'>145</span> </span><span class="NAME">this.rdom.deleteNode</span><span class="PUNC">(</span><span class="NAME">marker</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'>146</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
|
|
<span class='linenumber'>147</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">node</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.tree.findForward</span><span class="PUNC">(</span><span class="NAME">this.rdom.getRoot</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
|
|
<span class='linenumber'>148</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.isBlock</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">this.hasBlocks</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'>149</span> </span><span class="PUNC">}</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="NAME">this.rdom.tree</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'>150</span> </span><span class="NAME">this.rdom.selectElement</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'>151</span> </span><span class="NAME">this.rdom.collapseSelection</span><span class="PUNC">(</span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'>152</span>
|
|
<span class='linenumber'>153</span> </span><span class="PUNC">}</span><span class="WHIT">
|
|
<span class='linenumber'>154</span> </span><span class="PUNC">}</span><span class="WHIT">
|
|
<span class='linenumber'>155</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
|
|
<span class='linenumber'>156</span> </span></pre></body></html> |