15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/* 2926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * Copyright (C) 2013 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) * * Redistributions of source code must retain the above copyright 95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * notice, this list of conditions and the following disclaimer. 105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * * Redistributions in binary form must reproduce the above 115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * copyright notice, this list of conditions and the following disclaimer 125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * in the documentation and/or other materials provided with the 135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * distribution. 145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * * Neither the name of Google Inc. nor the names of its 155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * contributors may be used to endorse or promote products derived from 165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * this software without specific prior written permission. 175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 31f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)importScript("EditFileSystemDialog.js"); 32f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) 335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor 355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {!function()} onHide 365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @extends {WebInspector.HelpScreen} 375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.SettingsScreen = function(onHide) 395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.HelpScreen.call(this); 415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.element.id = "settings-screen"; 425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** @type {function()} */ 445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._onHide = onHide; 455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._tabbedPane = new WebInspector.TabbedPane(); 47a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) this._tabbedPane.element.classList.add("help-window-main"); 48926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var settingsLabelElement = document.createElement("div"); 49926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) settingsLabelElement.className = "help-window-label"; 50926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) settingsLabelElement.createTextChild(WebInspector.UIString("Settings")); 51926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._tabbedPane.element.insertBefore(settingsLabelElement, this._tabbedPane.element.firstChild); 525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._tabbedPane.element.appendChild(this._createCloseButton()); 535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._tabbedPane.appendTab(WebInspector.SettingsScreen.Tabs.General, WebInspector.UIString("General"), new WebInspector.GenericSettingsTab()); 54e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles) this._tabbedPane.appendTab(WebInspector.SettingsScreen.Tabs.Workspace, WebInspector.UIString("Workspace"), new WebInspector.WorkspaceSettingsTab()); 555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (WebInspector.experimentsSettings.experimentsEnabled) 565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._tabbedPane.appendTab(WebInspector.SettingsScreen.Tabs.Experiments, WebInspector.UIString("Experiments"), new WebInspector.ExperimentsSettingsTab()); 575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._tabbedPane.appendTab(WebInspector.SettingsScreen.Tabs.Shortcuts, WebInspector.UIString("Shortcuts"), WebInspector.shortcutsScreen.createShortcutsTabView()); 58926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._tabbedPane.shrinkableTabs = false; 59926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._tabbedPane.verticalTabLayout = true; 605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._lastSelectedTabSetting = WebInspector.settings.createSetting("lastSelectedSettingsTab", WebInspector.SettingsScreen.Tabs.General); 625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.selectTab(this._lastSelectedTabSetting.get()); 635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._tabbedPane.addEventListener(WebInspector.TabbedPane.EventTypes.TabSelected, this._tabSelected, this); 64d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) this.element.addEventListener("keydown", this._keyDown.bind(this), false); 65d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) this._developerModeCounter = 0; 665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 68e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)/** 698abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) * @param {number} min 708abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) * @param {number} max 718abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) * @param {string} text 728abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) * @return {?string} 738abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) */ 748abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles)WebInspector.SettingsScreen.integerValidator = function(min, max, text) 758abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles){ 76a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) var value = Number(text); 778abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) if (isNaN(value)) 7809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) return WebInspector.UIString("Invalid number format"); 798abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) if (value < min || value > max) 8009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) return WebInspector.UIString("Value is out of range [%d, %d]", min, max); 818abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) return null; 828abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles)} 838abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) 845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.SettingsScreen.Tabs = { 85926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) General: "general", 86f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) Overrides: "overrides", 87926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) Workspace: "workspace", 88926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) Experiments: "experiments", 89926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) Shortcuts: "shortcuts" 905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.SettingsScreen.prototype = { 935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} tabId 955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) selectTab: function(tabId) 975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._tabbedPane.selectTab(tabId); 995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 102a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.Event} event 1035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 1045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _tabSelected: function(event) 1055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._lastSelectedTabSetting.set(this._tabbedPane.selectedTabId); 1075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 1105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @override 1115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 1125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) wasShown: function() 1135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._tabbedPane.show(this.element); 1155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.HelpScreen.prototype.wasShown.call(this); 1165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 1195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @override 12009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @return {boolean} 1215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 1225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) isClosingKey: function(keyCode) 1235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return [ 1255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.KeyboardShortcut.Keys.Enter.code, 1265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.KeyboardShortcut.Keys.Esc.code, 1275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ].indexOf(keyCode) >= 0; 1285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 1315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @override 1325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 1335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) willHide: function() 1345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._onHide(); 1365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.HelpScreen.prototype.willHide.call(this); 1375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 139d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) /** 140d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) * @param {?Event} event 141d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) */ 142d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) _keyDown: function(event) 143d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) { 144d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) var shiftKeyCode = 16; 145d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) if (event.keyCode === shiftKeyCode && ++this._developerModeCounter > 5) 146d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) this.element.classList.add("settings-developer-mode"); 147d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) }, 148d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) 1495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) __proto__: WebInspector.HelpScreen.prototype 1505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 1535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor 154d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @extends {WebInspector.VBox} 155926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {string} name 156926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {string=} id 1575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 158926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)WebInspector.SettingsTab = function(name, id) 1595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 160d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) WebInspector.VBox.call(this); 16109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) this.element.classList.add("settings-tab-container"); 162926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (id) 163926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this.element.id = id; 164926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var header = this.element.createChild("header"); 165926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) header.createChild("h3").appendChild(document.createTextNode(name)); 166926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this.containerElement = this.element.createChild("div", "help-container-wrapper").createChild("div", "settings-tab help-content help-container"); 1675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.SettingsTab.prototype = { 1705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 1715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string=} name 1725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @return {!Element} 1735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 1745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _appendSection: function(name) 1755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 176926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var block = this.containerElement.createChild("div", "help-block"); 1775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (name) 1785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) block.createChild("div", "help-section-title").textContent = name; 1795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return block; 1805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _createSelectSetting: function(name, options, setting) 1835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 184e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) var p = document.createElement("p"); 185e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) var labelElement = p.createChild("label"); 186e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) labelElement.textContent = name; 1875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 188e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) var select = p.createChild("select"); 1895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var settingValue = setting.get(); 1905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (var i = 0; i < options.length; ++i) { 1925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var option = options[i]; 1935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) select.add(new Option(option[0], option[1])); 1945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (settingValue === option[1]) 1955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) select.selectedIndex = i; 1965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function changeListener(e) 1995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 20006f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) // Don't use e.target.value to avoid conversion of the value to string. 20106f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) setting.set(options[select.selectedIndex][1]); 2025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 2035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) select.addEventListener("change", changeListener, false); 2055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return p; 2065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 208d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) __proto__: WebInspector.VBox.prototype 2095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 2105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 2125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor 2135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @extends {WebInspector.SettingsTab} 2145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 2155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.GenericSettingsTab = function() 2165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 21753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) WebInspector.SettingsTab.call(this, WebInspector.UIString("General"), "general-tab-content"); 2185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 219aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._populateSectionsFromExtensions(); 22009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 221aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch var restoreDefaults = this._appendSection().createChild("input", "settings-tab-text-button"); 22209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) restoreDefaults.type = "button"; 22309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) restoreDefaults.value = WebInspector.UIString("Restore defaults and reload"); 2245d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) restoreDefaults.addEventListener("click", restoreAndReload, false); 22509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 22609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) function restoreAndReload() 22709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) { 22809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) if (window.localStorage) 22909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) window.localStorage.clear(); 23009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) WebInspector.reload(); 23109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) } 2325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 2335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.GenericSettingsTab.prototype = { 235aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch _populateSectionsFromExtensions: function() 236aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch { 237aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch /** @const */ 238aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch var explicitSectionOrder = ["", "Appearance", "Elements", "Sources", "Profiler", "Console", "Extensions"]; 239aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch 240aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch var allExtensions = WebInspector.moduleManager.extensions("ui-setting"); 241aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch 242aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch /** @type {!StringMultimap.<!WebInspector.ModuleManager.Extension>} */ 243aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch var extensionsBySectionId = new StringMultimap(); 244aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch /** @type {!StringMultimap.<!WebInspector.ModuleManager.Extension>} */ 245aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch var childSettingExtensionsByParentName = new StringMultimap(); 246aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch 247aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch allExtensions.forEach(function(extension) { 248aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch var descriptor = extension.descriptor(); 249aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch var sectionName = descriptor["section"] || ""; 250aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch if (!sectionName && descriptor["parentSettingName"]) { 251aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch childSettingExtensionsByParentName.put(descriptor["parentSettingName"], extension); 252aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch return; 253aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch } 254aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch extensionsBySectionId.put(sectionName, extension); 255aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch }); 256aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch 257aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch var sectionIds = extensionsBySectionId.keys(); 258aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch var explicitlyOrderedSections = {}; 259aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch for (var i = 0; i < explicitSectionOrder.length; ++i) { 260aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch explicitlyOrderedSections[explicitSectionOrder[i]] = true; 261f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) var extensions = extensionsBySectionId.get(explicitSectionOrder[i]); 262f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) if (!extensions.size()) 263aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch continue; 264d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) this._addSectionWithExtensionProvidedSettings(explicitSectionOrder[i], extensions.values(), childSettingExtensionsByParentName); 265aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch } 266aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch for (var i = 0; i < sectionIds.length; ++i) { 267aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch if (explicitlyOrderedSections[sectionIds[i]]) 268aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch continue; 269f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) this._addSectionWithExtensionProvidedSettings(sectionIds[i], extensionsBySectionId.get(sectionIds[i]).values(), childSettingExtensionsByParentName); 270aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch } 271aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch }, 272aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch 273aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch /** 274aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @param {string} sectionName 275aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @param {!Array.<!WebInspector.ModuleManager.Extension>} extensions 276aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @param {!StringMultimap.<!WebInspector.ModuleManager.Extension>} childSettingExtensionsByParentName 277aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch */ 278aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch _addSectionWithExtensionProvidedSettings: function(sectionName, extensions, childSettingExtensionsByParentName) 2795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 280aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch var uiSectionName = sectionName && WebInspector.UIString(sectionName); 281aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch var sectionElement = this._appendSection(uiSectionName); 282aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch extensions.forEach(processSetting.bind(this, null)); 283aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch 28409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) /** 285aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @param {?Element} parentFieldset 286aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @param {!WebInspector.ModuleManager.Extension} extension 28709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @this {WebInspector.GenericSettingsTab} 28809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) */ 289aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch function processSetting(parentFieldset, extension) 2905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 291aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch var descriptor = extension.descriptor(); 292aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch var experimentName = descriptor["experiment"]; 293aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch if (experimentName && (!WebInspector.experimentsSettings[experimentName] || !WebInspector.experimentsSettings[experimentName].isEnabled())) 2945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 2955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 296aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch var settingName = descriptor["settingName"]; 297aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch var setting = WebInspector.settings[settingName]; 298aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch var instance = extension.instance(); 299aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch var settingControl; 300aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch if (instance && descriptor["settingType"] === "custom") { 301aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch settingControl = instance.settingElement(); 302aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch if (!settingControl) 303aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch return; 304aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch } 305aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch if (!settingControl) { 306aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch var uiTitle = WebInspector.UIString(descriptor["title"]); 307aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch settingControl = createSettingControl.call(this, uiTitle, setting, descriptor, instance); 308aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch } 309aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch if (settingName) { 310f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) var childSettings = childSettingExtensionsByParentName.get(settingName); 311f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) if (childSettings.size()) { 312aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch var fieldSet = WebInspector.SettingsUI.createSettingFieldset(setting); 313aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch settingControl.appendChild(fieldSet); 314d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) childSettings.values().forEach(function(item) { processSetting.call(this, fieldSet, item); }, this); 315aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch } 316aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch } 317aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch var containerElement = parentFieldset || sectionElement; 318aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch containerElement.appendChild(settingControl); 3195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 3205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 321aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch /** 322aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @param {string} uiTitle 323aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @param {!WebInspector.Setting} setting 324aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @param {!Object} descriptor 325aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @param {?Object} instance 326aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @return {!Element} 327aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @this {WebInspector.GenericSettingsTab} 328aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch */ 329aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch function createSettingControl(uiTitle, setting, descriptor, instance) 330aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch { 331aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch switch (descriptor["settingType"]) { 332aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch case "checkbox": 333aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch return WebInspector.SettingsUI.createSettingCheckbox(uiTitle, setting); 334aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch case "select": 335aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch var descriptorOptions = descriptor["options"] 336aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch var options = new Array(descriptorOptions.length); 337aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch for (var i = 0; i < options.length; ++i) { 338aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch // The third array item flags that the option name is "raw" (non-i18n-izable). 339aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch var optionName = descriptorOptions[i][2] ? descriptorOptions[i][0] : WebInspector.UIString(descriptorOptions[i][0]); 340aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch options[i] = [WebInspector.UIString(descriptorOptions[i][0]), descriptorOptions[i][1]]; 341aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch } 342aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch return this._createSelectSetting(uiTitle, options, setting); 343aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch default: 344aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch throw "Invalid setting type: " + descriptor["settingType"]; 345aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch } 346aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch } 347f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) }, 348f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) 349a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) /** 350a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {?Element} p 351a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) */ 352a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) _appendDrawerNote: function(p) 353a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) { 354a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) var noteElement = p.createChild("div", "help-field-note"); 355a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) noteElement.createTextChild("Hit "); 356a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) noteElement.createChild("span", "help-key").textContent = "Esc"; 357a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) noteElement.createTextChild(WebInspector.UIString(" or click the")); 358a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) noteElement.appendChild(new WebInspector.StatusBarButton(WebInspector.UIString("Drawer"), "console-status-bar-item").element); 359a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) noteElement.createTextChild(WebInspector.UIString("toolbar item")); 360a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) }, 361a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) 3625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) __proto__: WebInspector.SettingsTab.prototype 3635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 3645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 3665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor 3675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @extends {WebInspector.SettingsTab} 3685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 369926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)WebInspector.WorkspaceSettingsTab = function() 370926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 371926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) WebInspector.SettingsTab.call(this, WebInspector.UIString("Workspace"), "workspace-tab-content"); 372521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) WebInspector.isolatedFileSystemManager.addEventListener(WebInspector.IsolatedFileSystemManager.Events.FileSystemAdded, this._fileSystemAdded, this); 373521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) WebInspector.isolatedFileSystemManager.addEventListener(WebInspector.IsolatedFileSystemManager.Events.FileSystemRemoved, this._fileSystemRemoved, this); 374c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) 375c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) this._commonSection = this._appendSection(WebInspector.UIString("Common")); 376aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch var folderExcludePatternInput = WebInspector.SettingsUI.createSettingInputField(WebInspector.UIString("Folder exclude pattern"), WebInspector.settings.workspaceFolderExcludePattern, false, 0, "270px", WebInspector.SettingsUI.regexValidator); 377c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) this._commonSection.appendChild(folderExcludePatternInput); 378521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) 379521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) this._fileSystemsSection = this._appendSection(WebInspector.UIString("Folders")); 380521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) this._fileSystemsListContainer = this._fileSystemsSection.createChild("p", "settings-list-container"); 381c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) 382521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) this._addFileSystemRowElement = this._fileSystemsSection.createChild("div"); 383f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) var addFileSystemButton = this._addFileSystemRowElement.createChild("input", "settings-tab-text-button"); 384521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) addFileSystemButton.type = "button"; 385c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) addFileSystemButton.value = WebInspector.UIString("Add folder\u2026"); 3865d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) addFileSystemButton.addEventListener("click", this._addFileSystemClicked.bind(this), false); 387521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) 388f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) this._editFileSystemButton = this._addFileSystemRowElement.createChild("input", "settings-tab-text-button"); 389c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) this._editFileSystemButton.type = "button"; 390c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) this._editFileSystemButton.value = WebInspector.UIString("Edit\u2026"); 3915d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) this._editFileSystemButton.addEventListener("click", this._editFileSystemClicked.bind(this), false); 392c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) this._updateEditFileSystemButtonState(); 393c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) 394926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._reset(); 395926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 3965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 397926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)WebInspector.WorkspaceSettingsTab.prototype = { 398926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) wasShown: function() 3995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 400926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) WebInspector.SettingsTab.prototype.wasShown.call(this); 401926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._reset(); 4025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 404926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) _reset: function() 4055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 406521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) this._resetFileSystems(); 4075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 409521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) _resetFileSystems: function() 4105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 411521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) this._fileSystemsListContainer.removeChildren(); 412521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) var fileSystemPaths = WebInspector.isolatedFileSystemManager.mapping().fileSystemPaths(); 413521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) delete this._fileSystemsList; 4145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 415521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) if (!fileSystemPaths.length) { 416521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) var noFileSystemsMessageElement = this._fileSystemsListContainer.createChild("div", "no-file-systems-message"); 417521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) noFileSystemsMessageElement.textContent = WebInspector.UIString("You have no file systems added."); 418521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) return; 419521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) } 4205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 421c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) this._fileSystemsList = new WebInspector.SettingsList(["path"], this._renderFileSystem.bind(this)); 422a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) this._fileSystemsList.element.classList.add("file-systems-list"); 423c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) this._fileSystemsList.addEventListener(WebInspector.SettingsList.Events.Selected, this._fileSystemSelected.bind(this)); 424c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) this._fileSystemsList.addEventListener(WebInspector.SettingsList.Events.Removed, this._fileSystemRemovedfromList.bind(this)); 425c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) this._fileSystemsList.addEventListener(WebInspector.SettingsList.Events.DoubleClicked, this._fileSystemDoubleClicked.bind(this)); 426521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) this._fileSystemsListContainer.appendChild(this._fileSystemsList.element); 427926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) for (var i = 0; i < fileSystemPaths.length; ++i) 428521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) this._fileSystemsList.addItem(fileSystemPaths[i]); 429c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) this._updateEditFileSystemButtonState(); 430c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) }, 431c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) 432c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) _updateEditFileSystemButtonState: function() 433c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) { 434c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) this._editFileSystemButton.disabled = !this._selectedFileSystemPath(); 4355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 438a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.Event} event 4395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 440c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) _fileSystemSelected: function(event) 4415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 442c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) this._updateEditFileSystemButtonState(); 443521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) }, 444521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) 445c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) /** 446a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.Event} event 447c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) */ 448c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) _fileSystemDoubleClicked: function(event) 449521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) { 450c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) var id = /** @type{?string} */ (event.data); 451c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) this._editFileSystem(id); 4525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4545d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) _editFileSystemClicked: function() 4555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 456c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) this._editFileSystem(this._selectedFileSystemPath()); 457c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) }, 458c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) 459c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) /** 460c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * @param {?string} id 461c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) */ 462c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) _editFileSystem: function(id) 463c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) { 464d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) WebInspector.EditFileSystemDialog.show(WebInspector.inspectorView.element, id); 4655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 468a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {function(?Event)} handler 469a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!Element} 4705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 471926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) _createRemoveButton: function(handler) 4725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 473926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var removeButton = document.createElement("button"); 474a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) removeButton.classList.add("button"); 475a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) removeButton.classList.add("remove-item-button"); 476926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) removeButton.value = WebInspector.UIString("Remove"); 477521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) if (handler) 478521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) removeButton.addEventListener("click", handler, false); 479521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) else 480521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) removeButton.disabled = true; 481926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return removeButton; 4825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 485a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Element} columnElement 486521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) * @param {string} column 487521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) * @param {?string} id 4885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 489521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) _renderFileSystem: function(columnElement, column, id) 4905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 491c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) if (!id) 492c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) return ""; 493521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) var fileSystemPath = id; 494521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) var textElement = columnElement.createChild("span", "list-column-text"); 495521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) var pathElement = textElement.createChild("span", "file-system-path"); 496521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) pathElement.title = fileSystemPath; 497521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) 498c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) const maxTotalPathLength = 55; 499521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) const maxFolderNameLength = 30; 5003c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch 5013c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch var lastIndexOfSlash = fileSystemPath.lastIndexOf(WebInspector.isWin() ? "\\" : "/"); 502521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) var folderName = fileSystemPath.substr(lastIndexOfSlash + 1); 5033c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch var folderPath = fileSystemPath.substr(0, lastIndexOfSlash + 1); 504521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) folderPath = folderPath.trimMiddle(maxTotalPathLength - Math.min(maxFolderNameLength, folderName.length)); 505521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) folderName = folderName.trimMiddle(maxFolderNameLength); 506521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) 507f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) var folderPathElement = pathElement.createChild("span"); 5083c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch folderPathElement.textContent = folderPath; 509f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) 510521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) var nameElement = pathElement.createChild("span", "file-system-path-name"); 511521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) nameElement.textContent = folderName; 5125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 5135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 514926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 515a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.Event} event 516926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 517c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) _fileSystemRemovedfromList: function(event) 5185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 519c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) var id = /** @type{?string} */ (event.data); 520521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) if (!id) 521521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) return; 522521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) WebInspector.isolatedFileSystemManager.removeFileSystem(id); 523521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) }, 5245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 525521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) _addFileSystemClicked: function() 526521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) { 527521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) WebInspector.isolatedFileSystemManager.addFileSystem(); 528521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) }, 5295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 530521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) _fileSystemAdded: function(event) 531521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) { 532a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) var fileSystem = /** @type {!WebInspector.IsolatedFileSystem} */ (event.data); 533521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) if (!this._fileSystemsList) 534521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) this._reset(); 535521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) else 536521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) this._fileSystemsList.addItem(fileSystem.path()); 537521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) }, 53853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 539521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) _fileSystemRemoved: function(event) 540521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) { 541a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) var fileSystem = /** @type {!WebInspector.IsolatedFileSystem} */ (event.data); 542521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) var selectedFileSystemPath = this._selectedFileSystemPath(); 543c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) if (this._fileSystemsList.itemForId(fileSystem.path())) 544c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) this._fileSystemsList.removeItem(fileSystem.path()); 545521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) if (!this._fileSystemsList.itemIds().length) 546521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) this._reset(); 547c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) this._updateEditFileSystemButtonState(); 548521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) }, 549521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) 550521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) _selectedFileSystemPath: function() 551521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) { 552521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) return this._fileSystemsList ? this._fileSystemsList.selectedId() : null; 553521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) }, 554521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) 5555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) __proto__: WebInspector.SettingsTab.prototype 5565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 5575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 55853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 55953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)/** 56053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) * @constructor 56153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) * @extends {WebInspector.SettingsTab} 56253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) */ 5635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.ExperimentsSettingsTab = function() 5645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 565926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) WebInspector.SettingsTab.call(this, WebInspector.UIString("Experiments"), "experiments-tab-content"); 5665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var experiments = WebInspector.experimentsSettings.experiments; 5685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (experiments.length) { 5695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var experimentsSection = this._appendSection(); 5705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) experimentsSection.appendChild(this._createExperimentsWarningSubsection()); 5715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (var i = 0; i < experiments.length; ++i) 5725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) experimentsSection.appendChild(this._createExperimentCheckbox(experiments[i])); 5735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 5745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 5755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.ExperimentsSettingsTab.prototype = { 5775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 578a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!Element} element 5795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 5805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _createExperimentsWarningSubsection: function() 5815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 5825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var subsection = document.createElement("div"); 5835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var warning = subsection.createChild("span", "settings-experiments-warning-subsection-warning"); 5845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) warning.textContent = WebInspector.UIString("WARNING:"); 5855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) subsection.appendChild(document.createTextNode(" ")); 5865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var message = subsection.createChild("span", "settings-experiments-warning-subsection-message"); 5875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) message.textContent = WebInspector.UIString("These experiments could be dangerous and may require restart."); 5885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return subsection; 5895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 5905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _createExperimentCheckbox: function(experiment) 5925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 5935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var input = document.createElement("input"); 5945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) input.type = "checkbox"; 5955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) input.name = experiment.name; 5965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) input.checked = experiment.isEnabled(); 5975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function listener() 5985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 5995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) experiment.setEnabled(input.checked); 6005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 6015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) input.addEventListener("click", listener, false); 6025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var p = document.createElement("p"); 604d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) p.className = experiment.hidden && !experiment.isEnabled() ? "settings-experiment-hidden" : ""; 605d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) var label = p.createChild("label"); 6065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) label.appendChild(input); 6075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) label.appendChild(document.createTextNode(WebInspector.UIString(experiment.title))); 6085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) p.appendChild(label); 6095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return p; 6105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 6115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) __proto__: WebInspector.SettingsTab.prototype 6135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 6145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 6165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor 6175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 6185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.SettingsController = function() 6195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 6205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** @type {?WebInspector.SettingsScreen} */ 6215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._settingsScreen; 622f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) 623f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) window.addEventListener("resize", this._resize.bind(this), true); 6245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 6255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.SettingsController.prototype = 6275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 6285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _onHideSettingsScreen: function() 6295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 630926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) delete this._settingsScreenVisible; 6315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 6325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 6345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string=} tabId 6355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 6365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) showSettingsScreen: function(tabId) 6375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 6385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!this._settingsScreen) 6395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._settingsScreen = new WebInspector.SettingsScreen(this._onHideSettingsScreen.bind(this)); 6405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (tabId) 6425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._settingsScreen.selectTab(tabId); 6435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._settingsScreen.showModal(); 645926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._settingsScreenVisible = true; 6465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 6475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 648f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) _resize: function() 6495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 6505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this._settingsScreen && this._settingsScreen.isShowing()) 6515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._settingsScreen.doResize(); 6525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 6535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 654521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) 655521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)/** 656521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) * @constructor 65707a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch * @implements {WebInspector.ActionDelegate} 65807a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch */ 65907a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben MurdochWebInspector.SettingsController.SettingsScreenActionDelegate = function() { } 66007a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 66107a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben MurdochWebInspector.SettingsController.SettingsScreenActionDelegate.prototype = { 66207a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch /** 66307a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch * @return {boolean} 66407a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch */ 66507a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch handleAction: function() 66607a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch { 667f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) WebInspector._settingsController.showSettingsScreen(WebInspector.SettingsScreen.Tabs.General); 66807a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch return true; 66907a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch } 67007a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch} 67107a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 67207a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch/** 67307a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch * @constructor 674c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * @extends {WebInspector.Object} 675f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) * @param {!Array.<string>} columns 676a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {function(!Element, string, ?string)} itemRenderer 677521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) */ 678c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)WebInspector.SettingsList = function(columns, itemRenderer) 679521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles){ 680521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) this.element = document.createElement("div"); 681a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) this.element.classList.add("settings-list"); 682521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) this.element.tabIndex = -1; 683521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) this._itemRenderer = itemRenderer; 684521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) this._listItems = {}; 685521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) this._ids = []; 686521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) this._columns = columns; 687521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)} 688521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) 689c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)WebInspector.SettingsList.Events = { 690c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) Selected: "Selected", 691c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) Removed: "Removed", 692c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) DoubleClicked: "DoubleClicked", 693c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)} 694c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) 695521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)WebInspector.SettingsList.prototype = { 696521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) /** 697521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) * @param {?string} itemId 698c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * @param {?string=} beforeId 699a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!Element} 700521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) */ 701521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) addItem: function(itemId, beforeId) 702521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) { 703521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) var listItem = document.createElement("div"); 704521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) listItem._id = itemId; 705a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) listItem.classList.add("settings-list-item"); 706521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) if (typeof beforeId !== undefined) 707521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) this.element.insertBefore(listItem, this._listItems[beforeId]); 708521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) else 709521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) this.element.appendChild(listItem); 710521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) 711521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) var listItemContents = listItem.createChild("div", "settings-list-item-contents"); 712521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) var listItemColumnsElement = listItemContents.createChild("div", "settings-list-item-columns"); 713521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) 714521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) listItem.columnElements = {}; 715521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) for (var i = 0; i < this._columns.length; ++i) { 716521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) var columnElement = listItemColumnsElement.createChild("div", "list-column"); 717521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) var columnId = this._columns[i]; 718521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) listItem.columnElements[columnId] = columnElement; 719521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) this._itemRenderer(columnElement, columnId, itemId); 720521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) } 721521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) var removeItemButton = this._createRemoveButton(removeItemClicked.bind(this)); 722521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) listItemContents.addEventListener("click", this.selectItem.bind(this, itemId), false); 723c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) listItemContents.addEventListener("dblclick", this._onDoubleClick.bind(this, itemId), false); 724521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) listItemContents.appendChild(removeItemButton); 725521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) 726521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) this._listItems[itemId] = listItem; 727521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) if (typeof beforeId !== undefined) 728521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) this._ids.splice(this._ids.indexOf(beforeId), 0, itemId); 729521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) else 730521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) this._ids.push(itemId); 731521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) 73209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) /** 73309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {?Event} event 73409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @this {WebInspector.SettingsList} 73509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) */ 736521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) function removeItemClicked(event) 737521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) { 738521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) removeItemButton.disabled = true; 739c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) this.removeItem(itemId); 740c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) this.dispatchEventToListeners(WebInspector.SettingsList.Events.Removed, itemId); 741521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) event.consume(); 742521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) } 743521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) 744521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) return listItem; 745521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) }, 746521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) 747521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) /** 748521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) * @param {?string} id 749521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) */ 750521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) removeItem: function(id) 751521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) { 752591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch this._listItems[id].remove(); 753521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) delete this._listItems[id]; 754521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) this._ids.remove(id); 755521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) if (id === this._selectedId) { 756521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) delete this._selectedId; 757521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) if (this._ids.length) 758521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) this.selectItem(this._ids[0]); 759521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) } 760521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) }, 761521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) 762521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) /** 763a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!Array.<?string>} 764521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) */ 765521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) itemIds: function() 766521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) { 767521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) return this._ids.slice(); 768521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) }, 769521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) 770521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) /** 771a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!Array.<string>} 772521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) */ 773521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) columns: function() 774521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) { 775521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) return this._columns.slice(); 776521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) }, 777521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) 778521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) /** 779521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) * @return {?string} 780521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) */ 781521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) selectedId: function() 782521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) { 783521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) return this._selectedId; 784521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) }, 785521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) 786521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) /** 787a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!Element} 788521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) */ 789521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) selectedItem: function() 790521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) { 791521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) return this._selectedId ? this._listItems[this._selectedId] : null; 792521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) }, 793521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) 794521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) /** 795521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) * @param {string} itemId 796a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!Element} 797521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) */ 798521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) itemForId: function(itemId) 799521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) { 800521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) return this._listItems[itemId]; 801521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) }, 802521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) 803521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) /** 804c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * @param {?string} id 8055d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) * @param {?Event=} event 806521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) */ 807c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) _onDoubleClick: function(id, event) 808521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) { 809c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) this.dispatchEventToListeners(WebInspector.SettingsList.Events.DoubleClicked, id); 810521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) }, 811521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) 812521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) /** 813521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) * @param {?string} id 8145d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) * @param {?Event=} event 815521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) */ 816521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) selectItem: function(id, event) 817521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) { 818521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) if (typeof this._selectedId !== "undefined") { 819a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) this._listItems[this._selectedId].classList.remove("selected"); 820521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) } 821521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) 822521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) this._selectedId = id; 823521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) if (typeof this._selectedId !== "undefined") { 824a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) this._listItems[this._selectedId].classList.add("selected"); 825521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) } 826c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) this.dispatchEventToListeners(WebInspector.SettingsList.Events.Selected, id); 827521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) if (event) 828521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) event.consume(); 829521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) }, 830521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) 831521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) /** 832a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {function(?Event)} handler 833a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!Element} 834521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) */ 835521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) _createRemoveButton: function(handler) 836521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) { 837521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) var removeButton = document.createElement("button"); 838a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) removeButton.classList.add("remove-item-button"); 839521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) removeButton.value = WebInspector.UIString("Remove"); 840521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) removeButton.addEventListener("click", handler, false); 841521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) return removeButton; 842c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) }, 843c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) 844c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) __proto__: WebInspector.Object.prototype 845521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)} 846521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) 847521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)/** 848521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) * @constructor 849521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) * @extends {WebInspector.SettingsList} 850f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) * @param {!Array.<string>} columns 851f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) * @param {function(string, string):string} valuesProvider 852a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {function(?string, !Object)} validateHandler 853a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {function(?string, !Object)} editHandler 854521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) */ 855c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)WebInspector.EditableSettingsList = function(columns, valuesProvider, validateHandler, editHandler) 856521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles){ 857c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) WebInspector.SettingsList.call(this, columns, this._renderColumn.bind(this)); 858521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) this._validateHandler = validateHandler; 859521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) this._editHandler = editHandler; 860521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) this._valuesProvider = valuesProvider; 861a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) /** @type {!Object.<string, !HTMLInputElement>} */ 862521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) this._addInputElements = {}; 863a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) /** @type {!Object.<string, !Object.<string, !HTMLInputElement>>} */ 864521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) this._editInputElements = {}; 865a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) /** @type {!Object.<string, !Object.<string, !HTMLSpanElement>>} */ 866521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) this._textElements = {}; 867521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) 868521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) this._addMappingItem = this.addItem(null); 869a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) this._addMappingItem.classList.add("item-editing"); 870a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) this._addMappingItem.classList.add("add-list-item"); 871521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)} 872521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) 873521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)WebInspector.EditableSettingsList.prototype = { 874521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) /** 875521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) * @param {?string} itemId 876c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * @param {?string=} beforeId 877a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!Element} 878521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) */ 879521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) addItem: function(itemId, beforeId) 880521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) { 881521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) var listItem = WebInspector.SettingsList.prototype.addItem.call(this, itemId, beforeId); 882a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) listItem.classList.add("editable"); 883521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) return listItem; 884521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) }, 885521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) 886521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) /** 887a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Element} columnElement 888521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) * @param {string} columnId 889521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) * @param {?string} itemId 890521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) */ 891521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) _renderColumn: function(columnElement, columnId, itemId) 892521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) { 893a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) columnElement.classList.add("settings-list-column-" + columnId); 894521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) var placeholder = (columnId === "url") ? WebInspector.UIString("URL prefix") : WebInspector.UIString("Folder path"); 895521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) if (itemId === null) { 8965d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) var inputElement = /** @type {!HTMLInputElement} */ (columnElement.createChild("input", "list-column-editor")); 897521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) inputElement.placeholder = placeholder; 8985d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) inputElement.addEventListener("blur", this._onAddMappingInputBlur.bind(this), false); 8995d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) inputElement.addEventListener("input", this._validateEdit.bind(this, itemId), false); 900521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) this._addInputElements[columnId] = inputElement; 901521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) return; 902521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) } 90309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) var validItemId = itemId; 904521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) 905521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) if (!this._editInputElements[itemId]) 906521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) this._editInputElements[itemId] = {}; 907521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) if (!this._textElements[itemId]) 908521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) this._textElements[itemId] = {}; 909521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) 910521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) var value = this._valuesProvider(itemId, columnId); 911521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) 9125d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) var textElement = /** @type {!HTMLSpanElement} */ (columnElement.createChild("span", "list-column-text")); 913521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) textElement.textContent = value; 914521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) textElement.title = value; 915521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) columnElement.addEventListener("click", rowClicked.bind(this), false); 916521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) this._textElements[itemId][columnId] = textElement; 917521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) 9185d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) var inputElement = /** @type {!HTMLInputElement} */ (columnElement.createChild("input", "list-column-editor")); 919521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) inputElement.value = value; 9205d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) inputElement.addEventListener("blur", this._editMappingBlur.bind(this, itemId), false); 9215d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) inputElement.addEventListener("input", this._validateEdit.bind(this, itemId), false); 922521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) columnElement.inputElement = inputElement; 923521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) this._editInputElements[itemId][columnId] = inputElement; 924521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) 92509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) /** 92609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {?Event} event 92709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @this {WebInspector.EditableSettingsList} 92809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) */ 929521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) function rowClicked(event) 930521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) { 931521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) if (itemId === this._editingId) 932521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) return; 933521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) event.consume(); 934521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) console.assert(!this._editingId); 93509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) this._editingId = validItemId; 93609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) var listItem = this.itemForId(validItemId); 937a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) listItem.classList.add("item-editing"); 93809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) var inputElement = event.target.inputElement || this._editInputElements[validItemId][this.columns()[0]]; 939521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) inputElement.focus(); 940521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) inputElement.select(); 941521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) } 942521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) }, 943521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) 944521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) /** 945521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) * @param {?string} itemId 946a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!Object} 947521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) */ 948521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) _data: function(itemId) 949521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) { 950521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) var inputElements = this._inputElements(itemId); 951521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) var data = {}; 952521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) var columns = this.columns(); 953521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) for (var i = 0; i < columns.length; ++i) 954521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) data[columns[i]] = inputElements[columns[i]].value; 955521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) return data; 956521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) }, 957521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) 958521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) /** 959521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) * @param {?string} itemId 960a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {?Object.<string, !HTMLInputElement>} 961521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) */ 962521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) _inputElements: function(itemId) 963521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) { 964521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) if (!itemId) 965521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) return this._addInputElements; 966a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) return this._editInputElements[itemId] || null; 967521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) }, 968521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) 969521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) /** 970521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) * @param {?string} itemId 971521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) * @return {boolean} 972521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) */ 973521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) _validateEdit: function(itemId) 974521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) { 975521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) var errorColumns = this._validateHandler(itemId, this._data(itemId)); 976521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) var hasChanges = this._hasChanges(itemId); 977521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) var columns = this.columns(); 978521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) for (var i = 0; i < columns.length; ++i) { 979521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) var columnId = columns[i]; 980521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) var inputElement = this._inputElements(itemId)[columnId]; 981521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) if (hasChanges && errorColumns.indexOf(columnId) !== -1) 982a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) inputElement.classList.add("editable-item-error"); 983521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) else 984a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) inputElement.classList.remove("editable-item-error"); 985521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) } 986521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) return !errorColumns.length; 987521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) }, 988521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) 989521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) /** 990521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) * @param {?string} itemId 991521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) * @return {boolean} 992521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) */ 993521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) _hasChanges: function(itemId) 994521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) { 995521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) var hasChanges = false; 996521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) var columns = this.columns(); 997521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) for (var i = 0; i < columns.length; ++i) { 998521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) var columnId = columns[i]; 999521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) var oldValue = itemId ? this._textElements[itemId][columnId].textContent : ""; 1000521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) var newValue = this._inputElements(itemId)[columnId].value; 1001521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) if (oldValue !== newValue) { 1002521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) hasChanges = true; 1003521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) break; 1004521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) } 1005521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) } 1006521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) return hasChanges; 1007521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) }, 1008521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) 1009521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) /** 1010521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) * @param {string} itemId 10115d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) * @param {?Event} event 1012521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) */ 1013521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) _editMappingBlur: function(itemId, event) 1014521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) { 1015521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) var inputElements = Object.values(this._editInputElements[itemId]); 1016521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) if (inputElements.indexOf(event.relatedTarget) !== -1) 1017521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) return; 1018521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) 1019521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) var listItem = this.itemForId(itemId); 1020a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) listItem.classList.remove("item-editing"); 1021521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) delete this._editingId; 1022521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) 1023521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) if (!this._hasChanges(itemId)) 1024521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) return; 1025521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) 1026521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) if (!this._validateEdit(itemId)) { 1027521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) var columns = this.columns(); 1028521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) for (var i = 0; i < columns.length; ++i) { 1029521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) var columnId = columns[i]; 1030521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) var inputElement = this._editInputElements[itemId][columnId]; 1031521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) inputElement.value = this._textElements[itemId][columnId].textContent; 1032a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) inputElement.classList.remove("editable-item-error"); 1033521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) } 1034521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) return; 1035521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) } 1036521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) this._editHandler(itemId, this._data(itemId)); 1037521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) }, 1038521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) 1039521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) _onAddMappingInputBlur: function(event) 1040521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) { 1041521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) var inputElements = Object.values(this._addInputElements); 1042521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) if (inputElements.indexOf(event.relatedTarget) !== -1) 1043521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) return; 1044521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) 1045521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) if (!this._hasChanges(null)) 1046521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) return; 1047521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) 1048521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) if (!this._validateEdit(null)) 1049521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) return; 1050521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) 1051521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) this._editHandler(null, this._data(null)); 1052521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) var columns = this.columns(); 1053521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) for (var i = 0; i < columns.length; ++i) { 1054521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) var columnId = columns[i]; 1055521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) var inputElement = this._addInputElements[columnId]; 1056521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) inputElement.value = ""; 1057521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) } 1058521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) }, 1059521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) 1060521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) __proto__: WebInspector.SettingsList.prototype 1061521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)} 106209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 1063f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)WebInspector._settingsController = new WebInspector.SettingsController(); 1064