Changeset 228722 in webkit


Ignore:
Timestamp:
Feb 19, 2018 6:04:30 PM (6 years ago)
Author:
Matt Baker
Message:

Web Inspector: Canvas tab: hide navigation sidebar when viewing the overview
https://bugs.webkit.org/show_bug.cgi?id=182597
<rdar://problem/37341564>

Reviewed by Devin Rousso.

Support showing/hiding the navigation sidebar panel based on the current
represented object. Individual TabContentViews can opt-in to this behavior,
by overriding TabContentView.prototype.managesNavigationSidebarPanel.

  • UserInterface/Views/CanvasSidebarPanel.js:

(WI.CanvasSidebarPanel.prototype.canShowRepresentedObject):

  • UserInterface/Views/CanvasTabContentView.js:

(WI.CanvasTabContentView.prototype.get managesNavigationSidebarPanel):
Hide the Canvas navigation sidebar when viewing the overview.

  • UserInterface/Views/ContentBrowserTabContentView.js:

(WI.ContentBrowserTabContentView):
(WI.ContentBrowserTabContentView.prototype.showNavigationSidebarPanel):
(WI.ContentBrowserTabContentView.prototype._navigationSidebarCollapsedStateDidChange):
(WI.ContentBrowserTabContentView.prototype._contentBrowserCurrentRepresentedObjectsDidChange):

  • UserInterface/Views/NavigationSidebarPanel.js:

(WI.NavigationSidebarPanel.prototype.canShowRepresentedObject):
Provide default implementation that just defers to the TabContentView.
This exists so that a NavigationSidebarPanel that implements canShowRepresentedObject
will have a meaningful default to fall back on.

  • UserInterface/Views/TabBrowser.js:

(WI.TabBrowser.prototype._sidebarCollapsedStateDidChange):
(WI.TabBrowser.prototype._showNavigationSidebarPanelForTabContentView):

  • UserInterface/Views/TabContentView.js:

(WI.TabContentView.prototype.get managesNavigationSidebarPanel):

