diff --git a/editor/js/state.js b/editor/js/state.js
index 4d46c5e7c8975ad633d4fb0fd992280d440d55b8..9e36c27a5eea4ba9c0b554faa72374fa4cc4cdc5 100644
--- a/editor/js/state.js
+++ b/editor/js/state.js
@@ -34,9 +34,13 @@ class State extends Tool {
             return;
         }
 
+        this.tool.onToolDeactivate(tool);
+
         this.previousTool = this.tool;
         this.tool = tool;
         this.display.setSelectedTool(tool);
+
+        this.tool.onToolActivate();
     }
 
     setSelectedItem(item) {
diff --git a/editor/js/tools/tool.js b/editor/js/tools/tool.js
index babede8b2a1a6d6a1b148d7e45fd046fcbf7665f..76b9ea6bc427a080e76f0425b7fb4294170185fd 100644
--- a/editor/js/tools/tool.js
+++ b/editor/js/tools/tool.js
@@ -18,6 +18,18 @@ class Tool {
         return this.icon;
     }
 
+    onToolActivate() {
+        if (this.warnings) {
+            console.warn('Method "onToolActivate" not implemented.');
+        }
+    }
+
+    onToolDeactivate(nextTool) {
+        if (this.warnings) {
+            console.warn('Method "onToolDeactivate" not implemented.');
+        }
+    }
+
     onNodeClick(node) {
         if (this.warnings) {
             console.warn('Method "onNodeClick" not implemented.');