Title: [228722] trunk/Source/WebInspectorUI
Revision
228722
Author
mattba...@apple.com
Date
2018-02-19 18:04:30 -0800 (Mon, 19 Feb 2018)

Log 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):

Modified Paths

Diff

Modified: trunk/Source/WebInspectorUI/ChangeLog (228721 => 228722)


--- trunk/Source/WebInspectorUI/ChangeLog	2018-02-20 02:02:57 UTC (rev 228721)
+++ trunk/Source/WebInspectorUI/ChangeLog	2018-02-20 02:04:30 UTC (rev 228722)
@@ -1,3 +1,40 @@
+2018-02-19  Matt Baker  <mattba...@apple.com>
+
+        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):
+
 2018-02-16  Matt Baker  <mattba...@apple.com>
 
         Web Inspector: TabBar redesign: remove top-level search field and pin the Search tab

Modified: trunk/Source/WebInspectorUI/UserInterface/Views/CanvasSidebarPanel.js (228721 => 228722)


--- trunk/Source/WebInspectorUI/UserInterface/Views/CanvasSidebarPanel.js	2018-02-20 02:02:57 UTC (rev 228721)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/CanvasSidebarPanel.js	2018-02-20 02:04:30 UTC (rev 228722)
@@ -151,6 +151,14 @@
         super.hidden();
     }
 
+    canShowRepresentedObject(representedObject)
+    {
+        if (representedObject instanceof WI.CanvasCollection)
+            return false;
+
+        return super.canShowRepresentedObject(representedObject);
+    }
+
     // Protected
 
     hasCustomFilters()

Modified: trunk/Source/WebInspectorUI/UserInterface/Views/CanvasTabContentView.js (228721 => 228722)


--- trunk/Source/WebInspectorUI/UserInterface/Views/CanvasTabContentView.js	2018-02-20 02:02:57 UTC (rev 228721)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/CanvasTabContentView.js	2018-02-20 02:04:30 UTC (rev 228722)
@@ -85,6 +85,11 @@
         return true;
     }
 
+    get managesNavigationSidebarPanel()
+    {
+        return true;
+    }
+
     canShowRepresentedObject(representedObject)
     {
         return representedObject instanceof WI.Canvas

Modified: trunk/Source/WebInspectorUI/UserInterface/Views/ContentBrowserTabContentView.js (228721 => 228722)


--- trunk/Source/WebInspectorUI/UserInterface/Views/ContentBrowserTabContentView.js	2018-02-20 02:02:57 UTC (rev 228721)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/ContentBrowserTabContentView.js	2018-02-20 02:04:30 UTC (rev 228722)
@@ -39,9 +39,13 @@
         this._contentBrowser = contentBrowser;
         this._contentBrowser.delegate = this;
 
+        this._ignoreNavigationSidebarPanelCollapsedEvent = false;
+        this._ignoreDetailsSidebarPanelCollapsedEvent = false;
+        this._ignoreDetailsSidebarPanelSelectedEvent = false;
+
         this._lastSelectedDetailsSidebarPanelSetting = new WI.Setting(identifier + "-last-selected-details-sidebar-panel", null);
 
-        this._contentBrowser.addEventListener(WI.ContentBrowser.Event.CurrentRepresentedObjectsDidChange, this.showDetailsSidebarPanels, this);
+        this._contentBrowser.addEventListener(WI.ContentBrowser.Event.CurrentRepresentedObjectsDidChange, this._contentBrowserCurrentRepresentedObjectsDidChange, this);
         this._contentBrowser.addEventListener(WI.ContentBrowser.Event.CurrentContentViewDidChange, this._contentBrowserCurrentContentViewDidChange, this);
 
         // If any content views were shown during sidebar construction, contentBrowserTreeElementForRepresentedObject() would have returned null.
@@ -134,6 +138,36 @@
         return true;
     }
 
