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

Side by Side Diff: Source/devtools/front_end/documentation/DocumentationView.js

Issue 471583003: DevTools: [Documentation] Add property token autodetection (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@sources-patch
Patch Set: Comments addressed Created 6 years, 4 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
« no previous file with comments | « Source/devtools/front_end/documentation/DocumentationURLProvider.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 * @extends {WebInspector.VBox} 7 * @extends {WebInspector.VBox}
8 */ 8 */
9 WebInspector.DocumentationView = function() 9 WebInspector.DocumentationView = function()
10 { 10 {
(...skipping 27 matching lines...) Expand all
38 /** 38 /**
39 * @param {!Event} event 39 * @param {!Event} event
40 * @param {!WebInspector.ContextMenu} contextMenu 40 * @param {!WebInspector.ContextMenu} contextMenu
41 * @param {!Object} target 41 * @param {!Object} target
42 */ 42 */
43 appendApplicableItems: function(event, contextMenu, target) 43 appendApplicableItems: function(event, contextMenu, target)
44 { 44 {
45 if (!(target instanceof WebInspector.CodeMirrorTextEditor)) 45 if (!(target instanceof WebInspector.CodeMirrorTextEditor))
46 return; 46 return;
47 var textEditor = /** @type {!WebInspector.CodeMirrorTextEditor} */ (targ et); 47 var textEditor = /** @type {!WebInspector.CodeMirrorTextEditor} */ (targ et);
48 var selection = textEditor.selection(); 48 var descriptors = this._determineDescriptors(textEditor);
49 if (!selection || selection.isEmpty() || selection.startLine !== selecti on.endLine) 49
50 return;
51 var selectedText = textEditor.copyRange(selection);
52 var urlProvider = new WebInspector.DocumentationURLProvider();
53 var descriptors = urlProvider.itemDescriptors(selectedText);
54 if (!descriptors.length) 50 if (!descriptors.length)
55 return; 51 return;
56 if (descriptors.length === 1) { 52 if (descriptors.length === 1) {
57 var formatString = WebInspector.useLowerCaseMenuTitles() ? "Show doc umentation for %s.%s" : "Show Documentation for %s.%s"; 53 var formatString = WebInspector.useLowerCaseMenuTitles() ? "Show doc umentation for %s.%s" : "Show Documentation for %s.%s";
58 contextMenu.appendItem(WebInspector.UIString(formatString, descripto rs[0].name, selectedText), WebInspector.DocumentationView.showDocumentationURL.b ind(null, descriptors[0].url)); 54 contextMenu.appendItem(WebInspector.UIString(formatString, descripto rs[0].name, descriptors[0].searchItem), WebInspector.DocumentationView.showDocum entationURL.bind(null, descriptors[0].url));
59 return; 55 return;
60 } 56 }
61 var subMenuItem = contextMenu.appendSubMenuItem(WebInspector.UIString(We bInspector.useLowerCaseMenuTitles() ? "Show documentation for..." : "Show Docume ntation for...")); 57 var subMenuItem = contextMenu.appendSubMenuItem(WebInspector.UIString(We bInspector.useLowerCaseMenuTitles() ? "Show documentation for..." : "Show Docume ntation for..."));
62 for (var i = 0; i < descriptors.length; ++i) 58 for (var i = 0; i < descriptors.length; ++i)
63 subMenuItem.appendItem(String.sprintf("%s.%s", descriptors[i].name, selectedText), WebInspector.DocumentationView.showDocumentationURL.bind(null, de scriptors[i].url)); 59 subMenuItem.appendItem(String.sprintf("%s.%s", descriptors[i].name, descriptors[i].searchItem), WebInspector.DocumentationView.showDocumentationURL. bind(null, descriptors[i].url));
60 },
61
62 /**
63 * @param {!WebInspector.CodeMirrorTextEditor} textEditor
64 * @return {!Array.<{url: string, name: string, searchItem: string}>}
65 */
66 _determineDescriptors: function(textEditor)
67 {
68 var urlProvider = new WebInspector.DocumentationURLProvider();
69 var textSelection = textEditor.selection().normalize();
70
71 if (!textSelection.isEmpty()) {
72 if (textSelection.startLine !== textSelection.endLine)
73 return [];
74 return urlProvider.itemDescriptors(textEditor.copyRange(textSelectio n));
75 }
76
77 var descriptors = computeDescriptors(textSelection.startColumn);
78 if (descriptors.length)
79 return descriptors;
80
81 return computeDescriptors(textSelection.startColumn - 1);
82
83 /**
84 * @param {number} column
85 * @return {!Array.<{url: string, name: string, searchItem: string}>}
apavlov 2014/08/15 12:36:39 Since this record type is used in the provider API
86 */
87 function computeDescriptors(column)
88 {
89 var token = textEditor.tokenAtTextPosition(textSelection.startLine, column);
90 if (!token)
91 return [];
92 var tokenText = textEditor.line(textSelection.startLine).substring(t oken.startColumn, token.endColumn);
93 return urlProvider.itemDescriptors(tokenText);
94 }
64 } 95 }
65 } 96 }
OLDNEW
« no previous file with comments | « Source/devtools/front_end/documentation/DocumentationURLProvider.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698