Title: [226963] trunk/Source/WebInspectorUI
Revision
226963
Author
[email protected]
Date
2018-01-15 23:03:57 -0800 (Mon, 15 Jan 2018)

Log Message

Web Inspector: TabBar redesign: add context menu to TabBar for toggling available tabs
https://bugs.webkit.org/show_bug.cgi?id=181448
<rdar://problem/36383298>

Reviewed by Devin Rousso.

* UserInterface/Base/Main.js:
(WI.loaded):
(WI.contentLoaded):
Reorder production tab classes and default (open) tabs.
(WI.registerTabClass): Removed.
Not used.

* UserInterface/Base/Object.js:
Remove notification that is no longer used.

* UserInterface/Views/GeneralTabBarItem.js:
(WI.GeneralTabBarItem):
(WI.GeneralTabBarItem.prototype.set title):
(WI.GeneralTabBarItem.prototype._handleContextMenuEvent): Deleted.
Remove per-tab context menu (provided Close Tab and Close Other Tabs).

* UserInterface/Views/NewTabContentView.js:
(WI.NewTabContentView):

* UserInterface/Views/TabBar.js:
(WI.TabBar):
(WI.TabBar.prototype._handleContextMenu):

* UserInterface/Views/TabBrowser.js:
(WI.TabBrowser):
(WI.TabBrowser._handleNewTabContextMenu): Deleted.
No longer needed.

Modified Paths

Diff

Modified: trunk/Source/WebInspectorUI/ChangeLog (226962 => 226963)


--- trunk/Source/WebInspectorUI/ChangeLog	2018-01-16 06:44:41 UTC (rev 226962)
+++ trunk/Source/WebInspectorUI/ChangeLog	2018-01-16 07:03:57 UTC (rev 226963)
@@ -1,3 +1,39 @@
+2018-01-15  Matt Baker  <[email protected]>
+
+        Web Inspector: TabBar redesign: add context menu to TabBar for toggling available tabs
+        https://bugs.webkit.org/show_bug.cgi?id=181448
+        <rdar://problem/36383298>
+
+        Reviewed by Devin Rousso.
+
+        * UserInterface/Base/Main.js:
+        (WI.loaded):
+        (WI.contentLoaded):
+        Reorder production tab classes and default (open) tabs.
+        (WI.registerTabClass): Removed.
+        Not used.
+
+        * UserInterface/Base/Object.js:
+        Remove notification that is no longer used.
+
+        * UserInterface/Views/GeneralTabBarItem.js:
+        (WI.GeneralTabBarItem):
+        (WI.GeneralTabBarItem.prototype.set title):
+        (WI.GeneralTabBarItem.prototype._handleContextMenuEvent): Deleted.
+        Remove per-tab context menu (provided Close Tab and Close Other Tabs).
+
+        * UserInterface/Views/NewTabContentView.js:
+        (WI.NewTabContentView):
+
+        * UserInterface/Views/TabBar.js:
+        (WI.TabBar):
+        (WI.TabBar.prototype._handleContextMenu):
+
+        * UserInterface/Views/TabBrowser.js:
+        (WI.TabBrowser):
+        (WI.TabBrowser._handleNewTabContextMenu): Deleted.
+        No longer needed.
+
 2018-01-13  Nikita Vasilyev  <[email protected]>
 
         Web Inspector: Styles Redesign: properties should never be semitransparent or crossed out while editing

Modified: trunk/Source/WebInspectorUI/UserInterface/Base/Main.js (226962 => 226963)


--- trunk/Source/WebInspectorUI/UserInterface/Base/Main.js	2018-01-16 06:44:41 UTC (rev 226962)
+++ trunk/Source/WebInspectorUI/UserInterface/Base/Main.js	2018-01-16 07:03:57 UTC (rev 226963)
@@ -158,7 +158,7 @@
     // Create settings.
     this._showingSplitConsoleSetting = new WI.Setting("showing-split-console", false);
 
-    this._openTabsSetting = new WI.Setting("open-tab-types", ["elements", "network", "resources", "timeline", "debugger", "storage", "canvas", "console"]);
+    this._openTabsSetting = new WI.Setting("open-tab-types", ["elements", "network", "debugger", "resources", "timeline", "storage", "canvas", "console"]);
     this._selectedTabIndexSetting = new WI.Setting("selected-tab-index", 0);
 
     this.showShadowDOMSetting = new WI.Setting("show-shadow-dom", false);
@@ -428,18 +428,18 @@
     // These tabs are always available for selecting, modulo isTabAllowed().
     // Other tabs may be engineering-only or toggled at runtime if incomplete.
     let productionTabClasses = [
-        WI.CanvasTabContentView,
-        WI.ConsoleTabContentView,
-        WI.DebuggerTabContentView,
         WI.ElementsTabContentView,
-        WI.LayersTabContentView,
         WI.NetworkTabContentView,
-        WI.NewTabContentView,
+        WI.DebuggerTabContentView,
         WI.ResourcesTabContentView,
+        WI.TimelineTabContentView,
+        WI.StorageTabContentView,
+        WI.CanvasTabContentView,
+        WI.LayersTabContentView,
+        WI.ConsoleTabContentView,
         WI.SearchTabContentView,
+        WI.NewTabContentView,
         WI.SettingsTabContentView,
-        WI.StorageTabContentView,
-        WI.TimelineTabContentView,
     ];
 
     this._knownTabClassesByType = new Map;
@@ -662,21 +662,6 @@
         this.tabBrowser.showTabForContentView(tabContentView);
 };
 
-WI.registerTabClass = function(tabClass)
-{
-    console.assert(WI.TabContentView.isPrototypeOf(tabClass));
-    if (!WI.TabContentView.isPrototypeOf(tabClass))
-        return;
-
-    if (this._knownTabClassesByType.has(tabClass.Type))
-        return;
-
-    this._knownTabClassesByType.set(tabClass.Type, tabClass);
-
-    this._tryToRestorePendingTabs();
-    this.notifications.dispatchEventToListeners(WI.Notification.TabTypesChanged);
-};
-
 WI.activateExtraDomains = function(domains)
 {
     this.notifications.dispatchEventToListeners(WI.Notification.ExtraDomainsActivated, {domains});

Modified: trunk/Source/WebInspectorUI/UserInterface/Base/Object.js (226962 => 226963)


--- trunk/Source/WebInspectorUI/UserInterface/Base/Object.js	2018-01-16 06:44:41 UTC (rev 226962)
+++ trunk/Source/WebInspectorUI/UserInterface/Base/Object.js	2018-01-16 07:03:57 UTC (rev 226963)
@@ -223,7 +223,6 @@
     PageArchiveStarted: "page-archive-started",
     PageArchiveEnded: "page-archive-ended",
     ExtraDomainsActivated: "extra-domains-activated",
-    TabTypesChanged: "tab-types-changed",
     DebugUIEnabledDidChange: "debug-ui-enabled-did-change",
     VisibilityStateDidChange: "visibility-state-did-change",
 };

Modified: trunk/Source/WebInspectorUI/UserInterface/Views/GeneralTabBarItem.js (226962 => 226963)


--- trunk/Source/WebInspectorUI/UserInterface/Views/GeneralTabBarItem.js	2018-01-16 06:44:41 UTC (rev 226962)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/GeneralTabBarItem.js	2018-01-16 07:03:57 UTC (rev 226963)
@@ -34,8 +34,6 @@
         closeButtonElement.classList.add(WI.TabBarItem.CloseButtonStyleClassName);
         closeButtonElement.title = WI.UIString("Click to close this tab; Option-click to close all tabs except this one");
         this.element.insertBefore(closeButtonElement, this.element.firstChild);
-
-        this.element.addEventListener("contextmenu", this._handleContextMenuEvent.bind(this));
     }
 
     // Public
@@ -61,31 +59,4 @@
 
         super.title = title;
     }
-
-    // Private
-
-    _handleContextMenuEvent(event)
-    {
-        if (!this._parentTabBar)
-            return;
-
-        let closeTab = () => {
-            this._parentTabBar.removeTabBarItem(this);
-        };
-
-        let closeOtherTabs = () => {
-            let tabBarItems = this._parentTabBar.tabBarItems;
-            for (let i = tabBarItems.length - 1; i >= 0; --i) {
-                let item = tabBarItems[i];
-                if (item === this || item instanceof WI.PinnedTabBarItem)
-                    continue;
-                this._parentTabBar.removeTabBarItem(item);
-            }
-        };
-
-        let hasOtherNonPinnedTabs = this._parentTabBar.tabBarItems.some((item) => item !== this && !(item instanceof WI.PinnedTabBarItem));
-        let contextMenu = WI.ContextMenu.createFromEvent(event);
-        contextMenu.appendItem(WI.UIString("Close Tab"), closeTab, this.isDefaultTab);
-        contextMenu.appendItem(WI.UIString("Close Other Tabs"), closeOtherTabs, !hasOtherNonPinnedTabs);
-    }
 };

Modified: trunk/Source/WebInspectorUI/UserInterface/Views/NewTabContentView.js (226962 => 226963)


--- trunk/Source/WebInspectorUI/UserInterface/Views/NewTabContentView.js	2018-01-16 06:44:41 UTC (rev 226962)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/NewTabContentView.js	2018-01-16 07:03:57 UTC (rev 226963)
@@ -33,10 +33,11 @@
 
         super(identifier || "new-tab", "new-tab", tabBarItem);
 
-        WI.notifications.addEventListener(WI.Notification.TabTypesChanged, this._updateShownTabs.bind(this));
+        this._tabElementsByTabClass = new Map;
 
-        this._tabElementsByTabClass = new Map;
-        this._updateShownTabs();
+        let allTabClasses = Array.from(WI.knownTabClasses());
+        this._shownTabClasses = allTabClasses.filter((tabClass) => tabClass.isTabAllowed() && !tabClass.isEphemeral());
+        this._shownTabClasses.sort((a, b) => a.tabInfo().title.extendedLocaleCompare(b.tabInfo().title));
     }
 
     static tabInfo()
