OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 /** | 5 /** |
6 * @constructor | 6 * @constructor |
7 */ | 7 */ |
8 WebInspector.InplaceEditor = function() | 8 WebInspector.InplaceEditor = function() |
9 { | 9 { |
10 } | 10 } |
11 | 11 |
12 /** | 12 /** |
| 13 * @typedef {{cancel: function(), commit: function(), setWidth: function(number)
}} |
| 14 */ |
| 15 WebInspector.InplaceEditor.Controller; |
| 16 |
| 17 /** |
13 * @param {!Element} element | 18 * @param {!Element} element |
14 * @param {!WebInspector.InplaceEditor.Config=} config | 19 * @param {!WebInspector.InplaceEditor.Config=} config |
15 * @return {?{cancel: function(), commit: function(), setWidth: function(number)
}} | 20 * @return {?WebInspector.InplaceEditor.Controller} |
16 */ | 21 */ |
17 WebInspector.InplaceEditor.startEditing = function(element, config) | 22 WebInspector.InplaceEditor.startEditing = function(element, config) |
18 { | 23 { |
19 if (!WebInspector.InplaceEditor._defaultInstance) | 24 if (!WebInspector.InplaceEditor._defaultInstance) |
20 WebInspector.InplaceEditor._defaultInstance = new WebInspector.InplaceEd
itor(); | 25 WebInspector.InplaceEditor._defaultInstance = new WebInspector.InplaceEd
itor(); |
21 return WebInspector.InplaceEditor._defaultInstance.startEditing(element, con
fig); | 26 return WebInspector.InplaceEditor._defaultInstance.startEditing(element, con
fig); |
22 } | 27 } |
23 | 28 |
| 29 /** |
| 30 * @param {!Element} element |
| 31 * @param {!WebInspector.InplaceEditor.Config=} config |
| 32 * @return {!Promise.<!WebInspector.InplaceEditor.Controller>} |
| 33 */ |
| 34 WebInspector.InplaceEditor.startMultilineEditing = function(element, config) |
| 35 { |
| 36 return self.runtime.instancePromise(WebInspector.InplaceEditor).then(startEd
iting); |
| 37 |
| 38 /** |
| 39 * @param {!Object} inplaceEditor |
| 40 * @return {!WebInspector.InplaceEditor.Controller|!Promise.<!WebInspector.I
nplaceEditor.Controller>} |
| 41 */ |
| 42 function startEditing(inplaceEditor) |
| 43 { |
| 44 var controller = /** @type {!WebInspector.InplaceEditor} */ (inplaceEdit
or).startEditing(element, config); |
| 45 if (!controller) |
| 46 return Promise.rejectWithError("Editing is already in progress"); |
| 47 return controller; |
| 48 } |
| 49 } |
| 50 |
24 WebInspector.InplaceEditor.prototype = { | 51 WebInspector.InplaceEditor.prototype = { |
25 /** | 52 /** |
26 * @return {string} | 53 * @return {string} |
27 */ | 54 */ |
28 editorContent: function(editingContext) { | 55 editorContent: function(editingContext) { |
29 var element = editingContext.element; | 56 var element = editingContext.element; |
30 if (element.tagName === "INPUT" && element.type === "text") | 57 if (element.tagName === "INPUT" && element.type === "text") |
31 return element.value; | 58 return element.value; |
32 | 59 |
33 return element.textContent; | 60 return element.textContent; |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
67 element.textContent = editingContext.oldText; | 94 element.textContent = editingContext.oldText; |
68 }, | 95 }, |
69 | 96 |
70 augmentEditingHandle: function(editingContext, handle) | 97 augmentEditingHandle: function(editingContext, handle) |
71 { | 98 { |
72 }, | 99 }, |
73 | 100 |
74 /** | 101 /** |
75 * @param {!Element} element | 102 * @param {!Element} element |
76 * @param {!WebInspector.InplaceEditor.Config=} config | 103 * @param {!WebInspector.InplaceEditor.Config=} config |
77 * @return {?{cancel: function(), commit: function()}} | 104 * @return {?WebInspector.InplaceEditor.Controller} |
78 */ | 105 */ |
79 startEditing: function(element, config) | 106 startEditing: function(element, config) |
80 { | 107 { |
81 if (!WebInspector.markBeingEdited(element, true)) | 108 if (!WebInspector.markBeingEdited(element, true)) |
82 return null; | 109 return null; |
83 | 110 |
84 config = config || new WebInspector.InplaceEditor.Config(function() {},
function() {}); | 111 config = config || new WebInspector.InplaceEditor.Config(function() {},
function() {}); |
85 var editingContext = { element: element, config: config }; | 112 var editingContext = { element: element, config: config }; |
86 var committedCallback = config.commitHandler; | 113 var committedCallback = config.commitHandler; |
87 var cancelledCallback = config.cancelHandler; | 114 var cancelledCallback = config.cancelHandler; |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
183 handleEditingResult(result, event); | 210 handleEditingResult(result, event); |
184 } | 211 } |
185 | 212 |
186 element.addEventListener("blur", blurEventListener, isMultiline); | 213 element.addEventListener("blur", blurEventListener, isMultiline); |
187 element.addEventListener("keydown", keyDownEventListener, true); | 214 element.addEventListener("keydown", keyDownEventListener, true); |
188 if (pasteCallback) | 215 if (pasteCallback) |
189 element.addEventListener("paste", pasteEventListener, true); | 216 element.addEventListener("paste", pasteEventListener, true); |
190 | 217 |
191 var handle = { | 218 var handle = { |
192 cancel: editingCancelled.bind(element), | 219 cancel: editingCancelled.bind(element), |
193 commit: editingCommitted.bind(element) | 220 commit: editingCommitted.bind(element), |
| 221 setWidth: function() {} |
194 }; | 222 }; |
195 this.augmentEditingHandle(editingContext, handle); | 223 this.augmentEditingHandle(editingContext, handle); |
196 return handle; | 224 return handle; |
197 } | 225 } |
198 } | 226 } |
199 | 227 |
200 /** | 228 /** |
201 * @constructor | 229 * @constructor |
202 * @param {function(!Element,string,string,T,string)} commitHandler | 230 * @param {function(!Element,string,string,T,string)} commitHandler |
203 * @param {function(!Element,T)} cancelHandler | 231 * @param {function(!Element,T)} cancelHandler |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
239 | 267 |
240 /** | 268 /** |
241 * @param {string} initialValue | 269 * @param {string} initialValue |
242 * @param {!Object} mode | 270 * @param {!Object} mode |
243 * @param {string} theme | 271 * @param {string} theme |
244 * @param {boolean=} lineWrapping | 272 * @param {boolean=} lineWrapping |
245 * @param {boolean=} smartIndent | 273 * @param {boolean=} smartIndent |
246 */ | 274 */ |
247 setMultilineOptions: function(initialValue, mode, theme, lineWrapping, smart
Indent) | 275 setMultilineOptions: function(initialValue, mode, theme, lineWrapping, smart
Indent) |
248 { | 276 { |
| 277 this.multiline = true; |
249 this.initialValue = initialValue; | 278 this.initialValue = initialValue; |
250 this.mode = mode; | 279 this.mode = mode; |
251 this.theme = theme; | 280 this.theme = theme; |
252 this.lineWrapping = lineWrapping; | 281 this.lineWrapping = lineWrapping; |
253 this.smartIndent = smartIndent; | 282 this.smartIndent = smartIndent; |
254 }, | 283 }, |
255 | 284 |
256 setCustomFinishHandler: function(customFinishHandler) | 285 setCustomFinishHandler: function(customFinishHandler) |
257 { | 286 { |
258 this.customFinishHandler = customFinishHandler; | 287 this.customFinishHandler = customFinishHandler; |
259 } | 288 } |
260 } | 289 } |
OLD | NEW |