Commit 9445305e authored by einbinder's avatar einbinder Committed by Commit bot

DevTools: Remove caseSensitive from FilteredListWidget.Delegate

Makes case sensitivity and option on highlightRanges, which becomes
a static method on FilteredListWidget.

BUG=none

Review-Url: https://codereview.chromium.org/2627783002
Cr-Commit-Position: refs/heads/master@{#443042}
parent bcbe36cc
......@@ -220,7 +220,7 @@ QuickOpen.CommandMenuDelegate = class extends QuickOpen.FilteredListWidget.Deleg
tagElement.style.backgroundColor = QuickOpen.CommandMenuDelegate.MaterialPaletteColors[index];
tagElement.textContent = command.category();
titleElement.createTextChild(command.title());
this.highlightRanges(titleElement, query);
QuickOpen.FilteredListWidget.highlightRanges(titleElement, query, true);
subtitleElement.textContent = command.shortcut();
}
......@@ -235,14 +235,6 @@ QuickOpen.CommandMenuDelegate = class extends QuickOpen.FilteredListWidget.Deleg
this._commands[itemIndex].execute();
}
/**
* @override
* @return {boolean}
*/
caseSensitive() {
return false;
}
/**
* @override
* @return {boolean}
......
......@@ -68,6 +68,47 @@ QuickOpen.FilteredListWidget = class extends UI.VBox {
return new RegExp(regexString, 'i');
}
/**
* @param {!Element} element
* @param {string} query
* @param {boolean=} caseInsensitive
* @return {boolean}
*/
static highlightRanges(element, query, caseInsensitive) {
if (!query)
return false;
/**
* @param {string} text
* @param {string} query
* @return {?Array.<!Common.SourceRange>}
*/
function rangesForMatch(text, query) {
var opcodes = Diff.Diff.charDiff(query, text);
var offset = 0;
var ranges = [];
for (var i = 0; i < opcodes.length; ++i) {
var opcode = opcodes[i];
if (opcode[0] === Diff.Diff.Operation.Equal)
ranges.push(new Common.SourceRange(offset, opcode[1].length));
else if (opcode[0] !== Diff.Diff.Operation.Insert)
return null;
offset += opcode[1].length;
}
return ranges;
}
var text = element.textContent;
var ranges = rangesForMatch(text, query);
if (!ranges || caseInsensitive)
ranges = rangesForMatch(text.toUpperCase(), query.toUpperCase());
if (ranges) {
UI.highlightRangesWithStyleClass(element, ranges, 'highlight');
return true;
}
return false;
}
showAsDialog() {
this._dialog = new UI.Dialog();
this._dialog.setMaxSize(new Size(504, 340));
......@@ -413,53 +454,6 @@ QuickOpen.FilteredListWidget.Delegate = class {
renderItem(itemIndex, query, titleElement, subtitleElement) {
}
/**
* @param {!Element} element
* @param {string} query
* @return {boolean}
*/
highlightRanges(element, query) {
if (!query)
return false;
/**
* @param {string} text
* @param {string} query
* @return {?Array.<!Common.SourceRange>}
*/
function rangesForMatch(text, query) {
var opcodes = Diff.Diff.charDiff(query, text);
var offset = 0;
var ranges = [];
for (var i = 0; i < opcodes.length; ++i) {
var opcode = opcodes[i];
if (opcode[0] === Diff.Diff.Operation.Equal)
ranges.push(new Common.SourceRange(offset, opcode[1].length));
else if (opcode[0] !== Diff.Diff.Operation.Insert)
return null;
offset += opcode[1].length;
}
return ranges;
}
var text = element.textContent;
var ranges = rangesForMatch(text, query);
if (!ranges || !this.caseSensitive())
ranges = rangesForMatch(text.toUpperCase(), query.toUpperCase());
if (ranges) {
UI.highlightRangesWithStyleClass(element, ranges, 'highlight');
return true;
}
return false;
}
/**
* @return {boolean}
*/
caseSensitive() {
return true;
}
/**
* @return {boolean}
*/
......
......@@ -81,7 +81,7 @@ Sources.JavaScriptOutlineDialog = class extends QuickOpen.FilteredListWidget.Del
renderItem(itemIndex, query, titleElement, subtitleElement) {
var item = this._functionItems[itemIndex];
titleElement.textContent = item.name + (item.arguments ? item.arguments : '');
this.highlightRanges(titleElement, query);
QuickOpen.FilteredListWidget.highlightRanges(titleElement, query);
subtitleElement.textContent = ':' + (item.line + 1);
}
......
......@@ -94,7 +94,7 @@ Sources.StyleSheetOutlineDialog = class extends QuickOpen.FilteredListWidget.Del
renderItem(itemIndex, query, titleElement, subtitleElement) {
var rule = this._rules[itemIndex];
titleElement.textContent = rule.selectorText || rule.atRule;
this.highlightRanges(titleElement, query);
QuickOpen.FilteredListWidget.highlightRanges(titleElement, query);
subtitleElement.textContent = ':' + (rule.lineNumber + 1);
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment