Browse Source

Updated to handle the user prefs change notification to the web client from the host typescript. Also cleaned up some typos and api signatures.

Shaddock Heath 9 years ago
parent
commit
dc1faa32b1

+ 4 - 1
Script/AtomicEditor/editor/Editor.ts

@@ -145,7 +145,10 @@ class Editor extends Atomic.ScriptObject {
      * @param  {number | boolean | string} defaultValue value to return if pref doesn't exist
      * @param  {number | boolean | string} defaultValue value to return if pref doesn't exist
      * @return {number|boolean|string}
      * @return {number|boolean|string}
      */
      */
-    getUserPreference(extensionName: string, preferenceName: string, defaultValue?: number | boolean | string): number | boolean | string {
+    getUserPreference(settingsGroup: string, preferenceName: string, defaultValue?: number): number;
+    getUserPreference(settingsGroup: string, preferenceName: string, defaultValue?: string): string;
+    getUserPreference(settingsGroup: string, preferenceName: string, defaultValue?: boolean): boolean;
+    getUserPreference(extensionName: string, preferenceName: string, defaultValue?: any): any {
         return Preferences.getInstance().getUserPreference(extensionName, preferenceName, defaultValue);
         return Preferences.getInstance().getUserPreference(extensionName, preferenceName, defaultValue);
     }
     }
 
 

+ 11 - 8
Script/AtomicEditor/editor/Preferences.ts

@@ -31,7 +31,7 @@ class Preferences {
     private static instance: Preferences;
     private static instance: Preferences;
     private _prefs: PreferencesFormat;
     private _prefs: PreferencesFormat;
 
 
-    private cachedProjectjPreferences: Object = null;
+    private cachedProjectPreferences: Object = null;
 
 
     constructor() {
     constructor() {
         this.fileSystem = Atomic.getFileSystem();
         this.fileSystem = Atomic.getFileSystem();
@@ -155,24 +155,27 @@ class Preferences {
      * @param  {number | boolean | string} defaultValue value to return if pref doesn't exist
      * @param  {number | boolean | string} defaultValue value to return if pref doesn't exist
      * @return {number|boolean|string}
      * @return {number|boolean|string}
      */
      */
-    getUserPreference(settingsGroup: string, preferenceName: string, defaultValue?: number | boolean | string): number | boolean | string {
+    getUserPreference(settingsGroup: string, preferenceName: string, defaultValue?: number): number;
+    getUserPreference(settingsGroup: string, preferenceName: string, defaultValue?: string): string;
+    getUserPreference(settingsGroup: string, preferenceName: string, defaultValue?: boolean): boolean;
+    getUserPreference(settingsGroup: string, preferenceName: string, defaultValue?: any): any {
 
 
         // Cache the settings so we don't keep going out to the file
         // Cache the settings so we don't keep going out to the file
-        if (this.cachedProjectjPreferences == null) {
+        if (this.cachedProjectPreferences == null) {
             const prefsFileLoc = ToolCore.toolSystem.project.userPrefsFullPath;
             const prefsFileLoc = ToolCore.toolSystem.project.userPrefsFullPath;
             if (Atomic.fileSystem.fileExists(prefsFileLoc)) {
             if (Atomic.fileSystem.fileExists(prefsFileLoc)) {
                 let prefsFile = new Atomic.File(prefsFileLoc, Atomic.FILE_READ);
                 let prefsFile = new Atomic.File(prefsFileLoc, Atomic.FILE_READ);
                 try {
                 try {
                     let prefs = JSON.parse(prefsFile.readText());
                     let prefs = JSON.parse(prefsFile.readText());
-                    this.cachedProjectjPreferences = prefs;
+                    this.cachedProjectPreferences = prefs;
                 } finally {
                 } finally {
                     prefsFile.close();
                     prefsFile.close();
                 }
                 }
             }
             }
         }
         }
 
 
-        if (this.cachedProjectjPreferences && this.cachedProjectjPreferences[settingsGroup]) {
-            return this.cachedProjectjPreferences[settingsGroup][preferenceName] || defaultValue;
+        if (this.cachedProjectPreferences && this.cachedProjectPreferences[settingsGroup]) {
+            return this.cachedProjectPreferences[settingsGroup][preferenceName] || defaultValue;
         }
         }
 
 
         // if all else fails
         // if all else fails
@@ -211,7 +214,7 @@ class Preferences {
         }
         }
 
 
         // Cache the update
         // Cache the update
-        this.cachedProjectjPreferences = prefs;
+        this.cachedProjectPreferences = prefs;
     }
     }
 
 
 
 
@@ -250,7 +253,7 @@ class Preferences {
         }
         }
 
 
         // Cache the update
         // Cache the update
-        this.cachedProjectjPreferences = prefs;
+        this.cachedProjectPreferences = prefs;
     }
     }
 }
 }
 
 

+ 5 - 2
Script/AtomicEditor/hostExtensions/HostExtensionServices.ts

@@ -133,8 +133,11 @@ export class ProjectServicesProvider extends ServicesProvider<Editor.HostExtensi
      * @param  {number | boolean | string} defaultValue value to return if pref doesn't exist
      * @param  {number | boolean | string} defaultValue value to return if pref doesn't exist
      * @return {number|boolean|string}
      * @return {number|boolean|string}
      */
      */