@@ -128,19 +129,6 @@
         WI.createNewTabWithType(tabType, options);
     }
 
-    _updateShownTabs()
-    {
-        let allTabClasses = Array.from(WI.knownTabClasses());
-        let allowedTabClasses = allTabClasses.filter((tabClass) => tabClass.isTabAllowed() && !tabClass.isEphemeral());
-        allowedTabClasses.sort((a, b) => a.tabInfo().title.extendedLocaleCompare(b.tabInfo().title));
-
-        if (Array.shallowEqual(this._shownTabClasses, allowedTabClasses))
-            return;
-
-        this._shownTabClasses = allowedTabClasses;
-        this.needsLayout();
-    }
-
     _allowableTabTypes()
     {
         let tabTypes = this._shownTabClasses.map((tabClass) => tabClass.Type);

Modified: trunk/Source/WebInspectorUI/UserInterface/Views/TabBar.js (226962 => 226963)


--- trunk/Source/WebInspectorUI/UserInterface/Views/TabBar.js	2018-01-16 06:44:41 UTC (rev 226962)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/TabBar.js	2018-01-16 07:03:57 UTC (rev 226963)
@@ -34,6 +34,7 @@
         this.element.addEventListener("mousedown", this._handleMouseDown.bind(this));
         this.element.addEventListener("click", this._handleClick.bind(this));
         this.element.addEventListener("mouseleave", this._handleMouseLeave.bind(this));
+        this.element.addEventListener("contextmenu", this._handleContextMenu.bind(this));
 
         this.element.createChild("div", "top-border");
 
@@ -750,6 +751,35 @@
         this._finishExpandingTabsAfterClose();
     }
 
+    _handleContextMenu(event)
+    {
+        let contextMenu = WI.ContextMenu.createFromEvent(event);
+
+        for (let tabClass of WI.knownTabClasses()) {
+            if (tabClass.isEphemeral())
+                continue;
+
+            let openTabBarItem = null;
+            for (let tabBarItem of this._tabBarItems) {
+                let tabContentView = tabBarItem.representedObject;
+                if (!(tabContentView instanceof WI.TabContentView))
+                    continue;
+
+                if (tabContentView.type === tabClass.Type) {
+                    openTabBarItem = tabBarItem;
+                    break;
+                }
+            }
+
+            contextMenu.appendCheckboxItem(tabClass.tabInfo().title, () => {
+                if (openTabBarItem)
+                    this.removeTabBarItem(openTabBarItem);
+                else
+                    WI.createNewTabWithType(tabClass.Type, {shouldShowNewTab: true});
+            }, !!openTabBarItem);
+        }
+    }
+
     _handleNewTabClick(event)
     {
         WI.showNewTabTab();

Modified: trunk/Source/WebInspectorUI/UserInterface/Views/TabBrowser.js (226962 => 226963)


--- trunk/Source/WebInspectorUI/UserInterface/Views/TabBrowser.js	2018-01-16 06:44:41 UTC (rev 226962)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/TabBrowser.js	2018-01-16 07:03:57 UTC (rev 226963)
@@ -78,7 +78,6 @@
         this._tabBar.addEventListener(WI.TabBar.Event.TabBarItemSelected, this._tabBarItemSelected, this);
         this._tabBar.addEventListener(WI.TabBar.Event.TabBarItemAdded, this._tabBarItemAdded, this);
         this._tabBar.addEventListener(WI.TabBar.Event.TabBarItemRemoved, this._tabBarItemRemoved, this);
-        this._tabBar.newTabTabBarItem.addEventListener(WI.PinnedTabBarItem.Event.ContextMenu, this._handleNewTabContextMenu, this);
 
         this._recentTabContentViews = [];
         this._closedTabClasses = new Set;
@@ -295,35 +294,6 @@
         console.assert(!this.selectedTabContentView || this.selectedTabContentView === this._recentTabContentViews[0]);
     }
 
-    _handleNewTabContextMenu(event)
-    {
-        // The array must be reversed because Sets insert into the end, and we want to display the
-        // most recently closed item first (which is the last item added to the set).
-        let closedTabClasses = Array.from(this._closedTabClasses).reverse();
-        let allTabClasses = Array.from(WI.knownTabClasses());
-        let tabClassesToDisplay = closedTabClasses.concat(allTabClasses.filter((tabClass) => {
-            if (closedTabClasses.includes(tabClass))
-                return false;
-
-            if (tabClass.isEphemeral())
-                return false;
-
-            return WI.isNewTabWithTypeAllowed(tabClass.Type);
-        }));
-        if (!tabClassesToDisplay.length)
-            return;
-
-        let contextMenu = event.data.contextMenu;
-
-        contextMenu.appendItem(WI.UIString("Recently Closed Tabs"), null, true);
-
-        for (let tabClass of tabClassesToDisplay) {
-            contextMenu.appendItem(tabClass.tabInfo().title, () => {
-                WI.createNewTabWithType(tabClass.Type, {shouldShowNewTab: true});
-            });
-        }
-    }
-
     _sidebarPanelSelected(event)
     {
         if (this._ignoreSidebarEvents)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to