Location:
trunk/Source/WebInspectorUI
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebInspectorUI/ChangeLog

    r228581 r228722  
     12018-02-19  Matt Baker  <mattbaker@apple.com>
     2
     3        Web Inspector: Canvas tab: hide navigation sidebar when viewing the overview
     4        https://bugs.webkit.org/show_bug.cgi?id=182597
     5        <rdar://problem/37341564>
     6
     7        Reviewed by Devin Rousso.
     8
     9        Support showing/hiding the navigation sidebar panel based on the current
     10        represented object. Individual TabContentViews can opt-in to this behavior,
     11        by overriding TabContentView.prototype.managesNavigationSidebarPanel.
     12
     13        * UserInterface/Views/CanvasSidebarPanel.js:
     14        (WI.CanvasSidebarPanel.prototype.canShowRepresentedObject):
     15        * UserInterface/Views/CanvasTabContentView.js:
     16        (WI.CanvasTabContentView.prototype.get managesNavigationSidebarPanel):
     17        Hide the Canvas navigation sidebar when viewing the overview.
     18
     19        * UserInterface/Views/ContentBrowserTabContentView.js:
     20        (WI.ContentBrowserTabContentView):
     21        (WI.ContentBrowserTabContentView.prototype.showNavigationSidebarPanel):
     22        (WI.ContentBrowserTabContentView.prototype._navigationSidebarCollapsedStateDidChange):
     23        (WI.ContentBrowserTabContentView.prototype._contentBrowserCurrentRepresentedObjectsDidChange):
     24
     25        * UserInterface/Views/NavigationSidebarPanel.js:
     26        (WI.NavigationSidebarPanel.prototype.canShowRepresentedObject):
     27        Provide default implementation that just defers to the TabContentView.
     28        This exists so that a NavigationSidebarPanel that implements canShowRepresentedObject
     29        will have a meaningful default to fall back on.
     30
     31        * UserInterface/Views/TabBrowser.js:
     32        (WI.TabBrowser.prototype._sidebarCollapsedStateDidChange):
     33        (WI.TabBrowser.prototype._showNavigationSidebarPanelForTabContentView):
     34
     35        * UserInterface/Views/TabContentView.js:
     36        (WI.TabContentView.prototype.get managesNavigationSidebarPanel):
     37
    1382018-02-16  Matt Baker  <mattbaker@apple.com>
    239
  • trunk/Source/WebInspectorUI/UserInterface/Views/CanvasSidebarPanel.js

    r228362 r228722  
    152152    }
    153153
     154    canShowRepresentedObject(representedObject)
     155    {
     156        if (representedObject instanceof WI.CanvasCollection)
     157            return false;
     158
     159        return super.canShowRepresentedObject(representedObject);
     160    }
     161
    154162    // Protected
    155163
  • trunk/Source/WebInspectorUI/UserInterface/Views/CanvasTabContentView.js

    r228301 r228722  
    8686    }
    8787
     88    get managesNavigationSidebarPanel()
     89    {
     90        return true;
     91    }
     92
    8893    canShowRepresentedObject(representedObject)
    8994    {
  • trunk/Source/WebInspectorUI/UserInterface/Views/ContentBrowserTabContentView.js

    r223308 r228722  
    4040        this._contentBrowser.delegate = this;
    4141
     42        this._ignoreNavigationSidebarPanelCollapsedEvent = false;
     43        this._ignoreDetailsSidebarPanelCollapsedEvent = false;
     44        this._ignoreDetailsSidebarPanelSelectedEvent = false;
     45
    4246        this._lastSelectedDetailsSidebarPanelSetting = new WI.Setting(identifier + "-last-selected-details-sidebar-panel", null);
    4347
    44         this._contentBrowser.addEventListener(WI.ContentBrowser.Event.CurrentRepresentedObjectsDidChange, this.showDetailsSidebarPanels, this);
     48        this._contentBrowser.addEventListener(WI.ContentBrowser.Event.CurrentRepresentedObjectsDidChange, this._contentBrowserCurrentRepresentedObjectsDidChange, this);
    4549        this._contentBrowser.addEventListener(WI.ContentBrowser.Event.CurrentContentViewDidChange, this._contentBrowserCurrentContentViewDidChange, this);
    4650
     
    133137    {
    134138        return true;
     139    }
     140
     141    showNavigationSidebarPanel()
     142    {
     143        if (!this.visible)
     144            return;
     145
     146        if (!this.navigationSidebarPanel)
     147            return;
     148
     149        this._ignoreNavigationSidebarPanelCollapsedEvent = true;
     150
     151        let currentRepresentedObjects = this._contentBrowser.currentRepresentedObjects;
     152        let shouldShowSidebar = currentRepresentedObjects.some((object) => this.navigationSidebarPanel.canShowRepresentedObject(object));
     153
     154        if (shouldShowSidebar) {
     155            if (!this.navigationSidebarPanel.parentSidebar)
     156                WI.navigationSidebar.addSidebarPanel(this.navigationSidebarPanel);
     157        } else if (this.navigationSidebarPanel.parentSidebar)
     158            WI.navigationSidebar.removeSidebarPanel(this.navigationSidebarPanel);
     159
     160        if (this.navigationSidebarPanel.parentSidebar) {
     161            WI.navigationSidebar.selectedSidebarPanel = this.navigationSidebarPanel;
     162            WI.navigationSidebar.collapsed = this.navigationSidebarCollapsedSetting.value;
     163        } else
     164            WI.navigationSidebar.collapsed = true;
     165
     166        this._ignoreNavigationSidebarPanelCollapsedEvent = false;
     167
     168        this._showNavigationSidebarItem.enabled = !!this.navigationSidebarPanel.parentSidebar;
    135169    }
    136170
     
    221255    _navigationSidebarCollapsedStateDidChange(event)
    222256    {
     257        if (!this.visible)
     258            return;
     259
    223260        this._showNavigationSidebarItem.activated = !WI.navigationSidebar.collapsed;
     261
     262        if (this._ignoreNavigationSidebarPanelCollapsedEvent)
     263            return;
     264
     265        this.navigationSidebarCollapsedSetting.value = WI.navigationSidebar.collapsed;
    224266    }
    225267
     
    280322            this.navigationSidebarPanel.contentTreeOutline.selectedTreeElement.deselect(true);
    281323    }
     324
     325    _contentBrowserCurrentRepresentedObjectsDidChange()
     326    {
     327        if (this.managesNavigationSidebarPanel)
     328            this.showNavigationSidebarPanel();
     329        this.showDetailsSidebarPanels();
     330    }
    282331};
  • trunk/Source/WebInspectorUI/UserInterface/Views/NavigationSidebarPanel.js

    r226765 r228722  
    202202    }
    203203
     204    canShowRepresentedObject(representedObject)
     205    {
     206        let selectedTabContentView = WI.tabBrowser.selectedTabContentView;
     207        console.assert(selectedTabContentView instanceof WI.TabContentView, "Missing TabContentView for NavigationSidebarPanel.");
     208        return selectedTabContentView && selectedTabContentView.canShowRepresentedObject(representedObject);
     209    }
     210
    204211    saveStateToCookie(cookie)
    205212    {
  • trunk/Source/WebInspectorUI/UserInterface/Views/TabBrowser.js

    r228581 r228722  
    322322            return;
    323323
    324         if (event.target === this._navigationSidebar)
     324        if (event.target === this._navigationSidebar && !tabContentView.managesNavigationSidebarPanel)
    325325            tabContentView.navigationSidebarCollapsedSetting.value = this._navigationSidebar.collapsed;
    326326        else if (event.target === this._detailsSidebar && !tabContentView.managesDetailsSidebarPanels)
     
    374374        }
    375375
     376        if (tabContentView.managesNavigationSidebarPanel) {
     377            tabContentView.showNavigationSidebarPanel();
     378            this._ignoreSidebarEvents = false;
     379            return;
     380        }
     381
    376382        this._navigationSidebar.addSidebarPanel(navigationSidebarPanel);
    377383        this._navigationSidebar.selectedSidebarPanel = navigationSidebarPanel;
  • trunk/Source/WebInspectorUI/UserInterface/Views/TabContentView.js

    r228024 r228722  
    100100    }
    101101
     102    get managesNavigationSidebarPanel()
     103    {
     104        // Implemented by subclasses.
     105        return false;
     106    }
     107
    102108    get managesDetailsSidebarPanels()
    103109    {
Note: See TracChangeset for help on using the changeset viewer.