From 00bc665c3ab95d34aacb7370172b31359bb02899 Mon Sep 17 00:00:00 2001
From: Max <m.giller.dev@gmail.com>
Date: Mon, 4 Oct 2021 22:20:57 +0200
Subject: [PATCH] Added more hooks to make setting up interactions easier

---
 editor/js/tools/menus/collectmenu.js |  8 ++++----
 editor/js/tools/menus/toolmenu.js    | 16 ++++++++++++++++
 2 files changed, 20 insertions(+), 4 deletions(-)

diff --git a/editor/js/tools/menus/collectmenu.js b/editor/js/tools/menus/collectmenu.js
index ca18196..27295d6 100644
--- a/editor/js/tools/menus/collectmenu.js
+++ b/editor/js/tools/menus/collectmenu.js
@@ -12,7 +12,6 @@ const DOM_LIST_ITEM = "li";
 export class CollectMenu extends ToolMenu {
     constructor() {
         super();
-        this.hooked = false;
     }
 
     hookClearButton() {
@@ -22,12 +21,13 @@ export class CollectMenu extends ToolMenu {
         });
     }
 
-    afterSet(key, value) {
-        if (this.hooked === false) {
+    onMenuShow(initial) {
+        if (initial) {
             this.hookClearButton();
-            this.hooked = true;
         }
+    }
 
+    afterSet(key, value) {
         if (key === COLLECTION_KEY) {
             this.fillDomList(SELECTED_ITEMS_ID, value, this.itemListRenderer);
         }
diff --git a/editor/js/tools/menus/toolmenu.js b/editor/js/tools/menus/toolmenu.js
index 73c2ac7..af60042 100644
--- a/editor/js/tools/menus/toolmenu.js
+++ b/editor/js/tools/menus/toolmenu.js
@@ -4,6 +4,7 @@ export default class ToolMenu {
     constructor() {
         this.warnings = false;
         this.values = {};
+        this.initialShow = true;
     }
 
     loadTool(tool) {
@@ -12,11 +13,26 @@ export default class ToolMenu {
     }
 
     show() {
+        this.onMenuShow(this.initialShow);
+        this.initialShow = false;
         this.getMenu().removeClass("hidden");
     }
 
     hide() {
         this.getMenu().addClass("hidden");
+        this.onMenuHide();
+    }
+
+    onMenuShow(initial) {
+        if (this.warnings) {
+            console.warn('Method "onMenuShow" not implemented.');
+        }
+    }
+
+    onMenuHide() {
+        if (this.warnings) {
+            console.warn('Method "onMenuHide" not implemented.');
+        }
     }
 
     beforeGet(key) {
-- 
GitLab