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

Unified Diff: third_party/WebKit/Source/devtools/front_end/sources/GoToLineDialog.js

Issue 2679483002: DevTools: Create extensible QuickOpen control (Closed)
Patch Set: Created 3 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/devtools/front_end/sources/GoToLineDialog.js
diff --git a/third_party/WebKit/Source/devtools/front_end/sources/GoToLineDialog.js b/third_party/WebKit/Source/devtools/front_end/sources/GoToLineDialog.js
new file mode 100644
index 0000000000000000000000000000000000000000..2c31d8f188ba0faf6f0da8cd6a2163fbe8ed0d38
--- /dev/null
+++ b/third_party/WebKit/Source/devtools/front_end/sources/GoToLineDialog.js
@@ -0,0 +1,63 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+Sources.GoToLineDialog = class extends QuickOpen.FilteredListWidget.Delegate {
pfeldman 2017/02/07 02:10:03 Sources.GoToLineQuickOpen
einbinder 2017/02/28 23:59:07 Done.
+ /**
+ * @override
+ * @param {?number} itemIndex
+ * @param {string} promptValue
+ */
+ selectItem(itemIndex, promptValue) {
+ var uiSourceCode = this._currentUISourceCode();
+ if (!uiSourceCode)
+ return;
+ var position = this._parsePosition(promptValue);
+ if (!position)
+ return;
+ Common.Revealer.reveal(uiSourceCode.uiLocation(position.line - 1, position.column - 1));
+ }
+
+ /**
+ * @override
+ * @param {string} query
+ * @return {string}
+ */
+ notFoundText(query) {
+ if (!this._currentUISourceCode())
+ return Common.UIString('No file selected.');
+ var position = this._parsePosition(query);
+ if (!position)
+ return Common.UIString('Type a number to go to that line.');
+ var text = Common.UIString('Go to line ') + position.line;
+ if (position.column && position.column > 1)
+ text += Common.UIString(' and column ') + position.column;
+ text += '.';
+ return text;
+ }
+
+ /**
+ * @param {string} query
+ * @return {?{line: number, column: number}}
+ */
+ _parsePosition(query) {
+ var parts = query.match(/([0-9]+)(\:[0-9]*)?/);
+ if (!parts || !parts[0] || parts[0].length !== query.length)
+ return null;
+ var line = parseInt(parts[1], 10);
+ var column;
+ if (parts[2])
+ column = parseInt(parts[2].substring(1), 10);
+ return {line: Math.max(line | 0, 1), column: Math.max(column | 0, 1)};
+ }
+
+ /**
+ * @return {?Workspace.UISourceCode}
+ */
+ _currentUISourceCode() {
+ var sourcesView = UI.context.flavor(Sources.SourcesView);
+ if (!sourcesView)
+ return null;
+ return sourcesView.currentUISourceCode();
+ }
+};

Powered by Google App Engine
This is Rietveld 408576698