| 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 /** @type {!Array<!Common.FormatterWorkerPool.CSSRule>} */ |
| 41 this._cssParser.addEventListener(SDK.CSSParser.Events.RulesParsed, this.refr
esh.bind(this)); | 41 this._rules = []; |
| 42 this._cssParser.parse(uiSourceCode.workingCopy()); | 42 Common.formatterWorkerPool.parseCSS(uiSourceCode.workingCopy(), (isLastChunk
, rules) => { |
| 43 this._rules.push(...rules); |
| 44 this.refresh(); |
| 45 }); |
| 43 } | 46 } |
| 44 | 47 |
| 45 /** | 48 /** |
| 46 * @param {!Workspace.UISourceCode} uiSourceCode | 49 * @param {!Workspace.UISourceCode} uiSourceCode |
| 47 * @param {function(number, number)} selectItemCallback | 50 * @param {function(number, number)} selectItemCallback |
| 48 */ | 51 */ |
| 49 static show(uiSourceCode, selectItemCallback) { | 52 static show(uiSourceCode, selectItemCallback) { |
| 50 Sources.StyleSheetOutlineDialog._instanceForTests = | 53 Sources.StyleSheetOutlineDialog._instanceForTests = |
| 51 new Sources.StyleSheetOutlineDialog(uiSourceCode, selectItemCallback); | 54 new Sources.StyleSheetOutlineDialog(uiSourceCode, selectItemCallback); |
| 52 new UI.FilteredListWidget(Sources.StyleSheetOutlineDialog._instanceForTests)
.showAsDialog(); | 55 new UI.FilteredListWidget(Sources.StyleSheetOutlineDialog._instanceForTests)
.showAsDialog(); |
| 53 } | 56 } |
| 54 | 57 |
| 55 /** | 58 /** |
| 56 * @override | 59 * @override |
| 57 * @return {number} | 60 * @return {number} |
| 58 */ | 61 */ |
| 59 itemCount() { | 62 itemCount() { |
| 60 return this._cssParser.rules().length; | 63 return this._rules.length; |
| 61 } | 64 } |
| 62 | 65 |
| 63 /** | 66 /** |
| 64 * @override | 67 * @override |
| 65 * @param {number} itemIndex | 68 * @param {number} itemIndex |
| 66 * @return {string} | 69 * @return {string} |
| 67 */ | 70 */ |
| 68 itemKeyAt(itemIndex) { | 71 itemKeyAt(itemIndex) { |
| 69 var rule = this._cssParser.rules()[itemIndex]; | 72 var rule = this._rules[itemIndex]; |
| 70 return rule.selectorText || rule.atRule; | 73 return rule.selectorText || rule.atRule; |
| 71 } | 74 } |
| 72 | 75 |
| 73 /** | 76 /** |
| 74 * @override | 77 * @override |
| 75 * @param {number} itemIndex | 78 * @param {number} itemIndex |
| 76 * @param {string} query | 79 * @param {string} query |
| 77 * @return {number} | 80 * @return {number} |
| 78 */ | 81 */ |
| 79 itemScoreAt(itemIndex, query) { | 82 itemScoreAt(itemIndex, query) { |
| 80 var rule = this._cssParser.rules()[itemIndex]; | 83 var rule = this._rules[itemIndex]; |
| 81 return -rule.lineNumber; | 84 return -rule.lineNumber; |
| 82 } | 85 } |
| 83 | 86 |
| 84 /** | 87 /** |
| 85 * @override | 88 * @override |
| 86 * @param {number} itemIndex | 89 * @param {number} itemIndex |
| 87 * @param {string} query | 90 * @param {string} query |
| 88 * @param {!Element} titleElement | 91 * @param {!Element} titleElement |
| 89 * @param {!Element} subtitleElement | 92 * @param {!Element} subtitleElement |
| 90 */ | 93 */ |
| 91 renderItem(itemIndex, query, titleElement, subtitleElement) { | 94 renderItem(itemIndex, query, titleElement, subtitleElement) { |
| 92 var rule = this._cssParser.rules()[itemIndex]; | 95 var rule = this._rules[itemIndex]; |
| 93 titleElement.textContent = rule.selectorText || rule.atRule; | 96 titleElement.textContent = rule.selectorText || rule.atRule; |
| 94 this.highlightRanges(titleElement, query); | 97 this.highlightRanges(titleElement, query); |
| 95 subtitleElement.textContent = ':' + (rule.lineNumber + 1); | 98 subtitleElement.textContent = ':' + (rule.lineNumber + 1); |
| 96 } | 99 } |
| 97 | 100 |
| 98 /** | 101 /** |
| 99 * @override | 102 * @override |
| 100 * @param {number} itemIndex | 103 * @param {number} itemIndex |
| 101 * @param {string} promptValue | 104 * @param {string} promptValue |
| 102 */ | 105 */ |
| 103 selectItem(itemIndex, promptValue) { | 106 selectItem(itemIndex, promptValue) { |
| 104 var rule = this._cssParser.rules()[itemIndex]; | 107 var rule = this._rules[itemIndex]; |
| 105 var lineNumber = rule.lineNumber; | 108 var lineNumber = rule.lineNumber; |
| 106 if (!isNaN(lineNumber) && lineNumber >= 0) | 109 if (!isNaN(lineNumber) && lineNumber >= 0) |
| 107 this._selectItemCallback(lineNumber, rule.columnNumber); | 110 this._selectItemCallback(lineNumber, rule.columnNumber); |
| 108 } | 111 } |
| 109 | |
| 110 /** | |
| 111 * @override | |
| 112 */ | |
| 113 dispose() { | |
| 114 this._cssParser.dispose(); | |
| 115 } | |
| 116 }; | 112 }; |
| OLD | NEW |