OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright (C) 2012 Google Inc. All rights reserved. | 2 * Copyright (C) 2012 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * | 10 * |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
88 Both: "Both", | 88 Both: "Both", |
89 OnlyMain: "OnlyMain", | 89 OnlyMain: "OnlyMain", |
90 OnlySidebar: "OnlySidebar" | 90 OnlySidebar: "OnlySidebar" |
91 } | 91 } |
92 | 92 |
93 WebInspector.SplitView.Events = { | 93 WebInspector.SplitView.Events = { |
94 SidebarSizeChanged: "SidebarSizeChanged", | 94 SidebarSizeChanged: "SidebarSizeChanged", |
95 ShowModeChanged: "ShowModeChanged" | 95 ShowModeChanged: "ShowModeChanged" |
96 } | 96 } |
97 | 97 |
98 WebInspector.SplitView.MinPadding = 20; | |
99 | |
98 WebInspector.SplitView.prototype = { | 100 WebInspector.SplitView.prototype = { |
99 /** | 101 /** |
100 * @return {boolean} | 102 * @return {boolean} |
101 */ | 103 */ |
102 isVertical: function() | 104 isVertical: function() |
103 { | 105 { |
104 return this._isVertical; | 106 return this._isVertical; |
105 }, | 107 }, |
106 | 108 |
107 /** | 109 /** |
(...skipping 17 matching lines...) Expand all Loading... | |
125 { | 127 { |
126 this.element.classList.remove(this._isVertical ? "hbox" : "vbox"); | 128 this.element.classList.remove(this._isVertical ? "hbox" : "vbox"); |
127 this._isVertical = isVertical; | 129 this._isVertical = isVertical; |
128 this.element.classList.add(this._isVertical ? "hbox" : "vbox"); | 130 this.element.classList.add(this._isVertical ? "hbox" : "vbox"); |
129 delete this._resizerElementSize; | 131 delete this._resizerElementSize; |
130 this._sidebarSize = -1; | 132 this._sidebarSize = -1; |
131 this._restoreSidebarSizeFromSettings(); | 133 this._restoreSidebarSizeFromSettings(); |
132 if (this._shouldSaveShowMode) | 134 if (this._shouldSaveShowMode) |
133 this._restoreAndApplyShowModeFromSettings(); | 135 this._restoreAndApplyShowModeFromSettings(); |
134 this._updateShowHideSidebarButton(); | 136 this._updateShowHideSidebarButton(); |
137 this.invalidateMinimumSize(); | |
135 | 138 |
136 for (var i = 0; i < this._resizerElements.length; ++i) { | 139 for (var i = 0; i < this._resizerElements.length; ++i) { |
137 this._resizerElements[i].classList.toggle("ew-resizer-widget", this. _isVertical); | 140 this._resizerElements[i].classList.toggle("ew-resizer-widget", this. _isVertical); |
138 this._resizerElements[i].classList.toggle("ns-resizer-widget", !this ._isVertical); | 141 this._resizerElements[i].classList.toggle("ns-resizer-widget", !this ._isVertical); |
139 } | 142 } |
140 }, | 143 }, |
141 | 144 |
142 /** | 145 /** |
143 * @param {boolean=} animate | 146 * @param {boolean=} animate |
144 */ | 147 */ |
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
363 | 366 |
364 /** | 367 /** |
365 * @param {string} showMode | 368 * @param {string} showMode |
366 */ | 369 */ |
367 _updateShowMode: function(showMode) | 370 _updateShowMode: function(showMode) |
368 { | 371 { |
369 this._showMode = showMode; | 372 this._showMode = showMode; |
370 this._saveShowModeToSettings(); | 373 this._saveShowModeToSettings(); |
371 this._updateShowHideSidebarButton(); | 374 this._updateShowHideSidebarButton(); |
372 this.dispatchEventToListeners(WebInspector.SplitView.Events.ShowModeChan ged, showMode); | 375 this.dispatchEventToListeners(WebInspector.SplitView.Events.ShowModeChan ged, showMode); |
376 this.invalidateMinimumSize(); | |
373 }, | 377 }, |
374 | 378 |
375 /** | 379 /** |
376 * @param {number} size | 380 * @param {number} size |
377 * @param {boolean=} ignoreConstraints | 381 * @param {boolean=} ignoreConstraints |
378 * @param {boolean=} animate | 382 * @param {boolean=} animate |
379 */ | 383 */ |
380 _innerSetSidebarSize: function(size, ignoreConstraints, animate) | 384 _innerSetSidebarSize: function(size, ignoreConstraints, animate) |
381 { | 385 { |
382 if (this._showMode !== WebInspector.SplitView.ShowMode.Both) { | 386 if (this._showMode !== WebInspector.SplitView.ShowMode.Both) { |
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
507 window.cancelAnimationFrame(this._animationFrameHandle); | 511 window.cancelAnimationFrame(this._animationFrameHandle); |
508 delete this._animationFrameHandle; | 512 delete this._animationFrameHandle; |
509 } | 513 } |
510 if (this._animationCallback) { | 514 if (this._animationCallback) { |
511 this._animationCallback(); | 515 this._animationCallback(); |
512 delete this._animationCallback; | 516 delete this._animationCallback; |
513 } | 517 } |
514 }, | 518 }, |
515 | 519 |
516 /** | 520 /** |
517 * @param {number=} minWidth | |
518 * @param {number=} minHeight | |
519 */ | |
520 setSidebarElementConstraints: function(minWidth, minHeight) | |
521 { | |
522 if (typeof minWidth === "number") | |
523 this._minimumSidebarWidth = minWidth; | |
524 if (typeof minHeight === "number") | |
525 this._minimumSidebarHeight = minHeight; | |
526 }, | |
527 | |
528 /** | |
529 * @param {number=} minWidth | |
530 * @param {number=} minHeight | |
531 */ | |
532 setMainElementConstraints: function(minWidth, minHeight) | |
533 { | |
534 if (typeof minWidth === "number") | |
535 this._minimumMainWidth = minWidth; | |
536 if (typeof minHeight === "number") | |
537 this._minimumMainHeight = minHeight; | |
538 }, | |
539 | |
540 /** | |
541 * @param {number} sidebarSize | 521 * @param {number} sidebarSize |
542 * @return {number} | 522 * @return {number} |
543 */ | 523 */ |
544 _applyConstraints: function(sidebarSize) | 524 _applyConstraints: function(sidebarSize) |
545 { | 525 { |
546 const minPadding = 20; | |
547 var totalSize = this.totalSize(); | 526 var totalSize = this.totalSize(); |
548 var minimumSiderbarSizeContraint = this.isVertical() ? this._minimumSide barWidth : this._minimumSidebarHeight; | |
549 var from = minimumSiderbarSizeContraint || 0; | |
550 if (typeof minimumSiderbarSizeContraint !== "number") | |
551 from = Math.max(from, minPadding); | |
552 | 527 |
553 var minimumMainSizeConstraint = this.isVertical() ? this._minimumMainWid th : this._minimumMainHeight; | 528 var size = this._sidebarView.minimumSize(); |
554 var minMainSize = minimumMainSizeConstraint || 0; | 529 var from = this.isVertical() ? size.width : size.height; |
555 if (typeof minimumMainSizeConstraint !== "number") | 530 if (!from) |
556 minMainSize = Math.max(minMainSize, minPadding); | 531 from = WebInspector.SplitView.MinPadding; |
532 | |
533 size = this._mainView.minimumSize(); | |
534 var minMainSize = this.isVertical() ? size.width : size.height; | |
535 if (!minMainSize) | |
536 minMainSize = WebInspector.SplitView.MinPadding; | |
557 | 537 |
558 var to = totalSize - minMainSize; | 538 var to = totalSize - minMainSize; |
559 if (from <= to) | 539 if (from <= to) |
560 return Number.constrain(sidebarSize, from, to); | 540 return Number.constrain(sidebarSize, from, to); |
561 | 541 |
562 return -1; | 542 // If we don't have enough space (which is a very rare case), prioritize main view. |
pfeldman
2014/03/14 06:23:10
This -1 was used for the case when _applyConstrain
dgozman
2014/03/14 15:55:15
I've removed check for this in _innerSetSidebarSiz
| |
543 return Math.max(0, to); | |
563 }, | 544 }, |
564 | 545 |
565 wasShown: function() | 546 wasShown: function() |
566 { | 547 { |
567 this._updateLayout(); | 548 this._updateLayout(); |
568 }, | 549 }, |
569 | 550 |
570 onResize: function() | 551 onResize: function() |
571 { | 552 { |
572 this._updateLayout(); | 553 this._updateLayout(); |
573 }, | 554 }, |
574 | 555 |
575 /** | 556 /** |
557 * @return {!Size} | |
558 */ | |
559 calculateMinimumSize: function() | |
560 { | |
561 if (this._showMode === WebInspector.SplitView.ShowMode.OnlyMain) | |
562 return this._mainView.minimumSize(); | |
563 if (this._showMode === WebInspector.SplitView.ShowMode.OnlySidebar) | |
564 return this._sidebarView.minimumSize(); | |
565 | |
566 var mainSize = this._mainView.minimumSize(); | |
567 var sidebarSize = this._sidebarView.minimumSize(); | |
568 var min = WebInspector.SplitView.MinPadding; | |
569 if (this._isVertical) | |
570 return new Size((mainSize.width || min) + (sidebarSize.width || min) , Math.max(mainSize.height, sidebarSize.height)); | |
571 else | |
572 return new Size(Math.max(mainSize.width, sidebarSize.width), (mainSi ze.height || min) + (sidebarSize.height || min)); | |
573 }, | |
574 | |
575 /** | |
576 * @param {!MouseEvent} event | 576 * @param {!MouseEvent} event |
577 * @return {boolean} | 577 * @return {boolean} |
578 */ | 578 */ |
579 _startResizerDragging: function(event) | 579 _startResizerDragging: function(event) |
580 { | 580 { |
581 if (!this._resizable) | 581 if (!this._resizable) |
582 return false; | 582 return false; |
583 | 583 |
584 var dipEventPosition = (this._isVertical ? event.pageX : event.pageY) * WebInspector.zoomManager.zoomFactor(); | 584 var dipEventPosition = (this._isVertical ? event.pageX : event.pageY) * WebInspector.zoomManager.zoomFactor(); |
585 this._dragOffset = (this._secondIsSidebar ? this.totalSize() - this._sid ebarSize : this._sidebarSize) - dipEventPosition; | 585 this._dragOffset = (this._secondIsSidebar ? this.totalSize() - this._sid ebarSize : this._sidebarSize) - dipEventPosition; |
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
812 this._showHideSidebarButton.state = sidebarHidden ? "show" : "hide"; | 812 this._showHideSidebarButton.state = sidebarHidden ? "show" : "hide"; |
813 this._showHideSidebarButton.element.classList.toggle("top-sidebar-show-h ide-button", !this.isVertical() && !this.isSidebarSecond()); | 813 this._showHideSidebarButton.element.classList.toggle("top-sidebar-show-h ide-button", !this.isVertical() && !this.isSidebarSecond()); |
814 this._showHideSidebarButton.element.classList.toggle("right-sidebar-show -hide-button", this.isVertical() && this.isSidebarSecond()); | 814 this._showHideSidebarButton.element.classList.toggle("right-sidebar-show -hide-button", this.isVertical() && this.isSidebarSecond()); |
815 this._showHideSidebarButton.element.classList.toggle("bottom-sidebar-sho w-hide-button", !this.isVertical() && this.isSidebarSecond()); | 815 this._showHideSidebarButton.element.classList.toggle("bottom-sidebar-sho w-hide-button", !this.isVertical() && this.isSidebarSecond()); |
816 this._showHideSidebarButton.element.classList.toggle("left-sidebar-show- hide-button", this.isVertical() && !this.isSidebarSecond()); | 816 this._showHideSidebarButton.element.classList.toggle("left-sidebar-show- hide-button", this.isVertical() && !this.isSidebarSecond()); |
817 this._showHideSidebarButton.title = sidebarHidden ? WebInspector.UIStrin g("Show %s", this._showHideSidebarButtonTitle) : WebInspector.UIString("Hide %s" , this._showHideSidebarButtonTitle); | 817 this._showHideSidebarButton.title = sidebarHidden ? WebInspector.UIStrin g("Show %s", this._showHideSidebarButtonTitle) : WebInspector.UIString("Hide %s" , this._showHideSidebarButtonTitle); |
818 }, | 818 }, |
819 | 819 |
820 __proto__: WebInspector.View.prototype | 820 __proto__: WebInspector.View.prototype |
821 } | 821 } |
OLD | NEW |