Browse Source

expose editResourceEvent to the extension system

Shaddock Heath 9 years ago
parent
commit
3f8e49c069

+ 18 - 0
Script/AtomicEditor/hostExtensions/HostExtensionServices.ts

@@ -179,6 +179,7 @@ export class ResourceServicesProvider extends ServicesProvider<Editor.HostExtens
         eventDispatcher.subscribeToEvent(EditorEvents.SaveResourceNotification, (ev) => this.saveResource(ev));
         eventDispatcher.subscribeToEvent(EditorEvents.DeleteResourceNotification, (ev) => this.deleteResource(ev));
         eventDispatcher.subscribeToEvent(EditorEvents.RenameResourceNotification, (ev) => this.renameResource(ev));
+        eventDispatcher.subscribeToEvent(EditorEvents.EditResource, (ev) => this.editResource(ev));
 
     }
 
@@ -233,6 +234,23 @@ export class ResourceServicesProvider extends ServicesProvider<Editor.HostExtens
         });
     }
 
+    /**
+     * Called when a resource is about to be edited
+     * @param  {Editor.EditorEvents.EditResourceEvent} ev
+     */
+    editResource(ev: Editor.EditorEvents.EditResourceEvent) {
+        this.registeredServices.forEach((service) => {
+            try {
+                // Verify that the service contains the appropriate methods and that it can handle the edit
+                if (service.edit) {
+                    service.edit(ev);
+                }
+            } catch (e) {
+                EditorUI.showModalError("Extension Error", `Error detected in extension ${service.name}:\n${e}\n\n ${e.stack}`);
+            }
+        });
+    }
+
     /**
      * Create New Material
      * @param  {string} resourcePath

+ 13 - 0
Script/TypeScript/EditorWork.d.ts

@@ -264,9 +264,22 @@ declare module Editor.HostExtensions {
     }
 
     export interface ResourceServicesEventListener extends Editor.Extensions.ServiceEventListener {
+        /**
+         * Called once a resource is saved
+         */
         save?(ev: EditorEvents.SaveResourceEvent);
+        /**
+         * Called when a resource is deleted
+         */
         delete?(ev: EditorEvents.DeleteResourceEvent);
+        /**
+         * Called when a resource is renamed
+         */
         rename?(ev: EditorEvents.RenameResourceEvent);
+        /**
+         * Called when a resource is about to be edited
+         */
+        edit?(ev: EditorEvents.EditResourceEvent);
     }
 
     export interface ResourceServicesProvider extends Editor.Extensions.ServicesProvider<ResourceServicesEventListener> {