Browse Source

Have editor extensions derive from Atomic.ScriptObject so that they can be event listeners/senders.

Shaddock Heath 8 years ago
parent
commit
9fc7751726

+ 1 - 1
Script/AtomicEditor/hostExtensions/coreExtensions/ProjectBasedExtensionLoader.ts

@@ -25,7 +25,7 @@
 /**
  * Resource extension that supports the web view typescript extension
  */
-export default class ProjectBasedExtensionLoader implements Editor.HostExtensions.ProjectServicesEventListener {
+export default class ProjectBasedExtensionLoader extends Atomic.ScriptObject implements Editor.HostExtensions.ProjectServicesEventListener {
     name: string = "ProjectBasedExtensionLoader";
     description: string = "This service supports loading extensions that reside in the project under {ProjectRoot}/Editor and named '*.Service.js'.";
 

+ 3 - 6
Script/AtomicEditor/hostExtensions/languageExtensions/CSharpLanguageExtension.ts

@@ -25,7 +25,7 @@ import EditorUI = require("ui/EditorUI");
 /**
 * Resource extension that supports the web view typescript extension
 */
-export default class CSharpLanguageExtension implements Editor.HostExtensions.ResourceServicesEventListener, Editor.HostExtensions.ProjectServicesEventListener {
+export default class CSharpLanguageExtension extends Atomic.ScriptObject implements Editor.HostExtensions.ResourceServicesEventListener, Editor.HostExtensions.ProjectServicesEventListener {
     name: string = "HostCSharpLanguageExtension";
     description: string = "This service supports the csharp language.";
 
@@ -40,9 +40,6 @@ export default class CSharpLanguageExtension implements Editor.HostExtensions.Re
     /** Reference to the compileOnSaveMenuItem */
     private compileOnSaveMenuItem: Atomic.UIMenuItem;
 
-    //** A script object so we can take part in event handling
-    private eventObject = new Atomic.ScriptObject();
-
     /**
     * Determines if the file name/path provided is something we care about
     * @param  {string} path
@@ -161,7 +158,7 @@ export default class CSharpLanguageExtension implements Editor.HostExtensions.Re
             this.isNETProject = true;
             this.configureNETProjectMenu();
 
-            this.eventObject.subscribeToEvent(ToolCore.NETBuildResultEvent((eventData:ToolCore.NETBuildResultEvent) => {
+            this.subscribeToEvent(ToolCore.NETBuildResultEvent((eventData:ToolCore.NETBuildResultEvent) => {
 
                 if (!eventData.success) {
 
@@ -193,7 +190,7 @@ export default class CSharpLanguageExtension implements Editor.HostExtensions.Re
         this.serviceRegistry.uiServices.removePluginMenuItemSource("AtomicNET");
         this.menuCreated = false;
         this.isNETProject = false;
-        this.eventObject.unsubscribeFromAllEvents();
+        this.unsubscribeFromAllEvents();
     }
 
     /*** UIService implementation ***/

+ 7 - 6
Script/AtomicEditor/hostExtensions/languageExtensions/TypescriptLanguageExtension.ts

@@ -43,7 +43,7 @@ const defaultCompilerOptions = {
 /**
  * Resource extension that supports the web view typescript extension
  */
-export default class TypescriptLanguageExtension implements Editor.HostExtensions.ResourceServicesEventListener, Editor.HostExtensions.ProjectServicesEventListener {
+export default class TypescriptLanguageExtension extends Atomic.ScriptObject implements Editor.HostExtensions.ResourceServicesEventListener, Editor.HostExtensions.ProjectServicesEventListener {
     name: string = "HostTypeScriptLanguageExtension";
     description: string = "This service supports the typescript webview extension.";
 
@@ -240,7 +240,7 @@ export default class TypescriptLanguageExtension implements Editor.HostExtension
                 };
 
                 this.setTsConfigOnWebView(this.buildTsConfig());
-                this.serviceRegistry.sendEvent<Editor.EditorDeleteResourceNotificationEvent>(Editor.EditorDeleteResourceNotificationEventType, eventData);
+                this.sendEvent(Editor.EditorDeleteResourceNotificationEventData(eventData));
             }
         }
     }
@@ -269,7 +269,7 @@ export default class TypescriptLanguageExtension implements Editor.HostExtension
                 };
 
                 this.setTsConfigOnWebView(this.buildTsConfig());
-                this.serviceRegistry.sendEvent<Editor.EditorRenameResourceNotificationEvent>(Editor.EditorRenameResourceNotificationEventType, eventData);
+                this.sendEvent(Editor.EditorRenameResourceNotificationEventData(eventData));
             }
         }
     }
@@ -314,6 +314,7 @@ export default class TypescriptLanguageExtension implements Editor.HostExtension
         this.compileOnSaveMenuItem = null;
         this.menuCreated = false;
         this.isTypescriptProject = false;
+        this.unsubscribeFromAllEvents();
     }
 
     /*** UIService implementation ***/
@@ -408,7 +409,7 @@ export default class TypescriptLanguageExtension implements Editor.HostExtension
     doFullCompile() {
         const editor = this.serviceRegistry.uiServices.getCurrentResourceEditor();
         if (editor && editor.typeName == "JSResourceEditor" && this.isValidFiletype(editor.fullPath)) {
-            this.serviceRegistry.sendEvent(Editor.EditorModalEventData({
+            this.sendEvent(Editor.EditorModalEventData({
               type: Editor.EDITOR_MODALINFO,
               title: "Compiling TypeScript",
               message: "Compiling TypeScript..."
@@ -499,13 +500,13 @@ export default class TypescriptLanguageExtension implements Editor.HostExtension
         }
 
         if (errors) {
-            this.serviceRegistry.sendEvent(Editor.EditorModalEventData({
+            this.sendEvent(Editor.EditorModalEventData({
               type: Editor.EDITOR_MODALINFO,
               title: "Compiling TypeScript",
               message: "Errors detected while compiling TypeScript."
             }));
         } else {
-            this.serviceRegistry.sendEvent(Editor.EditorModalEventData({
+            this.sendEvent(Editor.EditorModalEventData({
               type: Editor.EDITOR_MODALINFO,
               title: "Compiling TypeScript",
               message: "Successfully compiled TypeScript."