Browse Source

Handle selection inspector closing, error message on creating more than one of a component type on a node in the selection (multiple script components supported)

Josh Engebretson 10 years ago
parent
commit
42f67131df

+ 25 - 8
Script/AtomicEditor/ui/frames/inspector/InspectorFrame.ts

@@ -68,11 +68,19 @@ class InspectorFrame extends ScriptWidget {
 
 
     }
     }
 
 
+    closeSelectionInspector() {
 
 
+        if (!this.selectionInspector)
+            return;
 
 
-    handleSceneNodeSelected(ev: Editor.SceneNodeSelectedEvent) {
+        var container = this.getWidget("inspectorcontainer");
+        container.deleteAllChildren();
 
 
-        var selection = this.sceneEditor.selection;
+        this.selectionInspector = null;
+
+    }
+
+    handleSceneNodeSelected(ev: Editor.SceneNodeSelectedEvent) {
 
 
         if (this.selectionInspector) {
         if (this.selectionInspector) {
 
 
@@ -81,23 +89,30 @@ class InspectorFrame extends ScriptWidget {
             } else {
             } else {
                 this.selectionInspector.removeNode(ev.node);
                 this.selectionInspector.removeNode(ev.node);
             }
             }
+
         } else if (ev.selected) {
         } else if (ev.selected) {
 
 
-          var container = this.getWidget("inspectorcontainer");
-          container.deleteAllChildren();
+            var container = this.getWidget("inspectorcontainer");
+            container.deleteAllChildren();
+
+            var inspector = this.selectionInspector = new SelectionInspector(this.sceneEditor);
+            inspector.addNode(ev.node);
+            container.addChild(inspector);
+
+        }
 
 
-          var inspector = this.selectionInspector = new SelectionInspector(this.sceneEditor);
-          inspector.addNode(ev.node);
-          container.addChild(inspector);
+        var selection = this.sceneEditor.selection;
 
 
+        if (!selection.selectedNodeCount) {
+            this.closeSelectionInspector();
         }
         }
 
 
-        return;
     }
     }
 
 
 
 
     handleProjectUnloaded(data) {
     handleProjectUnloaded(data) {
 
 
+        this.closeSelectionInspector();
         var container = this.getWidget("inspectorcontainer");
         var container = this.getWidget("inspectorcontainer");
         container.deleteAllChildren();
         container.deleteAllChildren();
     }
     }
@@ -121,6 +136,8 @@ class InspectorFrame extends ScriptWidget {
 
 
     inspectAsset(asset: ToolCore.Asset) {
     inspectAsset(asset: ToolCore.Asset) {
 
 
+        this.closeSelectionInspector();
+
         var container = this.getWidget("inspectorcontainer");
         var container = this.getWidget("inspectorcontainer");
         container.deleteAllChildren();
         container.deleteAllChildren();
 
 

+ 24 - 3
Script/AtomicEditor/ui/frames/inspector/SelectionInspector.ts

@@ -1,4 +1,5 @@
 
 
+import EditorUI = require("../../EditorUI");
 import CreateComponentButton = require("./CreateComponentButton");
 import CreateComponentButton = require("./CreateComponentButton");
 import ScriptWidget = require("ui/ScriptWidget");
 import ScriptWidget = require("ui/ScriptWidget");
 import EditorEvents = require("editor/EditorEvents");
 import EditorEvents = require("editor/EditorEvents");
@@ -232,7 +233,7 @@ class SelectionInspector extends ScriptWidget {
 
 
     removeSection(section: SelectionSection) {
     removeSection(section: SelectionSection) {
 
 
-        SelectionInspector.sectionStates[section.editType.typeName] = section.value ? true : false;        
+        SelectionInspector.sectionStates[section.editType.typeName] = section.value ? true : false;
 
 
         var index = this.sections.indexOf(section);
         var index = this.sections.indexOf(section);
         this.sections.splice(index, 1);
         this.sections.splice(index, 1);
@@ -381,9 +382,29 @@ class SelectionInspector extends ScriptWidget {
 
 
     }
     }
 
 
-
     handleSelectionCreateComponent(ev) {
     handleSelectionCreateComponent(ev) {
 
 
+        var valid = true;
+
+        if (ev.componentTypeName != "JSComponent") {
+
+            for (var i in this.nodes) {
+
+                var node = this.nodes[i];
+                if (node.getComponent(ev.componentTypeName, false)) {
+                    valid = false;
+                    break;
+                }
+            }
+        }
+
+        if (!valid) {
+
+            EditorUI.showModalError("Component Create", "Unable to create component, a node with an existing " + ev.componentTypeName + " component is selected");
+            return;
+
+        }
+
         for (var i in this.nodes) {
         for (var i in this.nodes) {
 
 
             var node = this.nodes[i];
             var node = this.nodes[i];
@@ -536,7 +557,7 @@ class SelectionInspector extends ScriptWidget {
 
 
     private static Ctor = (() => {
     private static Ctor = (() => {
 
 
-          SelectionInspector.sectionStates["Node"] = true;
+        SelectionInspector.sectionStates["Node"] = true;
 
 
     })();
     })();