| Index: Source/devtools/front_end/FilterBar.js
|
| diff --git a/Source/devtools/front_end/FilterBar.js b/Source/devtools/front_end/FilterBar.js
|
| index b7cc8425fef7c1991d77aebc5f62a731c669d04e..0ae33e2fabc5aeb1ae4e6376f18688caa5ae5a6e 100644
|
| --- a/Source/devtools/front_end/FilterBar.js
|
| +++ b/Source/devtools/front_end/FilterBar.js
|
| @@ -159,9 +159,13 @@ WebInspector.FilterUI.prototype = {
|
| * @constructor
|
| * @implements {WebInspector.FilterUI}
|
| * @extends {WebInspector.Object}
|
| + * @param {boolean=} supportRegex
|
| */
|
| -WebInspector.TextFilterUI = function()
|
| +WebInspector.TextFilterUI = function(supportRegex)
|
| {
|
| + this._supportRegex = !!supportRegex;
|
| + this._regex = null;
|
| +
|
| this._filterElement = document.createElement("div");
|
| this._filterElement.className = "filter-text-filter";
|
|
|
| @@ -171,6 +175,18 @@ WebInspector.TextFilterUI = function()
|
| this._filterInputElement.addEventListener("mousedown", this._onFilterFieldManualFocus.bind(this), false); // when the search field is manually selected
|
| this._filterInputElement.addEventListener("input", this._onInput.bind(this), false);
|
| this._filterInputElement.addEventListener("change", this._onInput.bind(this), false);
|
| +
|
| + if (this._supportRegex) {
|
| + this._filterElement.classList.add("supports-regex");
|
| + this._regexCheckBox = this._filterElement.createChild("input");
|
| + this._regexCheckBox.type = "checkbox";
|
| + this._regexCheckBox.id = "text-filter-regex";
|
| + this._regexCheckBox.addEventListener("change", this._onInput.bind(this), false);
|
| +
|
| + this._regexLabel = this._filterElement.createChild("label");
|
| + this._regexLabel.htmlFor = "text-filter-regex";
|
| + this._regexLabel.textContent = WebInspector.UIString("Regex");
|
| + }
|
| }
|
|
|
| WebInspector.TextFilterUI.prototype = {
|
| @@ -212,10 +228,6 @@ WebInspector.TextFilterUI.prototype = {
|
| */
|
| regex: function()
|
| {
|
| - if (this._regex !== undefined)
|
| - return this._regex;
|
| - var filterQuery = this.value();
|
| - this._regex = filterQuery ? createPlainTextSearchRegex(filterQuery, "i") : null;
|
| return this._regex;
|
| },
|
|
|
| @@ -236,7 +248,22 @@ WebInspector.TextFilterUI.prototype = {
|
| },
|
|
|
| _valueChanged: function() {
|
| - delete this._regex;
|
| + var filterQuery = this.value();
|
| +
|
| + this._regex = null;
|
| + this._filterInputElement.classList.remove("filter-text-invalid");
|
| + if (filterQuery) {
|
| + if (this._supportRegex && this._regexCheckBox.checked) {
|
| + try {
|
| + this._regex = new RegExp(filterQuery, "i");
|
| + } catch (e) {
|
| + this._filterInputElement.classList.add("filter-text-invalid");
|
| + }
|
| + } else {
|
| + this._regex = createPlainTextSearchRegex(filterQuery, "i");
|
| + }
|
| + }
|
| +
|
| this.dispatchEventToListeners(WebInspector.FilterUI.Events.FilterChanged, null);
|
| },
|
|
|
|
|