| Index: Source/devtools/front_end/ui/SplitView.js
|
| diff --git a/Source/devtools/front_end/ui/SplitView.js b/Source/devtools/front_end/ui/SplitView.js
|
| deleted file mode 100644
|
| index 5ee6b48a4cd14888bedcbe8292ce86f2b7bef742..0000000000000000000000000000000000000000
|
| --- a/Source/devtools/front_end/ui/SplitView.js
|
| +++ /dev/null
|
| @@ -1,899 +0,0 @@
|
| -/*
|
| - * Copyright (C) 2012 Google Inc. All rights reserved.
|
| - *
|
| - * Redistribution and use in source and binary forms, with or without
|
| - * modification, are permitted provided that the following conditions are
|
| - * met:
|
| - *
|
| - * 1. Redistributions of source code must retain the above copyright
|
| - * notice, this list of conditions and the following disclaimer.
|
| - *
|
| - * 2. Redistributions in binary form must reproduce the above
|
| - * copyright notice, this list of conditions and the following disclaimer
|
| - * in the documentation and/or other materials provided with the
|
| - * distribution.
|
| - *
|
| - * THIS SOFTWARE IS PROVIDED BY GOOGLE INC. AND ITS CONTRIBUTORS
|
| - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
| - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
| - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GOOGLE INC.
|
| - * OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
| - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
| - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
| - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
| - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
| - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
| - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
| - */
|
| -
|
| -/**
|
| - * @constructor
|
| - * @extends {WebInspector.View}
|
| - * @param {boolean} isVertical
|
| - * @param {boolean} secondIsSidebar
|
| - * @param {string=} settingName
|
| - * @param {number=} defaultSidebarWidth
|
| - * @param {number=} defaultSidebarHeight
|
| - * @param {boolean=} constraintsInDip
|
| - */
|
| -WebInspector.SplitView = function(isVertical, secondIsSidebar, settingName, defaultSidebarWidth, defaultSidebarHeight, constraintsInDip)
|
| -{
|
| - WebInspector.View.call(this, true);
|
| - this.element.classList.add("split-view");
|
| - this.registerRequiredCSS("ui/splitView.css");
|
| -
|
| - this.contentElement.classList.add("shadow-split-view");
|
| - this._mainElement = this.contentElement.createChild("div", "shadow-split-view-contents shadow-split-view-main vbox");
|
| - this._mainElement.createChild("content").select = ".insertion-point-main";
|
| - this._sidebarElement = this.contentElement.createChild("div", "shadow-split-view-contents shadow-split-view-sidebar vbox");
|
| - this._sidebarElement.createChild("content").select = ".insertion-point-sidebar";
|
| - this._resizerElement = this.contentElement.createChild("div", "shadow-split-view-resizer");
|
| -
|
| - this._resizerWidget = new WebInspector.SimpleResizerWidget();
|
| - this._resizerWidget.setEnabled(true);
|
| - this._resizerWidget.addEventListener(WebInspector.ResizerWidget.Events.ResizeStart, this._onResizeStart, this);
|
| - this._resizerWidget.addEventListener(WebInspector.ResizerWidget.Events.ResizeUpdate, this._onResizeUpdate, this);
|
| - this._resizerWidget.addEventListener(WebInspector.ResizerWidget.Events.ResizeEnd, this._onResizeEnd, this);
|
| -
|
| - this._defaultSidebarWidth = defaultSidebarWidth || 200;
|
| - this._defaultSidebarHeight = defaultSidebarHeight || this._defaultSidebarWidth;
|
| - this._constraintsInDip = !!constraintsInDip;
|
| - this._setting = settingName ? WebInspector.settings.createSetting(settingName, {}) : null;
|
| -
|
| - this.setSecondIsSidebar(secondIsSidebar);
|
| -
|
| - this._innerSetVertical(isVertical);
|
| - this._showMode = WebInspector.SplitView.ShowMode.Both;
|
| -
|
| - // Should be called after isVertical has the right value.
|
| - this.installResizer(this._resizerElement);
|
| -}
|
| -
|
| -/** @typedef {{showMode: string, size: number}} */
|
| -WebInspector.SplitView.SettingForOrientation;
|
| -
|
| -WebInspector.SplitView.ShowMode = {
|
| - Both: "Both",
|
| - OnlyMain: "OnlyMain",
|
| - OnlySidebar: "OnlySidebar"
|
| -}
|
| -
|
| -WebInspector.SplitView.Events = {
|
| - SidebarSizeChanged: "SidebarSizeChanged",
|
| - ShowModeChanged: "ShowModeChanged"
|
| -}
|
| -
|
| -WebInspector.SplitView.MinPadding = 20;
|
| -
|
| -WebInspector.SplitView.prototype = {
|
| - /**
|
| - * @return {boolean}
|
| - */
|
| - isVertical: function()
|
| - {
|
| - return this._isVertical;
|
| - },
|
| -
|
| - /**
|
| - * @param {boolean} isVertical
|
| - */
|
| - setVertical: function(isVertical)
|
| - {
|
| - if (this._isVertical === isVertical)
|
| - return;
|
| -
|
| - this._innerSetVertical(isVertical);
|
| -
|
| - if (this.isShowing())
|
| - this._updateLayout();
|
| - },
|
| -
|
| - /**
|
| - * @param {boolean} isVertical
|
| - */
|
| - _innerSetVertical: function(isVertical)
|
| - {
|
| - this.contentElement.classList.toggle("vbox", !isVertical);
|
| - this.contentElement.classList.toggle("hbox", isVertical);
|
| - this._isVertical = isVertical;
|
| -
|
| - delete this._resizerElementSize;
|
| - this._sidebarSizeDIP = -1;
|
| - this._restoreSidebarSizeFromSettings();
|
| - if (this._shouldSaveShowMode)
|
| - this._restoreAndApplyShowModeFromSettings();
|
| - this._updateShowHideSidebarButton();
|
| - // FIXME: reverse SplitView.isVertical meaning.
|
| - this._resizerWidget.setVertical(!isVertical);
|
| - this.invalidateConstraints();
|
| - },
|
| -
|
| - /**
|
| - * @param {boolean=} animate
|
| - */
|
| - _updateLayout: function(animate)
|
| - {
|
| - delete this._totalSizeCSS; // Lazy update.
|
| - delete this._totalSizeOtherDimensionCSS;
|
| -
|
| - // Remove properties that might affect total size calculation.
|
| - this._mainElement.style.removeProperty("width");
|
| - this._mainElement.style.removeProperty("height");
|
| - this._sidebarElement.style.removeProperty("width");
|
| - this._sidebarElement.style.removeProperty("height");
|
| -
|
| - this._innerSetSidebarSizeDIP(this._preferredSidebarSizeDIP(), !!animate);
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.View} view
|
| - */
|
| - setMainView: function(view)
|
| - {
|
| - if (this._mainView)
|
| - this._mainView.detach();
|
| - this._mainView = view;
|
| - if (view) {
|
| - view.element.classList.add("insertion-point-main");
|
| - view.element.classList.remove("insertion-point-sidebar");
|
| - if (this._showMode === WebInspector.SplitView.ShowMode.OnlyMain || this._showMode === WebInspector.SplitView.ShowMode.Both)
|
| - view.show(this.element);
|
| - }
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.View} view
|
| - */
|
| - setSidebarView: function(view)
|
| - {
|
| - if (this._sidebarView)
|
| - this._sidebarView.detach();
|
| - this._sidebarView = view;
|
| - if (view) {
|
| - view.element.classList.add("insertion-point-sidebar");
|
| - view.element.classList.remove("insertion-point-main");
|
| - if (this._showMode === WebInspector.SplitView.ShowMode.OnlySidebar || this._showMode === WebInspector.SplitView.ShowMode.Both)
|
| - view.show(this.element);
|
| - }
|
| - },
|
| -
|
| - /**
|
| - * @return {?WebInspector.View}
|
| - */
|
| - mainView: function()
|
| - {
|
| - return this._mainView;
|
| - },
|
| -
|
| - /**
|
| - * @return {?WebInspector.View}
|
| - */
|
| - sidebarView: function()
|
| - {
|
| - return this._sidebarView;
|
| - },
|
| -
|
| - /**
|
| - * @override
|
| - * @param {!WebInspector.View} view
|
| - */
|
| - childWasDetached: function(view)
|
| - {
|
| - if (this._detaching)
|
| - return;
|
| - if (this._mainView === view)
|
| - delete this._mainView;
|
| - if (this._sidebarView === view)
|
| - delete this._sidebarView;
|
| - },
|
| -
|
| - /**
|
| - * @return {boolean}
|
| - */
|
| - isSidebarSecond: function()
|
| - {
|
| - return this._secondIsSidebar;
|
| - },
|
| -
|
| - enableShowModeSaving: function()
|
| - {
|
| - this._shouldSaveShowMode = true;
|
| - this._restoreAndApplyShowModeFromSettings();
|
| - },
|
| -
|
| - /**
|
| - * @return {string}
|
| - */
|
| - showMode: function()
|
| - {
|
| - return this._showMode;
|
| - },
|
| -
|
| - /**
|
| - * @param {boolean} secondIsSidebar
|
| - */
|
| - setSecondIsSidebar: function(secondIsSidebar)
|
| - {
|
| - this.contentElement.classList.toggle("shadow-split-view-first-is-sidebar", !secondIsSidebar);
|
| - this._secondIsSidebar = secondIsSidebar;
|
| - },
|
| -
|
| - /**
|
| - * @return {?string}
|
| - */
|
| - sidebarSide: function()
|
| - {
|
| - if (this._showMode !== WebInspector.SplitView.ShowMode.Both)
|
| - return null;
|
| - return this._isVertical ?
|
| - (this._secondIsSidebar ? "right" : "left") :
|
| - (this._secondIsSidebar ? "bottom" : "top");
|
| - },
|
| -
|
| - /**
|
| - * @return {!Element}
|
| - */
|
| - resizerElement: function()
|
| - {
|
| - return this._resizerElement;
|
| - },
|
| -
|
| - /**
|
| - * @param {boolean=} animate
|
| - */
|
| - hideMain: function(animate)
|
| - {
|
| - this._showOnly(this._sidebarView, this._mainView, this._sidebarElement, this._mainElement, animate);
|
| - this._updateShowMode(WebInspector.SplitView.ShowMode.OnlySidebar);
|
| - },
|
| -
|
| - /**
|
| - * @param {boolean=} animate
|
| - */
|
| - hideSidebar: function(animate)
|
| - {
|
| - this._showOnly(this._mainView, this._sidebarView, this._mainElement, this._sidebarElement, animate);
|
| - this._updateShowMode(WebInspector.SplitView.ShowMode.OnlyMain);
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.View} sideToShow
|
| - * @param {!WebInspector.View} sideToHide
|
| - * @param {!Element} shadowToShow
|
| - * @param {!Element} shadowToHide
|
| - * @param {boolean=} animate
|
| - */
|
| - _showOnly: function(sideToShow, sideToHide, shadowToShow, shadowToHide, animate)
|
| - {
|
| - this._cancelAnimation();
|
| -
|
| - /**
|
| - * @this {WebInspector.SplitView}
|
| - */
|
| - function callback()
|
| - {
|
| - if (sideToShow) {
|
| - // Make sure main is first in the children list.
|
| - if (sideToShow === this._mainView)
|
| - this._mainView.show(this.element, this._sidebarView ? this._sidebarView.element : null);
|
| - else
|
| - this._sidebarView.show(this.element);
|
| - }
|
| - if (sideToHide) {
|
| - this._detaching = true;
|
| - sideToHide.detach();
|
| - delete this._detaching;
|
| - }
|
| -
|
| - this._resizerElement.classList.add("hidden");
|
| - shadowToShow.classList.remove("hidden");
|
| - shadowToShow.classList.add("maximized");
|
| - shadowToHide.classList.add("hidden");
|
| - shadowToHide.classList.remove("maximized");
|
| - this._removeAllLayoutProperties();
|
| - this.doResize();
|
| - }
|
| -
|
| - if (animate)
|
| - this._animate(true, callback.bind(this));
|
| - else
|
| - callback.call(this);
|
| -
|
| - this._sidebarSizeDIP = -1;
|
| - this.setResizable(false);
|
| - },
|
| -
|
| - _removeAllLayoutProperties: function()
|
| - {
|
| - this._sidebarElement.style.removeProperty("flexBasis");
|
| -
|
| - this._mainElement.style.removeProperty("width");
|
| - this._mainElement.style.removeProperty("height");
|
| - this._sidebarElement.style.removeProperty("width");
|
| - this._sidebarElement.style.removeProperty("height");
|
| -
|
| - this._resizerElement.style.removeProperty("left");
|
| - this._resizerElement.style.removeProperty("right");
|
| - this._resizerElement.style.removeProperty("top");
|
| - this._resizerElement.style.removeProperty("bottom");
|
| -
|
| - this._resizerElement.style.removeProperty("margin-left");
|
| - this._resizerElement.style.removeProperty("margin-right");
|
| - this._resizerElement.style.removeProperty("margin-top");
|
| - this._resizerElement.style.removeProperty("margin-bottom");
|
| - },
|
| -
|
| - /**
|
| - * @param {boolean=} animate
|
| - */
|
| - showBoth: function(animate)
|
| - {
|
| - if (this._showMode === WebInspector.SplitView.ShowMode.Both)
|
| - animate = false;
|
| -
|
| - this._cancelAnimation();
|
| - this._mainElement.classList.remove("maximized", "hidden");
|
| - this._sidebarElement.classList.remove("maximized", "hidden");
|
| - this._resizerElement.classList.remove("hidden");
|
| -
|
| - // Make sure main is the first in the children list.
|
| - if (this._sidebarView)
|
| - this._sidebarView.show(this.element);
|
| - if (this._mainView)
|
| - this._mainView.show(this.element, this._sidebarView ? this._sidebarView.element : null);
|
| - // Order views in DOM properly.
|
| - this.setSecondIsSidebar(this._secondIsSidebar);
|
| -
|
| - this._sidebarSizeDIP = -1;
|
| - this.setResizable(true);
|
| - this._updateShowMode(WebInspector.SplitView.ShowMode.Both);
|
| - this._updateLayout(animate);
|
| - },
|
| -
|
| - /**
|
| - * @param {boolean} resizable
|
| - */
|
| - setResizable: function(resizable)
|
| - {
|
| - this._resizerWidget.setEnabled(resizable);
|
| - },
|
| -
|
| - /**
|
| - * @return {boolean}
|
| - */
|
| - isResizable: function()
|
| - {
|
| - return this._resizerWidget.isEnabled();
|
| - },
|
| -
|
| - /**
|
| - * @param {number} size
|
| - */
|
| - setSidebarSize: function(size)
|
| - {
|
| - var sizeDIP = WebInspector.zoomManager.cssToDIP(size);
|
| - this._savedSidebarSizeDIP = sizeDIP;
|
| - this._saveSetting();
|
| - this._innerSetSidebarSizeDIP(sizeDIP, false, true);
|
| - },
|
| -
|
| - /**
|
| - * @return {number}
|
| - */
|
| - sidebarSize: function()
|
| - {
|
| - var sizeDIP = Math.max(0, this._sidebarSizeDIP);
|
| - return WebInspector.zoomManager.dipToCSS(sizeDIP);
|
| - },
|
| -
|
| - /**
|
| - * Returns total size in DIP.
|
| - * @return {number}
|
| - */
|
| - _totalSizeDIP: function()
|
| - {
|
| - if (!this._totalSizeCSS) {
|
| - this._totalSizeCSS = this._isVertical ? this.contentElement.offsetWidth : this.contentElement.offsetHeight;
|
| - this._totalSizeOtherDimensionCSS = this._isVertical ? this.contentElement.offsetHeight : this.contentElement.offsetWidth;
|
| - }
|
| - return WebInspector.zoomManager.cssToDIP(this._totalSizeCSS);
|
| - },
|
| -
|
| - /**
|
| - * @param {string} showMode
|
| - */
|
| - _updateShowMode: function(showMode)
|
| - {
|
| - this._showMode = showMode;
|
| - this._saveShowModeToSettings();
|
| - this._updateShowHideSidebarButton();
|
| - this.dispatchEventToListeners(WebInspector.SplitView.Events.ShowModeChanged, showMode);
|
| - this.invalidateConstraints();
|
| - },
|
| -
|
| - /**
|
| - * @param {number} sizeDIP
|
| - * @param {boolean} animate
|
| - * @param {boolean=} userAction
|
| - */
|
| - _innerSetSidebarSizeDIP: function(sizeDIP, animate, userAction)
|
| - {
|
| - if (this._showMode !== WebInspector.SplitView.ShowMode.Both || !this.isShowing())
|
| - return;
|
| -
|
| - sizeDIP = this._applyConstraints(sizeDIP, userAction);
|
| - if (this._sidebarSizeDIP === sizeDIP)
|
| - return;
|
| -
|
| - if (!this._resizerElementSize)
|
| - this._resizerElementSize = this._isVertical ? this._resizerElement.offsetWidth : this._resizerElement.offsetHeight;
|
| -
|
| - // Invalidate layout below.
|
| -
|
| - this._removeAllLayoutProperties();
|
| -
|
| - // this._totalSizeDIP is available below since we successfully applied constraints.
|
| - var sidebarSizeValue = WebInspector.zoomManager.dipToCSS(sizeDIP) + "px";
|
| - var mainSizeValue = (this._totalSizeCSS - WebInspector.zoomManager.dipToCSS(sizeDIP)) + "px";
|
| - this._sidebarElement.style.flexBasis = sidebarSizeValue;
|
| -
|
| - // Make both sides relayout boundaries.
|
| - if (this._isVertical) {
|
| - this._sidebarElement.style.width = sidebarSizeValue;
|
| - this._mainElement.style.width = mainSizeValue;
|
| - this._sidebarElement.style.height = this._totalSizeOtherDimensionCSS + "px";
|
| - this._mainElement.style.height = this._totalSizeOtherDimensionCSS + "px";
|
| - } else {
|
| - this._sidebarElement.style.height = sidebarSizeValue;
|
| - this._mainElement.style.height = mainSizeValue;
|
| - this._sidebarElement.style.width = this._totalSizeOtherDimensionCSS + "px";
|
| - this._mainElement.style.width = this._totalSizeOtherDimensionCSS + "px";
|
| - }
|
| -
|
| - // Position resizer.
|
| - if (this._isVertical) {
|
| - if (this._secondIsSidebar) {
|
| - this._resizerElement.style.right = sidebarSizeValue;
|
| - this._resizerElement.style.marginRight = -this._resizerElementSize / 2 + "px";
|
| - } else {
|
| - this._resizerElement.style.left = sidebarSizeValue;
|
| - this._resizerElement.style.marginLeft = -this._resizerElementSize / 2 + "px";
|
| - }
|
| - } else {
|
| - if (this._secondIsSidebar) {
|
| - this._resizerElement.style.bottom = sidebarSizeValue;
|
| - this._resizerElement.style.marginBottom = -this._resizerElementSize / 2 + "px";
|
| - } else {
|
| - this._resizerElement.style.top = sidebarSizeValue;
|
| - this._resizerElement.style.marginTop = -this._resizerElementSize / 2 + "px";
|
| - }
|
| - }
|
| -
|
| - this._sidebarSizeDIP = sizeDIP;
|
| -
|
| - // Force layout.
|
| -
|
| - if (animate) {
|
| - this._animate(false);
|
| - } else {
|
| - // No need to recalculate this._sidebarSizeDIP and this._totalSizeDIP again.
|
| - this.doResize();
|
| - this.dispatchEventToListeners(WebInspector.SplitView.Events.SidebarSizeChanged, this.sidebarSize());
|
| - }
|
| - },
|
| -
|
| - /**
|
| - * @param {boolean} reverse
|
| - * @param {function()=} callback
|
| - */
|
| - _animate: function(reverse, callback)
|
| - {
|
| - var animationTime = 50;
|
| - this._animationCallback = callback;
|
| -
|
| - var animatedMarginPropertyName;
|
| - if (this._isVertical)
|
| - animatedMarginPropertyName = this._secondIsSidebar ? "margin-right" : "margin-left";
|
| - else
|
| - animatedMarginPropertyName = this._secondIsSidebar ? "margin-bottom" : "margin-top";
|
| -
|
| - var marginFrom = reverse ? "0" : "-" + WebInspector.zoomManager.dipToCSS(this._sidebarSizeDIP) + "px";
|
| - var marginTo = reverse ? "-" + WebInspector.zoomManager.dipToCSS(this._sidebarSizeDIP) + "px" : "0";
|
| -
|
| - // This order of things is important.
|
| - // 1. Resize main element early and force layout.
|
| - this.contentElement.style.setProperty(animatedMarginPropertyName, marginFrom);
|
| - if (!reverse) {
|
| - suppressUnused(this._mainElement.offsetWidth);
|
| - suppressUnused(this._sidebarElement.offsetWidth);
|
| - }
|
| -
|
| - // 2. Issue onresize to the sidebar element, its size won't change.
|
| - if (!reverse)
|
| - this._sidebarView.doResize();
|
| -
|
| - // 3. Configure and run animation
|
| - this.contentElement.style.setProperty("transition", animatedMarginPropertyName + " " + animationTime + "ms linear");
|
| -
|
| - var boundAnimationFrame;
|
| - var startTime;
|
| - /**
|
| - * @this {WebInspector.SplitView}
|
| - */
|
| - function animationFrame()
|
| - {
|
| - delete this._animationFrameHandle;
|
| -
|
| - if (!startTime) {
|
| - // Kick animation on first frame.
|
| - this.contentElement.style.setProperty(animatedMarginPropertyName, marginTo);
|
| - startTime = window.performance.now();
|
| - } else if (window.performance.now() < startTime + animationTime) {
|
| - // Process regular animation frame.
|
| - if (this._mainView)
|
| - this._mainView.doResize();
|
| - } else {
|
| - // Complete animation.
|
| - this._cancelAnimation();
|
| - if (this._mainView)
|
| - this._mainView.doResize();
|
| - this.dispatchEventToListeners(WebInspector.SplitView.Events.SidebarSizeChanged, this.sidebarSize());
|
| - return;
|
| - }
|
| - this._animationFrameHandle = this.contentElement.window().requestAnimationFrame(boundAnimationFrame);
|
| - }
|
| - boundAnimationFrame = animationFrame.bind(this);
|
| - this._animationFrameHandle = this.contentElement.window().requestAnimationFrame(boundAnimationFrame);
|
| - },
|
| -
|
| - _cancelAnimation: function()
|
| - {
|
| - this.contentElement.style.removeProperty("margin-top");
|
| - this.contentElement.style.removeProperty("margin-right");
|
| - this.contentElement.style.removeProperty("margin-bottom");
|
| - this.contentElement.style.removeProperty("margin-left");
|
| - this.contentElement.style.removeProperty("transition");
|
| -
|
| - if (this._animationFrameHandle) {
|
| - this.contentElement.window().cancelAnimationFrame(this._animationFrameHandle);
|
| - delete this._animationFrameHandle;
|
| - }
|
| - if (this._animationCallback) {
|
| - this._animationCallback();
|
| - delete this._animationCallback;
|
| - }
|
| - },
|
| -
|
| - /**
|
| - * @param {number} sidebarSize
|
| - * @param {boolean=} userAction
|
| - * @return {number}
|
| - */
|
| - _applyConstraints: function(sidebarSize, userAction)
|
| - {
|
| - var totalSize = this._totalSizeDIP();
|
| - var zoomFactor = this._constraintsInDip ? 1 : WebInspector.zoomManager.zoomFactor();
|
| -
|
| - var constraints = this._sidebarView ? this._sidebarView.constraints() : new Constraints();
|
| - var minSidebarSize = this.isVertical() ? constraints.minimum.width : constraints.minimum.height;
|
| - if (!minSidebarSize)
|
| - minSidebarSize = WebInspector.SplitView.MinPadding;
|
| - minSidebarSize *= zoomFactor;
|
| -
|
| - var preferredSidebarSize = this.isVertical() ? constraints.preferred.width : constraints.preferred.height;
|
| - if (!preferredSidebarSize)
|
| - preferredSidebarSize = WebInspector.SplitView.MinPadding;
|
| - preferredSidebarSize *= zoomFactor;
|
| - // Allow sidebar to be less than preferred by explicit user action.
|
| - if (sidebarSize < preferredSidebarSize)
|
| - preferredSidebarSize = Math.max(sidebarSize, minSidebarSize);
|
| - preferredSidebarSize += zoomFactor; // 1 css pixel for splitter border.
|
| -
|
| - constraints = this._mainView ? this._mainView.constraints() : new Constraints();
|
| - var minMainSize = this.isVertical() ? constraints.minimum.width : constraints.minimum.height;
|
| - if (!minMainSize)
|
| - minMainSize = WebInspector.SplitView.MinPadding;
|
| - minMainSize *= zoomFactor;
|
| -
|
| - var preferredMainSize = this.isVertical() ? constraints.preferred.width : constraints.preferred.height;
|
| - if (!preferredMainSize)
|
| - preferredMainSize = WebInspector.SplitView.MinPadding;
|
| - preferredMainSize *= zoomFactor;
|
| - var savedMainSize = this.isVertical() ? this._savedVerticalMainSize : this._savedHorizontalMainSize;
|
| - if (typeof savedMainSize !== "undefined")
|
| - preferredMainSize = Math.min(preferredMainSize, savedMainSize * zoomFactor);
|
| - if (userAction)
|
| - preferredMainSize = minMainSize;
|
| -
|
| - // Enough space for preferred.
|
| - var totalPreferred = preferredMainSize + preferredSidebarSize;
|
| - if (totalPreferred <= totalSize)
|
| - return Number.constrain(sidebarSize, preferredSidebarSize, totalSize - preferredMainSize);
|
| -
|
| - // Enough space for minimum.
|
| - if (minMainSize + minSidebarSize <= totalSize) {
|
| - var delta = totalPreferred - totalSize;
|
| - var sidebarDelta = delta * preferredSidebarSize / totalPreferred;
|
| - sidebarSize = preferredSidebarSize - sidebarDelta;
|
| - return Number.constrain(sidebarSize, minSidebarSize, totalSize - minMainSize);
|
| - }
|
| -
|
| - // Not enough space even for minimum sizes.
|
| - return Math.max(0, totalSize - minMainSize);
|
| - },
|
| -
|
| - wasShown: function()
|
| - {
|
| - this._forceUpdateLayout();
|
| - WebInspector.zoomManager.addEventListener(WebInspector.ZoomManager.Events.ZoomChanged, this._onZoomChanged, this);
|
| - },
|
| -
|
| - willHide: function()
|
| - {
|
| - WebInspector.zoomManager.removeEventListener(WebInspector.ZoomManager.Events.ZoomChanged, this._onZoomChanged, this);
|
| - },
|
| -
|
| - onResize: function()
|
| - {
|
| - this._updateLayout();
|
| - },
|
| -
|
| - onLayout: function()
|
| - {
|
| - this._updateLayout();
|
| - },
|
| -
|
| - /**
|
| - * @override
|
| - * @return {!Constraints}
|
| - */
|
| - calculateConstraints: function()
|
| - {
|
| - if (this._showMode === WebInspector.SplitView.ShowMode.OnlyMain)
|
| - return this._mainView ? this._mainView.constraints() : new Constraints();
|
| - if (this._showMode === WebInspector.SplitView.ShowMode.OnlySidebar)
|
| - return this._sidebarView ? this._sidebarView.constraints() : new Constraints();
|
| -
|
| - var mainConstraints = this._mainView ? this._mainView.constraints() : new Constraints();
|
| - var sidebarConstraints = this._sidebarView ? this._sidebarView.constraints() : new Constraints();
|
| - var min = WebInspector.SplitView.MinPadding;
|
| - if (this._isVertical) {
|
| - mainConstraints = mainConstraints.widthToMax(min).addWidth(1); // 1 for splitter
|
| - sidebarConstraints = sidebarConstraints.widthToMax(min);
|
| - return mainConstraints.addWidth(sidebarConstraints).heightToMax(sidebarConstraints);
|
| - } else {
|
| - mainConstraints = mainConstraints.heightToMax(min).addHeight(1); // 1 for splitter
|
| - sidebarConstraints = sidebarConstraints.heightToMax(min);
|
| - return mainConstraints.widthToMax(sidebarConstraints).addHeight(sidebarConstraints);
|
| - }
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.Event} event
|
| - */
|
| - _onResizeStart: function(event)
|
| - {
|
| - this._resizeStartSizeDIP = this._sidebarSizeDIP;
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.Event} event
|
| - */
|
| - _onResizeUpdate: function(event)
|
| - {
|
| - var offset = event.data.currentPosition - event.data.startPosition;
|
| - var offsetDIP = WebInspector.zoomManager.cssToDIP(offset);
|
| - var newSizeDIP = this._secondIsSidebar ? this._resizeStartSizeDIP - offsetDIP : this._resizeStartSizeDIP + offsetDIP;
|
| - var constrainedSizeDIP = this._applyConstraints(newSizeDIP, true);
|
| - this._savedSidebarSizeDIP = constrainedSizeDIP;
|
| - this._saveSetting();
|
| - this._innerSetSidebarSizeDIP(constrainedSizeDIP, false, true);
|
| - if (this.isVertical())
|
| - this._savedVerticalMainSize = this._totalSizeDIP() - this._sidebarSizeDIP;
|
| - else
|
| - this._savedHorizontalMainSize = this._totalSizeDIP() - this._sidebarSizeDIP;
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.Event} event
|
| - */
|
| - _onResizeEnd: function(event)
|
| - {
|
| - delete this._resizeStartSizeDIP;
|
| - },
|
| -
|
| - hideDefaultResizer: function()
|
| - {
|
| - this.uninstallResizer(this._resizerElement);
|
| - },
|
| -
|
| - /**
|
| - * @param {!Element} resizerElement
|
| - */
|
| - installResizer: function(resizerElement)
|
| - {
|
| - this._resizerWidget.addElement(resizerElement);
|
| - },
|
| -
|
| - /**
|
| - * @param {!Element} resizerElement
|
| - */
|
| - uninstallResizer: function(resizerElement)
|
| - {
|
| - this._resizerWidget.removeElement(resizerElement);
|
| - },
|
| -
|
| - /**
|
| - * @return {boolean}
|
| - */
|
| - hasCustomResizer: function()
|
| - {
|
| - var elements = this._resizerWidget.elements();
|
| - return elements.length > 1 || (elements.length == 1 && elements[0] !== this._resizerElement);
|
| - },
|
| -
|
| - /**
|
| - * @param {!Element} resizer
|
| - * @param {boolean} on
|
| - */
|
| - toggleResizer: function(resizer, on)
|
| - {
|
| - if (on)
|
| - this.installResizer(resizer);
|
| - else
|
| - this.uninstallResizer(resizer);
|
| - },
|
| -
|
| - /**
|
| - * @return {?WebInspector.SplitView.SettingForOrientation}
|
| - */
|
| - _settingForOrientation: function()
|
| - {
|
| - var state = this._setting ? this._setting.get() : {};
|
| - return this._isVertical ? state.vertical : state.horizontal;
|
| - },
|
| -
|
| - /**
|
| - * @return {number}
|
| - */
|
| - _preferredSidebarSizeDIP: function()
|
| - {
|
| - var size = this._savedSidebarSizeDIP;
|
| - if (!size) {
|
| - size = this._isVertical ? this._defaultSidebarWidth : this._defaultSidebarHeight;
|
| - // If we have default value in percents, calculate it on first use.
|
| - if (0 < size && size < 1)
|
| - size *= this._totalSizeDIP();
|
| - }
|
| - return size;
|
| - },
|
| -
|
| - _restoreSidebarSizeFromSettings: function()
|
| - {
|
| - var settingForOrientation = this._settingForOrientation();
|
| - this._savedSidebarSizeDIP = settingForOrientation ? settingForOrientation.size : 0;
|
| - },
|
| -
|
| - _restoreAndApplyShowModeFromSettings: function()
|
| - {
|
| - var orientationState = this._settingForOrientation();
|
| - this._savedShowMode = orientationState && orientationState.showMode ? orientationState.showMode : this._showMode;
|
| - this._showMode = this._savedShowMode;
|
| -
|
| - switch (this._savedShowMode) {
|
| - case WebInspector.SplitView.ShowMode.Both:
|
| - this.showBoth();
|
| - break;
|
| - case WebInspector.SplitView.ShowMode.OnlyMain:
|
| - this.hideSidebar();
|
| - break;
|
| - case WebInspector.SplitView.ShowMode.OnlySidebar:
|
| - this.hideMain();
|
| - break;
|
| - }
|
| - },
|
| -
|
| - _saveShowModeToSettings: function()
|
| - {
|
| - this._savedShowMode = this._showMode;
|
| - this._saveSetting();
|
| - },
|
| -
|
| - _saveSetting: function()
|
| - {
|
| - if (!this._setting)
|
| - return;
|
| - var state = this._setting.get();
|
| - var orientationState = (this._isVertical ? state.vertical : state.horizontal) || {};
|
| -
|
| - orientationState.size = this._savedSidebarSizeDIP;
|
| - if (this._shouldSaveShowMode)
|
| - orientationState.showMode = this._savedShowMode;
|
| -
|
| - if (this._isVertical)
|
| - state.vertical = orientationState;
|
| - else
|
| - state.horizontal = orientationState;
|
| - this._setting.set(state);
|
| - },
|
| -
|
| - _forceUpdateLayout: function()
|
| - {
|
| - // Force layout even if sidebar size does not change.
|
| - this._sidebarSizeDIP = -1;
|
| - this._updateLayout();
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.Event} event
|
| - */
|
| - _onZoomChanged: function(event)
|
| - {
|
| - this._forceUpdateLayout();
|
| - },
|
| -
|
| - /**
|
| - * @param {string} title
|
| - * @param {string=} className
|
| - * @return {!Element}
|
| - */
|
| - displayShowHideSidebarButton: function(title, className)
|
| - {
|
| - console.assert(this.isVertical(), "Buttons for split view with horizontal split are not supported yet.");
|
| -
|
| - this._showHideSidebarButtonTitle = WebInspector.UIString(title);
|
| - this._showHideSidebarButton = this._mainElement.createChild("button", "sidebar-show-hide-button " + (className || ""));
|
| - this._showHideSidebarButton.addEventListener("click", buttonClicked.bind(this), false);
|
| - this._updateShowHideSidebarButton();
|
| -
|
| - /**
|
| - * @param {!Event} event
|
| - * @this {WebInspector.SplitView}
|
| - */
|
| - function buttonClicked(event)
|
| - {
|
| - if (this._showMode !== WebInspector.SplitView.ShowMode.Both)
|
| - this.showBoth(true);
|
| - else
|
| - this.hideSidebar(true);
|
| - }
|
| -
|
| - return this._showHideSidebarButton;
|
| - },
|
| -
|
| - _updateShowHideSidebarButton: function()
|
| - {
|
| - if (!this._showHideSidebarButton)
|
| - return;
|
| - var sidebarHidden = this._showMode === WebInspector.SplitView.ShowMode.OnlyMain;
|
| - this._showHideSidebarButton.classList.toggle("toggled-show", sidebarHidden);
|
| - this._showHideSidebarButton.classList.toggle("toggled-hide", !sidebarHidden);
|
| - this._showHideSidebarButton.classList.toggle("top-sidebar-show-hide-button", !this.isVertical() && !this.isSidebarSecond());
|
| - this._showHideSidebarButton.classList.toggle("right-sidebar-show-hide-button", this.isVertical() && this.isSidebarSecond());
|
| - this._showHideSidebarButton.classList.toggle("bottom-sidebar-show-hide-button", !this.isVertical() && this.isSidebarSecond());
|
| - this._showHideSidebarButton.classList.toggle("left-sidebar-show-hide-button", this.isVertical() && !this.isSidebarSecond());
|
| - this._showHideSidebarButton.title = sidebarHidden ? WebInspector.UIString("Show %s", this._showHideSidebarButtonTitle) : WebInspector.UIString("Hide %s", this._showHideSidebarButtonTitle);
|
| - },
|
| -
|
| - __proto__: WebInspector.View.prototype
|
| -}
|
|
|