| 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
| 2 | <html xmlns="http://www.w3.org/1999/xhtml"> |
| 3 | <head> |
| 4 | <title>Plugin: selection</title> |
| 5 | <link rel="stylesheet" type="text/css" href="../../test.css" /> |
| 6 | <script type="text/javascript" src="../../../../ckeditor_source.js"></script> |
| 7 | <script type="text/javascript" src="../../test.js"></script> |
| 8 | <script type="text/javascript"> |
| 9 | //<![CDATA[ |
| 10 | |
| 11 | CKEDITOR.plugins.load( 'selection' ); |
| 12 | |
| 13 | /** |
| 14 | * Helper to determine whether two {@link CKEDITOR.dom.range}'s equality. |
| 15 | */ |
| 16 | function rangesAreSame() |
| 17 | { |
| 18 | var range1 = arguments[ 0 ], range2 = arguments[ 1 ]; |
| 19 | |
| 20 | if ( ! ( range1 && range2 ) ) |
| 21 | return false; |
| 22 | |
| 23 | if ( range1.collapsed && range2.collapsed ) |
| 24 | return ( range1.startContainer.$ == range2.startContainer.$ |
| 25 | && range1.startOffset.$ == range2.startOffset.$ ) |
| 26 | || ( range1.endContainer.$ == range2.endContainer.$ |
| 27 | && range1.endOffset.$ == range2.endOffset.$ ); |
| 28 | |
| 29 | return range1.startContainer.$ == range2.startContainer.$ |
| 30 | && range1.startOffset == range2.startOffset |
| 31 | && range1.endContainer.$ == range2.endContainer.$ |
| 32 | && range1.endOffset == range2.endOffset; |
| 33 | |
| 34 | } |
| 35 | |
| 36 | var testCase; |
| 37 | |
| 38 | CKEDITOR.test |
| 39 | .addTestCase( ( function() |
| 40 | { |
| 41 | // Local references. |
| 42 | var assert = YAHOO.util.Assert, |
| 43 | doc = new CKEDITOR.dom.document( document ); |
| 44 | |
| 45 | return { |
| 46 | |
| 47 | /** |
| 48 | * Test selecting various type of element, get the selected element and firstElement. |
| 49 | */ |
| 50 | test_getSelectedElement2 : function() |
| 51 | { |
| 52 | var i, l = 10; |
| 53 | for ( i = 1 ; i <= l ; i++ ) |
| 54 | { |
| 55 | var element = doc.getById( 'selectedElement' + i ); |
| 56 | if ( element ) |
| 57 | { |
| 58 | var range = new CKEDITOR.dom.range( doc ); |
| 59 | range.setStartBefore( element ); |
| 60 | range.setEndAfter( element ); |
| 61 | var sel = new CKEDITOR.dom.selection( doc ); |
| 62 | sel.selectRanges( [ range ] ); |
| 63 | var selectedElement = sel.getSelectedElement(), |
| 64 | firstElement = sel.getStartElement(); |
| 65 | |
| 66 | assert.areSame( element.$, selectedElement |
| 67 | && selectedElement.$, |
| 68 | 'Selected element ' + |
| 69 | element.getName().toUpperCase() + ' doesn\'t match.' ); |
| 70 | assert.areSame( element.$, firstElement |
| 71 | && firstElement.$, 'Start element ' + |
| 72 | element.getName() + 'doesn\'t match.' ); |
| 73 | } |
| 74 | } |
| 75 | }, |
| 76 | |
| 77 | name :document.title |
| 78 | }; |
| 79 | } )() ); |
| 80 | |
| 81 | //]]> |
| 82 | </script> |
| 83 | </head> |
| 84 | <body> |
| 85 | <span id="selectedNode">text1</span> |
| 86 | <p> |
| 87 | <a id="selectedElement1"></a> |
| 88 | <input id="selectedElement2" /> |
| 89 | <img id="selectedElement3" /> |
| 90 | <hr id="selectedElement4"> |
| 91 | </hr> |
| 92 | <ul> |
| 93 | <li id="selectedElement5"> |
| 94 | </li> |
| 95 | </ul> |
| 96 | <table> |
| 97 | <tr> |
| 98 | <td id="selectedElement6"> |
| 99 | </td> |
| 100 | </tr> |
| 101 | </table> |
| 102 | <embed id="selectedElement7"> |
| 103 | </embed> |
| 104 | <object id="selectedElement8"> |
| 105 | </object> |
| 106 | <ol> |
| 107 | <li id="selectedElement9"> |
| 108 | </li> |
| 109 | </ol> |
| 110 | <form id="selectedElement10"> |
| 111 | </form> |
| 112 | </p> |
| 113 | </body> |
| 114 | </html> |