1926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)/* 2926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * Copyright (C) 2013 Google Inc. All rights reserved. 3926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * 4926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * Redistribution and use in source and binary forms, with or without 5926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * modification, are permitted provided that the following conditions are 6926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * met: 7926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * 8926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * * Redistributions of source code must retain the above copyright 9926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * notice, this list of conditions and the following disclaimer. 10926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * * Redistributions in binary form must reproduce the above 11926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * copyright notice, this list of conditions and the following disclaimer 12926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * in the documentation and/or other materials provided with the 13926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * distribution. 14926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * * Neither the name of Google Inc. nor the names of its 15926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * contributors may be used to endorse or promote products derived from 16926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * this software without specific prior written permission. 17926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * 18926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 30926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 31926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)/** 32926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @constructor 33926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {string} prefix 34926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 35926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)WebInspector.OverviewGrid = function(prefix) 36926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 37926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this.element = document.createElement("div"); 38926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this.element.id = prefix + "-overview-container"; 39926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 40926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._grid = new WebInspector.TimelineGrid(); 41926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._grid.element.id = prefix + "-overview-grid"; 42926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._grid.setScrollAndDividerTop(0, 0); 43926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 44926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this.element.appendChild(this._grid.element); 45926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 46926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._window = new WebInspector.OverviewGrid.Window(this.element, this._grid.dividersLabelBarElement); 47926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 48926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 49926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)WebInspector.OverviewGrid.prototype = { 50926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 51926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @return {number} 52926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 53926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) clientWidth: function() 54926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 55926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return this.element.clientWidth; 56926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 57926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 58926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 59926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {!WebInspector.TimelineGrid.Calculator} calculator 60926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 61926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) updateDividers: function(calculator) 62926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 63926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._grid.updateDividers(calculator); 64926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 65926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 66926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 67a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Array.<!Element>} dividers 68926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 69926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) addEventDividers: function(dividers) 70926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 71926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._grid.addEventDividers(dividers); 72926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 73926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 74926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) removeEventDividers: function() 75926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 76926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._grid.removeEventDividers(); 77926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 78926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 79926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 80926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {?number} start 81926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {?number} end 82926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 83926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) setWindowPosition: function(start, end) 84926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 85926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._window._setWindowPosition(start, end); 86926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 87926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 88926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) reset: function() 89926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 90926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._window.reset(); 91926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 92926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 93926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 94926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @return {number} 95926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 96926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) windowLeft: function() 97926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 98926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return this._window.windowLeft; 99926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 100926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 101926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 102926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @return {number} 103926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 104926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) windowRight: function() 105926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 106926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return this._window.windowRight; 107926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 108926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 109926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 110926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {number} left 111926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {number} right 112926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 113926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) setWindow: function(left, right) 114926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 115926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._window._setWindow(left, right); 116926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 117926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 118926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 119926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {string} eventType 120a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {function(!WebInspector.Event)} listener 121a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Object=} thisObject 122926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 123926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) addEventListener: function(eventType, listener, thisObject) 124926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 125926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._window.addEventListener(eventType, listener, thisObject); 126926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 127926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 128926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 129926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {!number} zoomFactor 130926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {!number} referencePoint 131926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 132926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) zoom: function(zoomFactor, referencePoint) 133926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 134926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._window._zoom(zoomFactor, referencePoint); 13593ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) }, 13693ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) 13793ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) /** 13893ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) * @param {boolean} enabled 13993ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) */ 14093ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) setResizeEnabled: function(enabled) 14193ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) { 14293ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) this._window._setEnabled(!!enabled); 143926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 144926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 145926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 146926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 147e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben MurdochWebInspector.OverviewGrid.MinSelectableSize = 14; 148926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 149926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)WebInspector.OverviewGrid.WindowScrollSpeedFactor = .3; 150926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 151926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)WebInspector.OverviewGrid.ResizerOffset = 3.5; // half pixel because offset values are not rounded but ceiled 152926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 153926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)/** 154926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @constructor 155926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @extends {WebInspector.Object} 156a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Element} parentElement 157c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {!Element=} dividersLabelBarElement 158926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 159926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)WebInspector.OverviewGrid.Window = function(parentElement, dividersLabelBarElement) 160926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 161926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._parentElement = parentElement; 162926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 16309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) WebInspector.installDragHandle(this._parentElement, this._startWindowSelectorDragging.bind(this), this._windowSelectorDragging.bind(this), this._endWindowSelectorDragging.bind(this), "ew-resize", null); 164c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) if (dividersLabelBarElement) 165c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) WebInspector.installDragHandle(dividersLabelBarElement, this._startWindowDragging.bind(this), this._windowDragging.bind(this), null, "move"); 166926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 167926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this.windowLeft = 0.0; 168926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this.windowRight = 1.0; 169926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 170926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._parentElement.addEventListener("mousewheel", this._onMouseWheel.bind(this), true); 171926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._parentElement.addEventListener("dblclick", this._resizeWindowMaximum.bind(this), true); 172926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 17393ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) this._overviewWindowElement = parentElement.createChild("div", "overview-grid-window"); 1747242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci this._overviewWindowElement.appendChild(WebInspector.View.createStyleElement("overviewGrid.css")); 17593ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) this._overviewWindowBordersElement = parentElement.createChild("div", "overview-grid-window-rulers"); 17693ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) parentElement.createChild("div", "overview-grid-dividers-background"); 177926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 17893ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) this._leftResizeElement = parentElement.createChild("div", "overview-grid-window-resizer"); 179926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._leftResizeElement.style.left = 0; 180926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) WebInspector.installDragHandle(this._leftResizeElement, this._resizerElementStartDragging.bind(this), this._leftResizeElementDragging.bind(this), null, "ew-resize"); 181926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 18293ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) this._rightResizeElement = parentElement.createChild("div", "overview-grid-window-resizer overview-grid-window-resizer-right"); 183926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._rightResizeElement.style.right = 0; 184926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) WebInspector.installDragHandle(this._rightResizeElement, this._resizerElementStartDragging.bind(this), this._rightResizeElementDragging.bind(this), null, "ew-resize"); 18593ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) this._setEnabled(true); 186926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 187926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 188926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)WebInspector.OverviewGrid.Events = { 189926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) WindowChanged: "WindowChanged" 190926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 191926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 192926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)WebInspector.OverviewGrid.Window.prototype = { 193926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) reset: function() 194926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 195926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this.windowLeft = 0.0; 196926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this.windowRight = 1.0; 197926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 198926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._overviewWindowElement.style.left = "0%"; 199926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._overviewWindowElement.style.width = "100%"; 200926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._overviewWindowBordersElement.style.left = "0%"; 201926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._overviewWindowBordersElement.style.right = "0%"; 202926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._leftResizeElement.style.left = "0%"; 203926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._rightResizeElement.style.left = "100%"; 20493ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) this._setEnabled(true); 20593ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) }, 20693ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) 20793ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) /** 20893ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) * @param {boolean} enabled 20993ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) */ 21093ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) _setEnabled: function(enabled) 21193ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) { 21293ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) enabled = !!enabled; 21393ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) if (this._enabled === enabled) 21493ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) return; 21593ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) this._enabled = enabled; 216926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 217926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 218926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 219a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Event} event 220926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 221926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) _resizerElementStartDragging: function(event) 222926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 22393ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) if (!this._enabled) 22493ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) return false; 225926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._resizerParentOffsetLeft = event.pageX - event.offsetX - event.target.offsetLeft; 226926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) event.preventDefault(); 227926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return true; 228926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 229926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 230926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 231a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Event} event 232926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 233926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) _leftResizeElementDragging: function(event) 234926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 235926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._resizeWindowLeft(event.pageX - this._resizerParentOffsetLeft); 236926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) event.preventDefault(); 237926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 238926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 239926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 240a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Event} event 241926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 242926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) _rightResizeElementDragging: function(event) 243926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 244926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._resizeWindowRight(event.pageX - this._resizerParentOffsetLeft); 245926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) event.preventDefault(); 246926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 247926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 248926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 249a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Event} event 250926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @return {boolean} 251926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 252926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) _startWindowSelectorDragging: function(event) 253926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 25493ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) if (!this._enabled) 25593ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) return false; 25607a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch this._offsetLeft = this._parentElement.totalOffsetLeft(); 25707a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch var position = event.x - this._offsetLeft; 258926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._overviewWindowSelector = new WebInspector.OverviewGrid.WindowSelector(this._parentElement, position); 259926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return true; 260926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 261926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 262926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 263a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Event} event 264926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 265926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) _windowSelectorDragging: function(event) 266926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 26707a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch this._overviewWindowSelector._updatePosition(event.x - this._offsetLeft); 268926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) event.preventDefault(); 269926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 270926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 271926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 272a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Event} event 273926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 274926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) _endWindowSelectorDragging: function(event) 275926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 27607a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch var window = this._overviewWindowSelector._close(event.x - this._offsetLeft); 277926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) delete this._overviewWindowSelector; 278926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (window.end === window.start) { // Click, not drag. 279926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var middle = window.end; 280926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) window.start = Math.max(0, middle - WebInspector.OverviewGrid.MinSelectableSize / 2); 281926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) window.end = Math.min(this._parentElement.clientWidth, middle + WebInspector.OverviewGrid.MinSelectableSize / 2); 282926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } else if (window.end - window.start < WebInspector.OverviewGrid.MinSelectableSize) { 283926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (this._parentElement.clientWidth - window.end > WebInspector.OverviewGrid.MinSelectableSize) 284926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) window.end = window.start + WebInspector.OverviewGrid.MinSelectableSize; 285926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) else 286926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) window.start = window.end - WebInspector.OverviewGrid.MinSelectableSize; 287926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 288926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._setWindowPosition(window.start, window.end); 289926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 290926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 291926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 292a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Event} event 293926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @return {boolean} 294926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 295926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) _startWindowDragging: function(event) 296926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 29753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this._dragStartPoint = event.pageX; 29853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this._dragStartLeft = this.windowLeft; 29953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this._dragStartRight = this.windowRight; 300926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return true; 301926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 302926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 303926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 304a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Event} event 305926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 306926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) _windowDragging: function(event) 307926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 308926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) event.preventDefault(); 30953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) var delta = (event.pageX - this._dragStartPoint) / this._parentElement.clientWidth; 31053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) if (this._dragStartLeft + delta < 0) 31153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) delta = -this._dragStartLeft; 312926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 31353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) if (this._dragStartRight + delta > 1) 31453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) delta = 1 - this._dragStartRight; 315926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 31653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this._setWindow(this._dragStartLeft + delta, this._dragStartRight + delta); 317926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 318926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 319926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 320926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {number} start 321926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 322926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) _resizeWindowLeft: function(start) 323926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 324926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) // Glue to edge. 325926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (start < 10) 326926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) start = 0; 327926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) else if (start > this._rightResizeElement.offsetLeft - 4) 328926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) start = this._rightResizeElement.offsetLeft - 4; 329926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._setWindowPosition(start, null); 330926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 331926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 332926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 333926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {number} end 334926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 335926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) _resizeWindowRight: function(end) 336926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 337926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) // Glue to edge. 338926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (end > this._parentElement.clientWidth - 10) 339926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) end = this._parentElement.clientWidth; 340926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) else if (end < this._leftResizeElement.offsetLeft + WebInspector.OverviewGrid.MinSelectableSize) 341926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) end = this._leftResizeElement.offsetLeft + WebInspector.OverviewGrid.MinSelectableSize; 342926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._setWindowPosition(null, end); 343926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 344926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 345926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) _resizeWindowMaximum: function() 346926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 347926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._setWindowPosition(0, this._parentElement.clientWidth); 348926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 349926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 350926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 35153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) * @param {number} windowLeft 35253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) * @param {number} windowRight 353926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 35453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) _setWindow: function(windowLeft, windowRight) 355926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 356591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch var left = windowLeft; 357591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch var right = windowRight; 358591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch var width = windowRight - windowLeft; 359591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch 360591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch // We allow actual time window to be arbitrarily small but don't want the UI window to be too small. 361e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch var widthInPixels = width * this._parentElement.clientWidth; 362591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch var minWidthInPixels = WebInspector.OverviewGrid.MinSelectableSize / 2; 363591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch if (widthInPixels < minWidthInPixels) { 364591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch var factor = minWidthInPixels / widthInPixels; 365591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch left = ((windowRight + windowLeft) - width * factor) / 2; 366591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch right = ((windowRight + windowLeft) + width * factor) / 2; 367591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch } 368591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch 36953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this.windowLeft = windowLeft; 370591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch this._leftResizeElement.style.left = left * 100 + "%"; 37153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this.windowRight = windowRight; 372591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch this._rightResizeElement.style.left = right * 100 + "%"; 37353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 374591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch this._overviewWindowElement.style.left = left * 100 + "%"; 375e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch this._overviewWindowBordersElement.style.left = left * 100 + "%"; 376e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch this._overviewWindowElement.style.width = (right - left) * 100 + "%"; 377e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch this._overviewWindowBordersElement.style.right = (1 - right) * 100 + "%"; 37853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 37953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this.dispatchEventToListeners(WebInspector.OverviewGrid.Events.WindowChanged); 380926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 381926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 382926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 383926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {?number} start 384926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {?number} end 385926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 386926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) _setWindowPosition: function(start, end) 387926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 388926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var clientWidth = this._parentElement.clientWidth; 38953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) var windowLeft = typeof start === "number" ? start / clientWidth : this.windowLeft; 39053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) var windowRight = typeof end === "number" ? end / clientWidth : this.windowRight; 39153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this._setWindow(windowLeft, windowRight); 392926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 393926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 394926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 395197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @param {!Event} event 396926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 397926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) _onMouseWheel: function(event) 398926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 399926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (typeof event.wheelDeltaY === "number" && event.wheelDeltaY) { 40053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) const zoomFactor = 1.1; 40153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) const mouseWheelZoomSpeed = 1 / 120; 40253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 40353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) var reference = event.offsetX / event.target.clientWidth; 40453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this._zoom(Math.pow(zoomFactor, -event.wheelDeltaY * mouseWheelZoomSpeed), reference); 405926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 406926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (typeof event.wheelDeltaX === "number" && event.wheelDeltaX) { 40753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) var offset = Math.round(event.wheelDeltaX * WebInspector.OverviewGrid.WindowScrollSpeedFactor); 408926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var windowLeft = this._leftResizeElement.offsetLeft + WebInspector.OverviewGrid.ResizerOffset; 40953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) var windowRight = this._rightResizeElement.offsetLeft + WebInspector.OverviewGrid.ResizerOffset; 41053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 41153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) if (windowLeft - offset < 0) 41253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) offset = windowLeft; 41353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 41453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) if (windowRight - offset > this._parentElement.clientWidth) 41553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) offset = windowRight - this._parentElement.clientWidth; 41653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 41753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this._setWindowPosition(windowLeft - offset, windowRight - offset); 41853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 419926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) event.preventDefault(); 420926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 421926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 422926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 423926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 424926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {number} factor 42553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) * @param {number} reference 426926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 42753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) _zoom: function(factor, reference) 428926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 42953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) var left = this.windowLeft; 43053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) var right = this.windowRight; 43153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) var windowSize = right - left; 43253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) var newWindowSize = factor * windowSize; 433591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch if (newWindowSize > 1) { 434591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch newWindowSize = 1; 435591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch factor = newWindowSize / windowSize; 436591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch } 43753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) left = reference + (left - reference) * factor; 43853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) left = Number.constrain(left, 0, 1 - newWindowSize); 43953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 44053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) right = reference + (right - reference) * factor; 44153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) right = Number.constrain(right, newWindowSize, 1); 44253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this._setWindow(left, right); 443926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 444926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 445926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) __proto__: WebInspector.Object.prototype 446926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 447926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 448926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)/** 449926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @constructor 450926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 451926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)WebInspector.OverviewGrid.WindowSelector = function(parent, position) 452926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 453926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._startPosition = position; 454926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._width = parent.offsetWidth; 455926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._windowSelector = document.createElement("div"); 456926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._windowSelector.className = "overview-grid-window-selector"; 457926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._windowSelector.style.left = this._startPosition + "px"; 458926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._windowSelector.style.right = this._width - this._startPosition + "px"; 459926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) parent.appendChild(this._windowSelector); 460926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 461926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 462926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)WebInspector.OverviewGrid.WindowSelector.prototype = { 463926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) _close: function(position) 464926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 465926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) position = Math.max(0, Math.min(position, this._width)); 466591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch this._windowSelector.remove(); 467926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return this._startPosition < position ? {start: this._startPosition, end: position} : {start: position, end: this._startPosition}; 468926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 469926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 470926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) _updatePosition: function(position) 471926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 472926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) position = Math.max(0, Math.min(position, this._width)); 473926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (position < this._startPosition) { 474926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._windowSelector.style.left = position + "px"; 475926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._windowSelector.style.right = this._width - this._startPosition + "px"; 476926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } else { 477926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._windowSelector.style.left = this._startPosition + "px"; 478926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._windowSelector.style.right = this._width - position + "px"; 479926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 480926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 481926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 482