Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 2012 Google Inc. All rights reserved. | 2 * Copyright (C) 2012 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * | 10 * |
| (...skipping 19 matching lines...) Expand all Loading... | |
| 30 * @unrestricted | 30 * @unrestricted |
| 31 */ | 31 */ |
| 32 Sources.StyleSheetOutlineDialog = class extends UI.FilteredListWidget.Delegate { | 32 Sources.StyleSheetOutlineDialog = class extends UI.FilteredListWidget.Delegate { |
| 33 /** | 33 /** |
| 34 * @param {!Workspace.UISourceCode} uiSourceCode | 34 * @param {!Workspace.UISourceCode} uiSourceCode |
| 35 * @param {function(number, number)} selectItemCallback | 35 * @param {function(number, number)} selectItemCallback |
| 36 */ | 36 */ |
| 37 constructor(uiSourceCode, selectItemCallback) { | 37 constructor(uiSourceCode, selectItemCallback) { |
| 38 super([]); | 38 super([]); |
| 39 this._selectItemCallback = selectItemCallback; | 39 this._selectItemCallback = selectItemCallback; |
| 40 this._cssParser = new SDK.CSSParser(); | 40 this._rules = []; |
|
dgozman
2016/12/14 19:05:02
Let's @type this for compiler to kick-in.
lushnikov
2016/12/15 00:28:46
Done.
| |
| 41 this._cssParser.addEventListener(SDK.CSSParser.Events.RulesParsed, this.refr esh.bind(this)); | 41 Common.formatterWorkerPool.parseCSS(uiSourceCode.workingCopy(), (isLastChunk , rules) => { |
| 42 this._cssParser.parse(uiSourceCode.workingCopy()); | 42 this._rules.push(...rules); |
|
dgozman
2016/12/14 19:05:02
Are you sure this is safe to do?
lushnikov
2016/12/15 00:28:46
The feature has hit stable and looks simple. Shoul
| |
| 43 this.refresh(); | |
| 44 }); | |
| 43 } | 45 } |
| 44 | 46 |
| 45 /** | 47 /** |
| 46 * @param {!Workspace.UISourceCode} uiSourceCode | 48 * @param {!Workspace.UISourceCode} uiSourceCode |
| 47 * @param {function(number, number)} selectItemCallback | 49 * @param {function(number, number)} selectItemCallback |
| 48 */ | 50 */ |
| 49 static show(uiSourceCode, selectItemCallback) { | 51 static show(uiSourceCode, selectItemCallback) { |
| 50 Sources.StyleSheetOutlineDialog._instanceForTests = | 52 Sources.StyleSheetOutlineDialog._instanceForTests = |
| 51 new Sources.StyleSheetOutlineDialog(uiSourceCode, selectItemCallback); | 53 new Sources.StyleSheetOutlineDialog(uiSourceCode, selectItemCallback); |
| 52 new UI.FilteredListWidget(Sources.StyleSheetOutlineDialog._instanceForTests) .showAsDialog(); | 54 new UI.FilteredListWidget(Sources.StyleSheetOutlineDialog._instanceForTests) .showAsDialog(); |
| 53 } | 55 } |
| 54 | 56 |
| 55 /** | 57 /** |
| 56 * @override | 58 * @override |
| 57 * @return {number} | 59 * @return {number} |
| 58 */ | 60 */ |
| 59 itemCount() { | 61 itemCount() { |
| 60 return this._cssParser.rules().length; | 62 return this._rules.length; |
| 61 } | 63 } |
| 62 | 64 |
| 63 /** | 65 /** |
| 64 * @override | 66 * @override |
| 65 * @param {number} itemIndex | 67 * @param {number} itemIndex |
| 66 * @return {string} | 68 * @return {string} |
| 67 */ | 69 */ |
| 68 itemKeyAt(itemIndex) { | 70 itemKeyAt(itemIndex) { |
| 69 var rule = this._cssParser.rules()[itemIndex]; | 71 var rule = this._rules[itemIndex]; |
| 70 return rule.selectorText || rule.atRule; | 72 return rule.selectorText || rule.atRule; |
| 71 } | 73 } |
| 72 | 74 |
| 73 /** | 75 /** |
| 74 * @override | 76 * @override |
| 75 * @param {number} itemIndex | 77 * @param {number} itemIndex |
| 76 * @param {string} query | 78 * @param {string} query |
| 77 * @return {number} | 79 * @return {number} |
| 78 */ | 80 */ |
| 79 itemScoreAt(itemIndex, query) { | 81 itemScoreAt(itemIndex, query) { |
| 80 var rule = this._cssParser.rules()[itemIndex]; | 82 var rule = this._rules[itemIndex]; |
| 81 return -rule.lineNumber; | 83 return -rule.lineNumber; |
| 82 } | 84 } |
| 83 | 85 |
| 84 /** | 86 /** |
| 85 * @override | 87 * @override |
| 86 * @param {number} itemIndex | 88 * @param {number} itemIndex |
| 87 * @param {string} query | 89 * @param {string} query |
| 88 * @param {!Element} titleElement | 90 * @param {!Element} titleElement |
| 89 * @param {!Element} subtitleElement | 91 * @param {!Element} subtitleElement |
| 90 */ | 92 */ |
| 91 renderItem(itemIndex, query, titleElement, subtitleElement) { | 93 renderItem(itemIndex, query, titleElement, subtitleElement) { |
| 92 var rule = this._cssParser.rules()[itemIndex]; | 94 var rule = this._rules[itemIndex]; |
| 93 titleElement.textContent = rule.selectorText || rule.atRule; | 95 titleElement.textContent = rule.selectorText || rule.atRule; |
| 94 this.highlightRanges(titleElement, query); | 96 this.highlightRanges(titleElement, query); |
| 95 subtitleElement.textContent = ':' + (rule.lineNumber + 1); | 97 subtitleElement.textContent = ':' + (rule.lineNumber + 1); |
| 96 } | 98 } |
| 97 | 99 |
| 98 /** | 100 /** |
| 99 * @override | 101 * @override |
| 100 * @param {number} itemIndex | 102 * @param {number} itemIndex |
| 101 * @param {string} promptValue | 103 * @param {string} promptValue |
| 102 */ | 104 */ |
| 103 selectItem(itemIndex, promptValue) { | 105 selectItem(itemIndex, promptValue) { |
| 104 var rule = this._cssParser.rules()[itemIndex]; | 106 var rule = this._rules[itemIndex]; |
| 105 var lineNumber = rule.lineNumber; | 107 var lineNumber = rule.lineNumber; |
| 106 if (!isNaN(lineNumber) && lineNumber >= 0) | 108 if (!isNaN(lineNumber) && lineNumber >= 0) |
| 107 this._selectItemCallback(lineNumber, rule.columnNumber); | 109 this._selectItemCallback(lineNumber, rule.columnNumber); |
| 108 } | 110 } |
| 109 | |
| 110 /** | |
| 111 * @override | |
| 112 */ | |
| 113 dispose() { | |
| 114 this._cssParser.dispose(); | |
| 115 } | |
| 116 }; | 111 }; |
| OLD | NEW |