Browse Source

Hooked in the ability for project extensions to provide custom editors.

Shaddock Heath 9 years ago
parent
commit
7cc6ffc19c

+ 24 - 8
Script/AtomicEditor/hostExtensions/HostExtensionServices.ts

@@ -400,19 +400,35 @@ export class UIServicesProvider extends ServicesProvider<Editor.HostExtensions.U
     }
     }
 
 
     /**
     /**
- * Disaplays a resource slection window
- * @param  {string} windowText
- * @param  {string} importerType
- * @param  {string} resourceType
- * @param  {function} callback
- * @param  {any} retObject
- * @param  {any} args
- */
+     * Displays a resource slection window
+     * @param  {string} windowText
+     * @param  {string} importerType
+     * @param  {string} resourceType
+     * @param  {function} callback
+     * @param  {any} retObject
+     * @param  {any} args
+     */
     showResourceSelection(windowText: string, importerType: string, resourceType: string, callback: (retObject: any, args: any) => void, args: any = undefined) {
     showResourceSelection(windowText: string, importerType: string, resourceType: string, callback: (retObject: any, args: any) => void, args: any = undefined) {
 
 
         this.modalOps.showResourceSelection(windowText, importerType, resourceType, callback);
         this.modalOps.showResourceSelection(windowText, importerType, resourceType, callback);
     }
     }
 
 
+    /**
+     * Will register a custom editor for a particular file type.
+     * @param  {Editor.Extensions.ResourceEditorBuilder} editorBuilder
+     */
+    registerCustomEditor(editorBuilder: Editor.Extensions.ResourceEditorBuilder) {
+        this.mainFrame.resourceframe.resourceEditorProvider.registerCustomEditor(editorBuilder);
+    }
+
+    /**
+     * Will unregister a previously registered editor builder
+     * @param  {Editor.Extensions.ResourceEditorBuilder} editorBuilder
+     */
+    unregisterCustomEditor(editorBuilder: Editor.Extensions.ResourceEditorBuilder) {
+        this.mainFrame.resourceframe.resourceEditorProvider.unregisterCustomEditor(editorBuilder);
+    }
+
     /**
     /**
      * Called when a menu item has been clicked
      * Called when a menu item has been clicked
      * @param  {string} refId
      * @param  {string} refId

+ 14 - 1
Script/AtomicEditor/ui/ResourceEditorProvider.ts

@@ -49,15 +49,28 @@ export default class ResourceEditorProvider {
      * Register a custom editor.  These editors will override editors in the standard editor list if
      * Register a custom editor.  These editors will override editors in the standard editor list if
      * they both resolve the ```canHandleResource``` call.
      * they both resolve the ```canHandleResource``` call.
      */
      */
-    registerCustomEditor(editorBuilder) {
+    registerCustomEditor(editorBuilder: Editor.Extensions.ResourceEditorBuilder) {
         this.customEditorRegistry.push(editorBuilder);
         this.customEditorRegistry.push(editorBuilder);
     }
     }
 
 
+    /**
+     * Will unregister a previously registered editor builder
+     * @param  {Editor.Extensions.ResourceEditorBuilder} editorBuilder
+     */
+    unregisterCustomEditor(editorBuilder: Editor.Extensions.ResourceEditorBuilder) {
+        var index = this.customEditorRegistry.indexOf(editorBuilder, 0);
+        console.log(`custom editor len: ${this.customEditorRegistry.length}`);
+        if (index > -1) {
+            this.customEditorRegistry.splice(index, 1);
+        }
+    }
+
     /**
     /**
      * Returns an editor for the provided resource type or null
      * Returns an editor for the provided resource type or null
      */
      */
     getEditor(resourcePath: string, tabContainer) {
     getEditor(resourcePath: string, tabContainer) {
         let editorBuilder: Editor.Extensions.ResourceEditorBuilder;
         let editorBuilder: Editor.Extensions.ResourceEditorBuilder;
+        console.log(`custom editor len: ${this.customEditorRegistry.length}`);
         this.customEditorRegistry.forEach((builder) => {
         this.customEditorRegistry.forEach((builder) => {
             if (builder.canHandleResource(resourcePath)) {
             if (builder.canHandleResource(resourcePath)) {
                 editorBuilder = builder;
                 editorBuilder = builder;