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 ...@@ -220,7 +220,7 @@ QuickOpen.CommandMenuDelegate = class extends QuickOpen.FilteredListWidget.Deleg
tagElement.style.backgroundColor = QuickOpen.CommandMenuDelegate.MaterialPaletteColors[index]; tagElement.style.backgroundColor = QuickOpen.CommandMenuDelegate.MaterialPaletteColors[index];
tagElement.textContent = command.category(); tagElement.textContent = command.category();
titleElement.createTextChild(command.title()); titleElement.createTextChild(command.title());
this.highlightRanges(titleElement, query); QuickOpen.FilteredListWidget.highlightRanges(titleElement, query, true);
subtitleElement.textContent = command.shortcut(); subtitleElement.textContent = command.shortcut();
} }
...@@ -235,14 +235,6 @@ QuickOpen.CommandMenuDelegate = class extends QuickOpen.FilteredListWidget.Deleg ...@@ -235,14 +235,6 @@ QuickOpen.CommandMenuDelegate = class extends QuickOpen.FilteredListWidget.Deleg
this._commands[itemIndex].execute(); this._commands[itemIndex].execute();
} }
/**
* @override
* @return {boolean}
*/
caseSensitive() {
return false;
}
/** /**
* @override * @override
* @return {boolean} * @return {boolean}
......
...@@ -68,6 +68,47 @@ QuickOpen.FilteredListWidget = class extends UI.VBox { ...@@ -68,6 +68,47 @@ QuickOpen.FilteredListWidget = class extends UI.VBox {
return new RegExp(regexString, 'i'); 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() { showAsDialog() {
this._dialog = new UI.Dialog(); this._dialog = new UI.Dialog();
this._dialog.setMaxSize(new Size(504, 340)); this._dialog.setMaxSize(new Size(504, 340));
...@@ -413,53 +454,6 @@ QuickOpen.FilteredListWidget.Delegate = class { ...@@ -413,53 +454,6 @@ QuickOpen.FilteredListWidget.Delegate = class {
renderItem(itemIndex, query, titleElement, subtitleElement) { 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} * @return {boolean}
*/ */
......
...@@ -81,7 +81,7 @@ Sources.JavaScriptOutlineDialog = class extends QuickOpen.FilteredListWidget.Del ...@@ -81,7 +81,7 @@ Sources.JavaScriptOutlineDialog = class extends QuickOpen.FilteredListWidget.Del
renderItem(itemIndex, query, titleElement, subtitleElement) { renderItem(itemIndex, query, titleElement, subtitleElement) {
var item = this._functionItems[itemIndex]; var item = this._functionItems[itemIndex];
titleElement.textContent = item.name + (item.arguments ? item.arguments : ''); titleElement.textContent = item.name + (item.arguments ? item.arguments : '');
this.highlightRanges(titleElement, query); QuickOpen.FilteredListWidget.highlightRanges(titleElement, query);
subtitleElement.textContent = ':' + (item.line + 1); subtitleElement.textContent = ':' + (item.line + 1);
} }
......
...@@ -94,7 +94,7 @@ Sources.StyleSheetOutlineDialog = class extends QuickOpen.FilteredListWidget.Del ...@@ -94,7 +94,7 @@ Sources.StyleSheetOutlineDialog = class extends QuickOpen.FilteredListWidget.Del
renderItem(itemIndex, query, titleElement, subtitleElement) { renderItem(itemIndex, query, titleElement, subtitleElement) {
var rule = this._rules[itemIndex]; var rule = this._rules[itemIndex];
titleElement.textContent = rule.selectorText || rule.atRule; titleElement.textContent = rule.selectorText || rule.atRule;
this.highlightRanges(titleElement, query); QuickOpen.FilteredListWidget.highlightRanges(titleElement, query);
subtitleElement.textContent = ':' + (rule.lineNumber + 1); 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