Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(208)

Side by Side Diff: Source/devtools/front_end/ui/InplaceEditor.js

Issue 1196343002: Revert of DevTools: [Elements] F2 should commit changes in edit-as-html (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « Source/devtools/front_end/elements/ElementsTreeElement.js ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 }
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
162 } 162 }
163 163
164 /** @this {Element} */ 164 /** @this {Element} */
165 function editingCommitted() 165 function editingCommitted()
166 { 166 {
167 cleanUpAfterEditing(); 167 cleanUpAfterEditing();
168 168
169 committedCallback(this, self.editorContent(editingContext), editingC ontext.oldText, context, moveDirection); 169 committedCallback(this, self.editorContent(editingContext), editingC ontext.oldText, context, moveDirection);
170 } 170 }
171 171
172 /**
173 * @param {!Event} event
174 * @return {string}
175 */
176 function defaultFinishHandler(event) 172 function defaultFinishHandler(event)
177 { 173 {
178 var isMetaOrCtrl = WebInspector.isMac() ? 174 var isMetaOrCtrl = WebInspector.isMac() ?
179 event.metaKey && !event.shiftKey && !event.ctrlKey && !event.alt Key : 175 event.metaKey && !event.shiftKey && !event.ctrlKey && !event.alt Key :
180 event.ctrlKey && !event.shiftKey && !event.metaKey && !event.alt Key; 176 event.ctrlKey && !event.shiftKey && !event.metaKey && !event.alt Key;
181 if (isEnterKey(event) && (event.isMetaOrCtrlForTest || !isMultiline || isMetaOrCtrl)) 177 if (isEnterKey(event) && (event.isMetaOrCtrlForTest || !isMultiline || isMetaOrCtrl))
182 return "commit"; 178 return "commit";
183 else if (event.keyCode === WebInspector.KeyboardShortcut.Keys.Esc.co de || event.keyIdentifier === "U+001B") 179 else if (event.keyCode === WebInspector.KeyboardShortcut.Keys.Esc.co de || event.keyIdentifier === "U+001B")
184 return "cancel"; 180 return "cancel";
185 else if (!isMultiline && event.keyIdentifier === "U+0009") // Tab ke y 181 else if (!isMultiline && event.keyIdentifier === "U+0009") // Tab ke y
186 return "move-" + (event.shiftKey ? "backward" : "forward"); 182 return "move-" + (event.shiftKey ? "backward" : "forward");
187 return "";
188 } 183 }
189 184
190 function handleEditingResult(result, event) 185 function handleEditingResult(result, event)
191 { 186 {
192 if (result === "commit") { 187 if (result === "commit") {
193 editingCommitted.call(element); 188 editingCommitted.call(element);
194 event.consume(true); 189 event.consume(true);
195 } else if (result === "cancel") { 190 } else if (result === "cancel") {
196 editingCancelled.call(element); 191 editingCancelled.call(element);
197 event.consume(true); 192 event.consume(true);
198 } else if (result && result.startsWith("move-")) { 193 } else if (result && result.startsWith("move-")) {
199 moveDirection = result.substring(5); 194 moveDirection = result.substring(5);
200 if (event.keyIdentifier !== "U+0009") 195 if (event.keyIdentifier !== "U+0009")
201 blurEventListener(); 196 blurEventListener();
202 } 197 }
203 } 198 }
204 199
205 /**
206 * @param {!Event} event
207 */
208 function pasteEventListener(event) 200 function pasteEventListener(event)
209 { 201 {
210 var result = pasteCallback(event); 202 var result = pasteCallback(event);
211 handleEditingResult(result, event); 203 handleEditingResult(result, event);
212 } 204 }
213 205
214 /**
215 * @param {!Event} event
216 */
217 function keyDownEventListener(event) 206 function keyDownEventListener(event)
218 { 207 {
219 var result = defaultFinishHandler(event); 208 var handler = config.customFinishHandler || defaultFinishHandler;
220 if (!result && config.postKeydownFinishHandler) 209 var result = handler(event);
221 result = config.postKeydownFinishHandler(event);
222 handleEditingResult(result, event); 210 handleEditingResult(result, event);
223 } 211 }
224 212
225 element.addEventListener("blur", blurEventListener, isMultiline); 213 element.addEventListener("blur", blurEventListener, isMultiline);
226 element.addEventListener("keydown", keyDownEventListener, true); 214 element.addEventListener("keydown", keyDownEventListener, true);
227 if (pasteCallback) 215 if (pasteCallback)
228 element.addEventListener("paste", pasteEventListener, true); 216 element.addEventListener("paste", pasteEventListener, true);
229 217
230 var handle = { 218 var handle = {
231 cancel: editingCancelled.bind(element), 219 cancel: editingCancelled.bind(element),
(...skipping 14 matching lines...) Expand all
246 * @template T 234 * @template T
247 */ 235 */
248 WebInspector.InplaceEditor.Config = function(commitHandler, cancelHandler, conte xt, blurHandler) 236 WebInspector.InplaceEditor.Config = function(commitHandler, cancelHandler, conte xt, blurHandler)
249 { 237 {
250 this.commitHandler = commitHandler; 238 this.commitHandler = commitHandler;
251 this.cancelHandler = cancelHandler; 239 this.cancelHandler = cancelHandler;
252 this.context = context; 240 this.context = context;
253 this.blurHandler = blurHandler; 241 this.blurHandler = blurHandler;
254 242
255 /** 243 /**
256 * @type {function(!Event):string|undefined} 244 * Handles the "paste" event, return values are the same as those for custom FinishHandler
245 * @type {function(!Element)|undefined}
257 */ 246 */
258 this.pasteHandler; 247 this.pasteHandler;
259 248
260 /** 249 /**
250 * Whether the edited element is multiline
261 * @type {boolean|undefined} 251 * @type {boolean|undefined}
262 */ 252 */
263 this.multiline; 253 this.multiline;
264 254
265 /** 255 /**
266 * @type {function(!Event):string|undefined} 256 * Custom finish handler for the editing session (invoked on keydown)
257 * @type {function(!Element,*)|undefined}
267 */ 258 */
268 this.postKeydownFinishHandler; 259 this.customFinishHandler;
269 } 260 }
270 261
271 WebInspector.InplaceEditor.Config.prototype = { 262 WebInspector.InplaceEditor.Config.prototype = {
272 setPasteHandler: function(pasteHandler) 263 setPasteHandler: function(pasteHandler)
273 { 264 {
274 this.pasteHandler = pasteHandler; 265 this.pasteHandler = pasteHandler;
275 }, 266 },
276 267
277 /** 268 /**
278 * @param {string} initialValue 269 * @param {string} initialValue
279 * @param {!Object} mode 270 * @param {!Object} mode
280 * @param {string} theme 271 * @param {string} theme
281 * @param {boolean=} lineWrapping 272 * @param {boolean=} lineWrapping
282 * @param {boolean=} smartIndent 273 * @param {boolean=} smartIndent
283 */ 274 */
284 setMultilineOptions: function(initialValue, mode, theme, lineWrapping, smart Indent) 275 setMultilineOptions: function(initialValue, mode, theme, lineWrapping, smart Indent)
285 { 276 {
286 this.multiline = true; 277 this.multiline = true;
287 this.initialValue = initialValue; 278 this.initialValue = initialValue;
288 this.mode = mode; 279 this.mode = mode;
289 this.theme = theme; 280 this.theme = theme;
290 this.lineWrapping = lineWrapping; 281 this.lineWrapping = lineWrapping;
291 this.smartIndent = smartIndent; 282 this.smartIndent = smartIndent;
292 }, 283 },
293 284
294 /** 285 setCustomFinishHandler: function(customFinishHandler)
295 * @param {function(!Event):string} postKeydownFinishHandler
296 */
297 setPostKeydownFinishHandler: function(postKeydownFinishHandler)
298 { 286 {
299 this.postKeydownFinishHandler = postKeydownFinishHandler; 287 this.customFinishHandler = customFinishHandler;
300 } 288 }
301 } 289 }
OLDNEW
« no previous file with comments | « Source/devtools/front_end/elements/ElementsTreeElement.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698