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); |
}, |