Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1243)

Unified Diff: Source/devtools/front_end/ui/SplitView.js

Issue 1113813002: [DevTools] Rename View to Widget. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: rebased Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/devtools/front_end/ui/SoftContextMenu.js ('k') | Source/devtools/front_end/ui/SplitWidget.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
-}
« no previous file with comments | « Source/devtools/front_end/ui/SoftContextMenu.js ('k') | Source/devtools/front_end/ui/SplitWidget.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698