+    showNavigationSidebarPanel()
+    {
+        if (!this.visible)
+            return;
+
+        if (!this.navigationSidebarPanel)
+            return;
+
+        this._ignoreNavigationSidebarPanelCollapsedEvent = true;
+
+        let currentRepresentedObjects = this._contentBrowser.currentRepresentedObjects;
+        let shouldShowSidebar = currentRepresentedObjects.some((object) => this.navigationSidebarPanel.canShowRepresentedObject(object));
+
+        if (shouldShowSidebar) {
+            if (!this.navigationSidebarPanel.parentSidebar)
+                WI.navigationSidebar.addSidebarPanel(this.navigationSidebarPanel);
+        } else if (this.navigationSidebarPanel.parentSidebar)
+            WI.navigationSidebar.removeSidebarPanel(this.navigationSidebarPanel);
+
+        if (this.navigationSidebarPanel.parentSidebar) {
+            WI.navigationSidebar.selectedSidebarPanel = this.navigationSidebarPanel;
+            WI.navigationSidebar.collapsed = this.navigationSidebarCollapsedSetting.value;
+        } else
+            WI.navigationSidebar.collapsed = true;
+
+        this._ignoreNavigationSidebarPanelCollapsedEvent = false;
+
+        this._showNavigationSidebarItem.enabled = !!this.navigationSidebarPanel.parentSidebar;
+    }
+
     showDetailsSidebarPanels()
     {
         if (!this.visible)
@@ -220,7 +254,15 @@
 
     _navigationSidebarCollapsedStateDidChange(event)
     {
+        if (!this.visible)
+            return;
+
         this._showNavigationSidebarItem.activated = !WI.navigationSidebar.collapsed;
+
+        if (this._ignoreNavigationSidebarPanelCollapsedEvent)
+            return;
+
+        this.navigationSidebarCollapsedSetting.value = WI.navigationSidebar.collapsed;
     }
 
     _detailsSidebarCollapsedStateDidChange(event)
@@ -279,4 +321,11 @@
         else if (this.navigationSidebarPanel && this.navigationSidebarPanel.contentTreeOutline.selectedTreeElement)
             this.navigationSidebarPanel.contentTreeOutline.selectedTreeElement.deselect(true);
     }
+
+    _contentBrowserCurrentRepresentedObjectsDidChange()
+    {
+        if (this.managesNavigationSidebarPanel)
+            this.showNavigationSidebarPanel();
+        this.showDetailsSidebarPanels();
+    }
 };

Modified: trunk/Source/WebInspectorUI/UserInterface/Views/NavigationSidebarPanel.js (228721 => 228722)


--- trunk/Source/WebInspectorUI/UserInterface/Views/NavigationSidebarPanel.js	2018-02-20 02:02:57 UTC (rev 228721)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/NavigationSidebarPanel.js	2018-02-20 02:04:30 UTC (rev 228722)
@@ -201,6 +201,13 @@
         return true;
     }
 
+    canShowRepresentedObject(representedObject)
+    {
+        let selectedTabContentView = WI.tabBrowser.selectedTabContentView;
+        console.assert(selectedTabContentView instanceof WI.TabContentView, "Missing TabContentView for NavigationSidebarPanel.");
+        return selectedTabContentView && selectedTabContentView.canShowRepresentedObject(representedObject);
+    }
+
     saveStateToCookie(cookie)
     {
         console.assert(cookie);

Modified: trunk/Source/WebInspectorUI/UserInterface/Views/TabBrowser.js (228721 => 228722)


--- trunk/Source/WebInspectorUI/UserInterface/Views/TabBrowser.js	2018-02-20 02:02:57 UTC (rev 228721)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/TabBrowser.js	2018-02-20 02:04:30 UTC (rev 228722)
@@ -321,7 +321,7 @@
         if (!tabContentView)
             return;
 
-        if (event.target === this._navigationSidebar)
+        if (event.target === this._navigationSidebar && !tabContentView.managesNavigationSidebarPanel)
             tabContentView.navigationSidebarCollapsedSetting.value = this._navigationSidebar.collapsed;
         else if (event.target === this._detailsSidebar && !tabContentView.managesDetailsSidebarPanels)
             tabContentView.detailsSidebarCollapsedSetting.value = this._detailsSidebar.collapsed;
@@ -373,6 +373,12 @@
             return;
         }
 
+        if (tabContentView.managesNavigationSidebarPanel) {
+            tabContentView.showNavigationSidebarPanel();
+            this._ignoreSidebarEvents = false;
+            return;
+        }
+
         this._navigationSidebar.addSidebarPanel(navigationSidebarPanel);
         this._navigationSidebar.selectedSidebarPanel = navigationSidebarPanel;
 

Modified: trunk/Source/WebInspectorUI/UserInterface/Views/TabContentView.js (228721 => 228722)


--- trunk/Source/WebInspectorUI/UserInterface/Views/TabContentView.js	2018-02-20 02:02:57 UTC (rev 228721)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/TabContentView.js	2018-02-20 02:04:30 UTC (rev 228722)
@@ -99,6 +99,12 @@
         return this._tabBarItem;
     }
 
+    get managesNavigationSidebarPanel()
+    {
+        // Implemented by subclasses.
+        return false;
+    }
+
     get managesDetailsSidebarPanels()
     {
         // Implemented by subclasses.
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to