import strings = require("ui/EditorStrings"); import EditorEvents = require("editor/EditorEvents"); import EditorUI = require("ui/EditorUI"); import MenuItemSources = require("./MenuItemSources"); class HierarchyFrameMenus extends Atomic.ScriptObject { constructor() { super(); MenuItemSources.createMenuItemSource("hierarchy create items", createItems); MenuItemSources.createMenuItemSource("node context general", nodeGeneralContextItems); this.subscribeToEvent(EditorEvents.ContentFolderChanged, (ev: EditorEvents.ContentFolderChangedEvent) => { this.contentFolder = ev.path; }) } handlePopupMenu(target: Atomic.UIWidget, refid: string, node: Atomic.Node): boolean { if (!target || !refid) return false; if (target.id == "create popup") { var child: Atomic.Node; if (refid == "create_node") { if (node) { child = node.createChild("Node"); } } else if (refid == "create_light") { if (node) { child = node.createChild("Light"); child.createComponent("Light"); } } if (child) { this.sendEvent(EditorEvents.ActiveNodeChange, { node: child }); } return true; } return false; } handleNodeContextMenu(target: Atomic.UIWidget, refid: string): boolean { if (target.id == "node context menu") { var node = target['node']; if (!node) { return false; } if (refid == "delete_node") { node.removeAllComponents(); node.remove(); } else if (refid == "duplicate_node") { var newnode = node.clone(); this.sendEvent(EditorEvents.ActiveNodeChange, { node: newnode }); } return true; } return false; } createNodeContextMenu(parent: Atomic.UIWidget, node: Atomic.Node, x: number, y: number) { var menu = new Atomic.UIMenuWindow(parent, "node context menu"); menu['node'] = node; var srcName: string = "node context general"; var src = MenuItemSources.getMenuItemSource(srcName); menu.show(src, x, y); } contentFolder: string; } export = HierarchyFrameMenus; // initialization var StringID = strings.StringID; var createItems = { Node: ["create_node", undefined, "Folder.icon"], "-1": null, "3D": { Light: ["create_light", undefined, "JavascriptBitmap"] } }; var nodeGeneralContextItems = { "Duplicate": ["duplicate_node", undefined, ""], "-1": null, "Delete": ["delete_node", undefined, ""] };