[module.json extensions] @UI.ToolbarItem.Provider Part 2
Bug: 1134103
Change-Id: I1674bd9bcc12f19aa51405d9fd8ef6a9c7965331
Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/2684120
Commit-Queue: Andres Olivares <[email protected]>
Reviewed-by: Tim van der Lippe <[email protected]>
diff --git a/front_end/elements/ClassesPaneWidget.js b/front_end/elements/ClassesPaneWidget.js
index bb23a5a..559a916 100644
--- a/front_end/elements/ClassesPaneWidget.js
+++ b/front_end/elements/ClassesPaneWidget.js
@@ -265,10 +265,14 @@
/** @type {!WeakMap<!SDK.DOMModel.DOMNode, !Map<string, boolean>>} */
const cachedClassesMap = new WeakMap();
+/** @type {!ButtonProvider} */
+let buttonProviderInstance;
+
/**
* @implements {UI.Toolbar.Provider}
*/
export class ButtonProvider {
+ /** @private */
constructor() {
this._button = new UI.Toolbar.ToolbarToggle(Common.UIString.UIString('Element Classes'), '');
this._button.setText('.cls');
@@ -277,6 +281,18 @@
this._view = new ClassesPaneWidget();
}
+ /**
+ * @param {{forceNew: ?boolean}} opts
+ */
+ static instance(opts = {forceNew: null}) {
+ const {forceNew} = opts;
+ if (!buttonProviderInstance || forceNew) {
+ buttonProviderInstance = new ButtonProvider();
+ }
+
+ return buttonProviderInstance;
+ }
+
_clicked() {
ElementsPanel.instance().showToolbarPane(!this._view.isShowing() ? this._view : null, this._button);
}