1/* 2 * Copyright (C) 2011 Google Inc. All rights reserved. 3 * Copyright (C) 2010 Apple Inc. All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions are 7 * met: 8 * 9 * * Redistributions of source code must retain the above copyright 10 * notice, this list of conditions and the following disclaimer. 11 * * Redistributions in binary form must reproduce the above 12 * copyright notice, this list of conditions and the following disclaimer 13 * in the documentation and/or other materials provided with the 14 * distribution. 15 * * Neither the name of Google Inc. nor the names of its 16 * contributors may be used to endorse or promote products derived from 17 * this software without specific prior written permission. 18 * 19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 */ 31 32/** 33 * @interface 34 */ 35WebInspector.TextEditor = function() { }; 36 37WebInspector.TextEditor.Events = { 38 GutterClick: "gutterClick" 39}; 40 41/** @typedef {{lineNumber: number, event: !Event}} */ 42WebInspector.TextEditor.GutterClickEventData; 43 44WebInspector.TextEditor.prototype = { 45 46 undo: function() { }, 47 48 redo: function() { }, 49 50 /** 51 * @return {boolean} 52 */ 53 isClean: function() { }, 54 55 markClean: function() { }, 56 57 /** 58 * @return {string} 59 */ 60 indent: function() { }, 61 62 /** 63 * @param {number} lineNumber 64 * @param {number} column 65 * @return {?{x: number, y: number, height: number}} 66 */ 67 cursorPositionToCoordinates: function(lineNumber, column) { return null; }, 68 69 /** 70 * @param {number} x 71 * @param {number} y 72 * @return {?WebInspector.TextRange} 73 */ 74 coordinatesToCursorPosition: function(x, y) { return null; }, 75 76 /** 77 * @param {number} lineNumber 78 * @param {number} column 79 * @return {?{startColumn: number, endColumn: number, type: string}} 80 */ 81 tokenAtTextPosition: function(lineNumber, column) { return null; }, 82 83 /** 84 * @param {string} mimeType 85 */ 86 setMimeType: function(mimeType) { }, 87 88 /** 89 * @param {boolean} readOnly 90 */ 91 setReadOnly: function(readOnly) { }, 92 93 /** 94 * @return {boolean} 95 */ 96 readOnly: function() { }, 97 98 /** 99 * @return {!Element} 100 */ 101 defaultFocusedElement: function() { }, 102 103 /** 104 * @param {!WebInspector.TextRange} range 105 * @param {string} cssClass 106 * @return {!Object} 107 */ 108 highlightRange: function(range, cssClass) { }, 109 110 /** 111 * @param {!Object} highlightDescriptor 112 */ 113 removeHighlight: function(highlightDescriptor) { }, 114 115 /** 116 * @param {number} lineNumber 117 * @param {boolean} disabled 118 * @param {boolean} conditional 119 */ 120 addBreakpoint: function(lineNumber, disabled, conditional) { }, 121 122 /** 123 * @param {number} lineNumber 124 */ 125 removeBreakpoint: function(lineNumber) { }, 126 127 /** 128 * @param {number} lineNumber 129 */ 130 setExecutionLine: function(lineNumber) { }, 131 132 clearExecutionLine: function() { }, 133 134 /** 135 * @param {number} lineNumber 136 * @param {!Element} element 137 */ 138 addDecoration: function(lineNumber, element) { }, 139 140 /** 141 * @param {number} lineNumber 142 * @param {!Element} element 143 */ 144 removeDecoration: function(lineNumber, element) { }, 145 146 /** 147 * @param {!RegExp} regex 148 * @param {?WebInspector.TextRange} range 149 */ 150 highlightSearchResults: function(regex, range) { }, 151 152 /** 153 * @param {number} lineNumber 154 * @param {number=} columnNumber 155 * @param {boolean=} shouldHighlight 156 */ 157 revealPosition: function(lineNumber, columnNumber, shouldHighlight) { }, 158 159 clearPositionHighlight: function() { }, 160 161 /** 162 * @return {!Array.<!Element>} 163 */ 164 elementsToRestoreScrollPositionsFor: function() { }, 165 166 /** 167 * @param {!WebInspector.TextEditor} textEditor 168 */ 169 inheritScrollPositions: function(textEditor) { }, 170 171 beginUpdates: function() { }, 172 173 endUpdates: function() { }, 174 175 onResize: function() { }, 176 177 /** 178 * @param {!WebInspector.TextRange} range 179 * @param {string} text 180 * @return {!WebInspector.TextRange} 181 */ 182 editRange: function(range, text) { }, 183 184 /** 185 * @param {number} lineNumber 186 */ 187 scrollToLine: function(lineNumber) { }, 188 189 /** 190 * @return {number} 191 */ 192 firstVisibleLine: function() { }, 193 194 /** 195 * @return {number} 196 */ 197 lastVisibleLine: function() { }, 198 199 /** 200 * @return {!WebInspector.TextRange} 201 */ 202 selection: function() { }, 203 204 /** 205 * @return {!Array.<!WebInspector.TextRange>} 206 */ 207 selections: function() { }, 208 209 /** 210 * @return {?WebInspector.TextRange} 211 */ 212 lastSelection: function() { }, 213 214 /** 215 * @param {!WebInspector.TextRange} textRange 216 */ 217 setSelection: function(textRange) { }, 218 219 /** 220 * @param {!WebInspector.TextRange} range 221 * @return {string} 222 */ 223 copyRange: function(range) { }, 224 225 /** 226 * @param {string} text 227 */ 228 setText: function(text) { }, 229 230 /** 231 * @return {string} 232 */ 233 text: function() { }, 234 235 /** 236 * @return {!WebInspector.TextRange} 237 */ 238 range: function() { }, 239 240 /** 241 * @param {number} lineNumber 242 * @return {string} 243 */ 244 line: function(lineNumber) { }, 245 246 /** 247 * @return {number} 248 */ 249 get linesCount() { }, 250 251 /** 252 * @param {number} line 253 * @param {string} name 254 * @param {?Object} value 255 */ 256 setAttribute: function(line, name, value) { }, 257 258 /** 259 * @param {number} line 260 * @param {string} name 261 * @return {?Object} value 262 */ 263 getAttribute: function(line, name) { }, 264 265 /** 266 * @param {number} line 267 * @param {string} name 268 */ 269 removeAttribute: function(line, name) { }, 270 271 wasShown: function() { }, 272 273 willHide: function() { }, 274 275 /** 276 * @param {?WebInspector.CompletionDictionary} dictionary 277 */ 278 setCompletionDictionary: function(dictionary) { }, 279 280 /** 281 * @param {number} lineNumber 282 * @param {number} columnNumber 283 * @return {?WebInspector.TextEditorPositionHandle} 284 */ 285 textEditorPositionHandle: function(lineNumber, columnNumber) { }, 286 287 dispose: function() { } 288} 289 290/** 291 * @interface 292 */ 293WebInspector.TextEditorPositionHandle = function() 294{ 295} 296 297WebInspector.TextEditorPositionHandle.prototype = { 298 /** 299 * @return {?{lineNumber: number, columnNumber: number}} 300 */ 301 resolve: function() { }, 302 303 /** 304 * @param {!WebInspector.TextEditorPositionHandle} positionHandle 305 * @return {boolean} 306 */ 307 equal: function(positionHandle) { } 308} 309 310/** 311 * @interface 312 */ 313WebInspector.TextEditorDelegate = function() 314{ 315} 316 317WebInspector.TextEditorDelegate.prototype = { 318 /** 319 * @param {!WebInspector.TextRange} oldRange 320 * @param {!WebInspector.TextRange} newRange 321 */ 322 onTextChanged: function(oldRange, newRange) { }, 323 324 /** 325 * @param {!WebInspector.TextRange} textRange 326 */ 327 selectionChanged: function(textRange) { }, 328 329 /** 330 * @param {number} lineNumber 331 */ 332 scrollChanged: function(lineNumber) { }, 333 334 editorFocused: function() { }, 335 336 /** 337 * @param {!WebInspector.ContextMenu} contextMenu 338 * @param {number} lineNumber 339 */ 340 populateLineGutterContextMenu: function(contextMenu, lineNumber) { }, 341 342 /** 343 * @param {!WebInspector.ContextMenu} contextMenu 344 * @param {number} lineNumber 345 */ 346 populateTextAreaContextMenu: function(contextMenu, lineNumber) { }, 347 348 /** 349 * @param {string} hrefValue 350 * @param {boolean} isExternal 351 * @return {!Element} 352 */ 353 createLink: function(hrefValue, isExternal) { }, 354 355 /** 356 * @param {?WebInspector.TextRange} from 357 * @param {?WebInspector.TextRange} to 358 */ 359 onJumpToPosition: function(from, to) { } 360} 361 362/** 363 * @interface 364 */ 365WebInspector.TokenizerFactory = function() { } 366 367WebInspector.TokenizerFactory.prototype = { 368 /** 369 * @param {string} mimeType 370 * @return {function(string, function(string, ?string, number, number))} 371 */ 372 createTokenizer: function(mimeType) { } 373}