-    getUserPreference(extensionName: string, preferenceName: string, defaultValue?: number | boolean | string): number | boolean | string {
-        return EditorUI.getEditor().getUserPreference(extensionName, preferenceName);
+    getUserPreference(settingsGroup: string, preferenceName: string, defaultValue?: number): number;
+    getUserPreference(settingsGroup: string, preferenceName: string, defaultValue?: string): string;
+    getUserPreference(settingsGroup: string, preferenceName: string, defaultValue?: boolean): boolean;
+    getUserPreference(extensionName: string, preferenceName: string, defaultValue?: any): any {
+        return EditorUI.getEditor().getUserPreference(extensionName, preferenceName, defaultValue);
     }
     }
 
 
 
 

+ 19 - 8
Script/AtomicEditor/ui/frames/ResourceFrame.ts

@@ -100,14 +100,7 @@ class ResourceFrame extends ScriptWidget {
 
 
         if (ext == ".js" || ext == ".txt" || ext == ".json" || ext == ".ts") {
         if (ext == ".js" || ext == ".txt" || ext == ".json" || ext == ".ts") {
 
 
-             let jseditor = new Editor.JSResourceEditor(path, this.tabcontainer);
-
-             jseditor.subscribeToEvent(EditorEvents.UserPreferencesChangedNotification, (data) => {
-                 // We can get the webclient here now, though this might not be a great place to set this up                 
-                 let webClient = jseditor.webView.webClient;
-             });
-
-             editor = jseditor;
+             editor = new Editor.JSResourceEditor(path, this.tabcontainer);
 
 
         } else if (ext == ".scene") {
         } else if (ext == ".scene") {
 
 
@@ -233,6 +226,23 @@ class ResourceFrame extends ScriptWidget {
         }
         }
     }
     }
 
 
+    handleUserPreferencesChanged() {
+        let prefsPath = ToolCore.toolSystem.project.userPrefsFullPath;
+        if (Atomic.fileSystem.fileExists(prefsPath)) {
+            for (let editorKey in this.editors) {
+                let editor = this.editors[editorKey];
+                if (editor.typeName == "JSResourceEditor") {
+                    let jsEditor = <Editor.JSResourceEditor>editor;
+
+                    // Get a reference to the web client so we can call the load preferences method
+                    let webClient = jsEditor.webView.webClient;
+
+                    webClient.executeJavaScript(`HOST_loadPreferences("atomic://${prefsPath}");`);
+                }
+            }
+        }
+    }
+
     handleWidgetEvent(ev: Atomic.UIWidgetEvent) {
     handleWidgetEvent(ev: Atomic.UIWidgetEvent) {
 
 
         if (ev.type == Atomic.UI_EVENT_TYPE_TAB_CHANGED && ev.target == this.tabcontainer) {
         if (ev.type == Atomic.UI_EVENT_TYPE_TAB_CHANGED && ev.target == this.tabcontainer) {
@@ -305,6 +315,7 @@ class ResourceFrame extends ScriptWidget {
         this.subscribeToEvent(EditorEvents.EditorResourceClose, (ev: EditorEvents.EditorCloseResourceEvent) => this.handleCloseResource(ev));
         this.subscribeToEvent(EditorEvents.EditorResourceClose, (ev: EditorEvents.EditorCloseResourceEvent) => this.handleCloseResource(ev));
         this.subscribeToEvent(EditorEvents.RenameResourceNotification, (ev: EditorEvents.RenameResourceEvent) => this.handleRenameResource(ev));
         this.subscribeToEvent(EditorEvents.RenameResourceNotification, (ev: EditorEvents.RenameResourceEvent) => this.handleRenameResource(ev));
         this.subscribeToEvent(EditorEvents.DeleteResourceNotification, (data) => this.handleDeleteResource(data));
         this.subscribeToEvent(EditorEvents.DeleteResourceNotification, (data) => this.handleDeleteResource(data));
+        this.subscribeToEvent(EditorEvents.UserPreferencesChangedNotification, (data) => this.handleUserPreferencesChanged());
 
 
         this.subscribeToEvent(UIEvents.ResourceEditorChanged, (data) => this.handleResourceEditorChanged(data));
         this.subscribeToEvent(UIEvents.ResourceEditorChanged, (data) => this.handleResourceEditorChanged(data));
 
 

+ 1 - 1
Script/AtomicWebViewEditor/clientExtensions/ClientExtensionServices.ts

@@ -204,7 +204,7 @@ export class WebViewServicesProvider extends ServicesProvider<Editor.ClientExten
     }
     }
 
 
     /**
     /**
-     * Called when prefeerences changes
+     * Called when preferences changes
      * @param  {Editor.EditorEvents.PreferencesChangedEvent} ev
      * @param  {Editor.EditorEvents.PreferencesChangedEvent} ev
      */
      */
     preferencesChanged() {
     preferencesChanged() {

+ 3 - 1
Script/TypeScript/EditorWork.d.ts

@@ -271,7 +271,9 @@ declare module Editor.HostExtensions {
          * @param  {number | boolean | string} defaultValue value to return if pref doesn't exist
          * @param  {number | boolean | string} defaultValue value to return if pref doesn't exist
          * @return {number|boolean|string}
          * @return {number|boolean|string}
          */
          */
-        getUserPreference(extensionName: string, preferenceName: string, defaultValue?: number | boolean | string): number | boolean | string;
+        getUserPreference(settingsGroup: string, preferenceName: string, defaultValue?: number): number;
+        getUserPreference(settingsGroup: string, preferenceName: string, defaultValue?: string): string;
+        getUserPreference(settingsGroup: string, preferenceName: string, defaultValue?: boolean): boolean;
 
 
         /**
         /**
          * Sets a user preference value in the user settings file
          * Sets a user preference value in the user settings file