15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/* 25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2012 Google Inc. All rights reserved. 35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Redistribution and use in source and binary forms, with or without 55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * modification, are permitted provided that the following conditions are 65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * met: 75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 1. Redistributions of source code must retain the above copyright 95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * notice, this list of conditions and the following disclaimer. 105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 2. Redistributions in binary form must reproduce the above 125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * copyright notice, this list of conditions and the following disclaimer 135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * in the documentation and/or other materials provided with the 145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * distribution. 155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY GOOGLE INC. AND ITS CONTRIBUTORS 175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GOOGLE INC. 205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor 315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @extends {WebInspector.SourceFrame} 32a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.UISourceCode} uiSourceCode 335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.UISourceCodeFrame = function(uiSourceCode) 355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._uiSourceCode = uiSourceCode; 375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.SourceFrame.call(this, this._uiSourceCode); 38bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) WebInspector.settings.textEditorAutocompletion.addChangeListener(this._enableAutocompletionIfNeeded, this); 39bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) this._enableAutocompletionIfNeeded(); 4093ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) 415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._uiSourceCode.addEventListener(WebInspector.UISourceCode.Events.WorkingCopyChanged, this._onWorkingCopyChanged, this); 425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._uiSourceCode.addEventListener(WebInspector.UISourceCode.Events.WorkingCopyCommitted, this._onWorkingCopyCommitted, this); 438abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) this._updateStyle(); 445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.UISourceCodeFrame.prototype = { 4709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) /** 4809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @return {!WebInspector.UISourceCode} 4909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) */ 5009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) uiSourceCode: function() 5109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) { 5209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) return this._uiSourceCode; 5309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) }, 5409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 55bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) _enableAutocompletionIfNeeded: function() 56bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) { 57bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) this.textEditor.setCompletionDictionary(WebInspector.settings.textEditorAutocompletion.get() ? new WebInspector.SampleCompletionDictionary() : null); 58bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) }, 59bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) 60926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) wasShown: function() 61926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 62926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) WebInspector.SourceFrame.prototype.wasShown.call(this); 63926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._boundWindowFocused = this._windowFocused.bind(this); 64926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) window.addEventListener("focus", this._boundWindowFocused, false); 65926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._checkContentUpdated(); 66926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 67926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 68926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) willHide: function() 69926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 70926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) WebInspector.SourceFrame.prototype.willHide.call(this); 71926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) window.removeEventListener("focus", this._boundWindowFocused, false); 72926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) delete this._boundWindowFocused; 7353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this._uiSourceCode.removeWorkingCopyGetter(); 74926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 75926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @return {boolean} 785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) canEditSource: function() 805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 81f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu var projectType = this._uiSourceCode.project().type(); 82f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu if (projectType === WebInspector.projectTypes.Debugger || projectType === WebInspector.projectTypes.Formatter) 83f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu return false; 84f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu if (projectType === WebInspector.projectTypes.Network && this._uiSourceCode.contentType() === WebInspector.resourceTypes.Document) 85f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu return false; 86f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu return true; 87926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 88926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 89926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) _windowFocused: function(event) 90926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 91926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._checkContentUpdated(); 92926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 93926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 94926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) _checkContentUpdated: function() 95926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 96926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (!this.loaded || !this.isShowing()) 97926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return; 98926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._uiSourceCode.checkContentUpdated(); 995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) commitEditing: function() 1025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!this._uiSourceCode.isDirty()) 1045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 1055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this._muteSourceCodeEvents = true; 107c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this._uiSourceCode.commitWorkingCopy(); 10853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) delete this._muteSourceCodeEvents; 1095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) onTextChanged: function(oldRange, newRange) 1125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 113926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) WebInspector.SourceFrame.prototype.onTextChanged.call(this, oldRange, newRange); 11453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) if (this._isSettingContent) 11553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) return; 11653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this._muteSourceCodeEvents = true; 11753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) if (this._textEditor.isClean()) 11853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this._uiSourceCode.resetWorkingCopy(); 11953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) else 12053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this._uiSourceCode.setWorkingCopyGetter(this._textEditor.text.bind(this._textEditor)); 12153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) delete this._muteSourceCodeEvents; 1225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 125a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.Event} event 1265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 1275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _onWorkingCopyChanged: function(event) 1285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 12953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) if (this._muteSourceCodeEvents) 13053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) return; 1315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._innerSetContent(this._uiSourceCode.workingCopy()); 13253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this.onUISourceCodeContentChanged(); 1335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 136a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.Event} event 1375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 1385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _onWorkingCopyCommitted: function(event) 1395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 140e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch if (!this._muteSourceCodeEvents) { 141e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch this._innerSetContent(this._uiSourceCode.workingCopy()); 142e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch this.onUISourceCodeContentChanged(); 143e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch } 14453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this._textEditor.markClean(); 1458abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) this._updateStyle(); 146197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch WebInspector.notifications.dispatchEventToListeners(WebInspector.UserMetrics.UserAction, { 147197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch action: WebInspector.UserMetrics.UserActionNames.FileSaved, 148197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch url: this._uiSourceCode.url 149197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch }); 1508abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) }, 1518abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) 1528abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) _updateStyle: function() 1538abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) { 154d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) this.element.classList.toggle("source-frame-unsaved-committed-changes", this._uiSourceCode.hasUnsavedCommittedChanges()); 1555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) onUISourceCodeContentChanged: function() 158926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 159926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 160926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 161926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 162926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {string} content 163926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 1645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _innerSetContent: function(content) 1655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 16653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this._isSettingContent = true; 1671e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) this.setContent(content); 16853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) delete this._isSettingContent; 1695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) populateTextAreaContextMenu: function(contextMenu, lineNumber) 1725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.SourceFrame.prototype.populateTextAreaContextMenu.call(this, contextMenu, lineNumber); 1745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) contextMenu.appendApplicableItems(this._uiSourceCode); 1755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) contextMenu.appendSeparator(); 1765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 178c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) /** 179c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {!Array.<!WebInspector.UISourceCodeFrame.Infobar|undefined>} infobars 180c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) */ 181c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) attachInfobars: function(infobars) 182c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) { 183c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) for (var i = infobars.length - 1; i >= 0; --i) { 184c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) var infobar = infobars[i]; 185c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) if (!infobar) 186c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) continue; 187c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this.element.insertBefore(infobar.element, this.element.children[0]); 188c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) infobar._attached(this); 189c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) } 190c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this.doResize(); 191c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) }, 192c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 193926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) dispose: function() 194926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 195d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) WebInspector.settings.textEditorAutocompletion.removeChangeListener(this._enableAutocompletionIfNeeded, this); 196d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) this._textEditor.dispose(); 197926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this.detach(); 198926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 199926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 2005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) __proto__: WebInspector.SourceFrame.prototype 2015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 202c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 203c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)/** 204c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @constructor 2057242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci * @param {!WebInspector.UISourceCodeFrame.Infobar.Level} level 206c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {string} message 207c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) */ 2087242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano TucciWebInspector.UISourceCodeFrame.Infobar = function(level, message) 209c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles){ 2107242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci this.element = document.createElementWithClass("div", "source-frame-infobar source-frame-infobar-" + level); 211c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this._mainRow = this.element.createChild("div", "source-frame-infobar-main-row"); 212c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this._detailsContainer = this.element.createChild("span", "source-frame-infobar-details-container"); 213c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 2147242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci this._mainRow.createChild("span", "source-frame-infobar-icon"); 215c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this._mainRow.createChild("span", "source-frame-infobar-row-message").textContent = message; 216c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 217c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this._toggleElement = this._mainRow.createChild("div", "source-frame-infobar-toggle source-frame-infobar-link"); 218c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this._toggleElement.addEventListener("click", this._onToggleDetails.bind(this), false); 2197242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 2207242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci this._closeElement = this._mainRow.createChild("div", "close-button"); 2217242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci this._closeElement.addEventListener("click", this._onClose.bind(this), false); 2227242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 223c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this._updateToggleElement(); 224c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} 225c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 2267242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci/** 2277242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci * @enum {string} 2287242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci */ 2297242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano TucciWebInspector.UISourceCodeFrame.Infobar.Level = { 2307242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci Info: "info", 2317242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci Warning: "warning", 2327242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci Error: "error", 2337242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci}; 2347242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 235c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)WebInspector.UISourceCodeFrame.Infobar.prototype = { 236c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) _onResize: function() 237c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) { 238c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) if (this._uiSourceCodeFrame) 239c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this._uiSourceCodeFrame.doResize(); 240c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) }, 241c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 242c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) _onToggleDetails: function() 243c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) { 244c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this._toggled = !this._toggled; 245c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this._updateToggleElement(); 246c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this._onResize(); 247c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) }, 2487242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 2497242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci _onClose: function() 2507242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci { 2517242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci this.dispose(); 2527242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci }, 253c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 254c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) _updateToggleElement: function() 255c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) { 256c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this._toggleElement.textContent = this._toggled ? WebInspector.UIString("less") : WebInspector.UIString("more"); 257c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this._detailsContainer.classList.toggle("hidden", !this._toggled); 258c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) }, 259c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 260c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) /** 261c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {!WebInspector.UISourceCodeFrame} uiSourceCodeFrame 262c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) */ 263c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) _attached: function(uiSourceCodeFrame) 264c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) { 265c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this._uiSourceCodeFrame = uiSourceCodeFrame; 266c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) }, 267c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 268c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) /** 269c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {string=} message 270c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @return {!Element} 271c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) */ 272c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) createDetailsRowMessage: function(message) 273c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) { 274c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) var infobarDetailsRow = this._detailsContainer.createChild("div", "source-frame-infobar-details-row"); 275c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) var detailsRowMessage = infobarDetailsRow.createChild("span", "source-frame-infobar-row-message"); 276c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) detailsRowMessage.textContent = message || ""; 277c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) return detailsRowMessage; 278c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) }, 279c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 280c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) dispose: function() 281c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) { 282c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this.element.remove(); 283c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this._onResize(); 284c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) delete this._uiSourceCodeFrame; 285c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) } 286c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} 287