Browse Source

Minor UX improvement: try closing current project automatically for user when open a new project

marynate 10 years ago
parent
commit
8b4198db56

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

@@ -128,8 +128,9 @@ class Editor extends Atomic.ScriptObject {
         if (system.project) {
 
             system.closeProject();
-
+            this.sendEvent(EditorEvents.ProjectClosed);
         }
+
     }
 
     handleProjectUnloaded(event) {

+ 1 - 0
Script/AtomicEditor/editor/EditorEvents.ts

@@ -47,6 +47,7 @@ export interface ContentFolderChangedEvent {
 }
 
 export const CloseProject = "EditorCloseProject";
+export const ProjectClosed = "EditorProjectClosed";
 
 export const LoadProject = "EditorLoadProject";
 export interface LoadProjectEvent {

+ 19 - 8
Script/AtomicEditor/ui/frames/menus/MainFrameMenu.ts

@@ -131,22 +131,33 @@ class MainFrameMenu extends Atomic.ScriptObject {
             }
             if (refid == "file open project") {
 
-                if (ToolCore.toolSystem.project) {
+                var utils = new Editor.FileUtils();
+                var path = utils.openProjectFileDialog();
 
-                    EditorUI.showModalError("Project Open",
-                        "Please close the current project before opening new one");
+                if (path=="") {
 
                     return true;
+
                 }
 
-                var utils = new Editor.FileUtils();
-                var path = utils.openProjectFileDialog();
-                if (path) {
+                var openProject = () => this.sendEvent(EditorEvents.LoadProject, { path: path });
 
-                    this.sendEvent(EditorEvents.LoadProject, { path: path });
+                if (ToolCore.toolSystem.project) {
 
-                }
+                    this.subscribeToEvent(EditorEvents.ProjectClosed, () => {
+
+                        this.unsubscribeFromEvent(EditorEvents.ProjectClosed);
+                        openProject();
+
+                    });
+
+                    this.sendEvent(EditorEvents.CloseProject);
 
+                } else {
+
+                    openProject();
+
+                }
 
                 return true;