MainFrame.ts 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. //
  2. // Copyright (c) 2014-2015, THUNDERBEAST GAMES LLC All rights reserved
  3. // LICENSE: Atomic Game Engine Editor and Tools EULA
  4. // Please see LICENSE_ATOMIC_EDITOR_AND_TOOLS.md in repository root for
  5. // license information: https://github.com/AtomicGameEngine/AtomicGameEngine
  6. //
  7. import ProjectFrame = require("./ProjectFrame");
  8. import ResourceFrame = require("./ResourceFrame");
  9. import WelcomeFrame = require("./WelcomeFrame");
  10. import InspectorFrame = require("./inspector/InspectorFrame");
  11. import HierarchyFrame = require("./HierarchyFrame");
  12. import MainToolbar = require("ui//MainToolbar");
  13. import UIEvents = require("ui/UIEvents");
  14. import ScriptWidget = require("ui/ScriptWidget");
  15. import MainFrameMenu = require("./menus/MainFrameMenu");
  16. import MenuItemSources = require("./menus/MenuItemSources");
  17. class MainFrame extends ScriptWidget {
  18. constructor() {
  19. super();
  20. this.load("AtomicEditor/editor/ui/mainframe.tb.txt");
  21. this.inspectorlayout = <Atomic.UILayout> this.getWidget("inspectorlayout");
  22. this.getWidget("consolecontainer").visibility = Atomic.UI_WIDGET_VISIBILITY_GONE;
  23. this.inspectorframe = new InspectorFrame();
  24. this.inspectorlayout.addChild(this.inspectorframe);
  25. this.projectframe = new ProjectFrame(this);
  26. this.hierarchyFrame = new HierarchyFrame(this);
  27. this.welcomeFrame = new WelcomeFrame(this);
  28. this.resourceframe = new ResourceFrame(this);
  29. this.mainToolbar = new MainToolbar(this.getWidget("maintoolbarcontainer"));
  30. this.menu = new MainFrameMenu();
  31. this.disableProjectMenus();
  32. this.subscribeToEvent(UIEvents.ResourceEditorChanged, (data) => this.handleResourceEditorChanged(data));
  33. this.subscribeToEvent("ProjectLoaded", (data) => {
  34. this.showWelcomeFrame(false);
  35. this.enableProjectMenus();
  36. });
  37. this.subscribeToEvent("ProjectUnloaded", (data) => {
  38. this.showWelcomeFrame(true);
  39. this.disableProjectMenus();
  40. });
  41. this.showWelcomeFrame(true);
  42. }
  43. frameVisible(frame: Atomic.UIWidget): boolean {
  44. var container = <Atomic.UILayout> this.getWidget("resourceviewcontainer");
  45. var child = null;
  46. for (child = container.firstChild; child; child = child.next) {
  47. if (child == frame)
  48. return true;
  49. }
  50. return false;
  51. }
  52. showWelcomeFrame(show: boolean) {
  53. if (show) {
  54. this.showInspectorFrame(false);
  55. this.welcomeFrame.visibility = Atomic.UI_WIDGET_VISIBILITY_VISIBLE;
  56. this.resourceframe.visibility = Atomic.UI_WIDGET_VISIBILITY_GONE;
  57. }
  58. else {
  59. this.showInspectorFrame(true);
  60. this.resourceframe.visibility = Atomic.UI_WIDGET_VISIBILITY_VISIBLE;
  61. this.welcomeFrame.visibility = Atomic.UI_WIDGET_VISIBILITY_GONE;
  62. }
  63. }
  64. showInspectorFrame(show: boolean) {
  65. if (show) {
  66. this.inspectorlayout.visibility = Atomic.UI_WIDGET_VISIBILITY_VISIBLE;
  67. this.inspectorframe.visibility = Atomic.UI_WIDGET_VISIBILITY_VISIBLE;
  68. } else {
  69. this.inspectorframe.visibility = Atomic.UI_WIDGET_VISIBILITY_GONE;
  70. this.inspectorlayout.visibility = Atomic.UI_WIDGET_VISIBILITY_GONE;
  71. }
  72. }
  73. onEventClick(target: Atomic.UIWidget, refid: string): boolean {
  74. if (this.menu.handlePopupMenu(target, refid))
  75. return true;
  76. var src = MenuItemSources.getMenuItemSource(target.id);
  77. if (src) {
  78. var menu = new Atomic.UIMenuWindow(target, target.id + " popup");
  79. menu.show(src);
  80. return true;
  81. }
  82. return false;
  83. }
  84. disableProjectMenus() {
  85. this.getWidget("menu edit").setStateRaw(Atomic.UI_WIDGET_STATE_DISABLED);
  86. this.getWidget("menu build").setStateRaw(Atomic.UI_WIDGET_STATE_DISABLED);
  87. this.getWidget("menu tools").setStateRaw(Atomic.UI_WIDGET_STATE_DISABLED);
  88. }
  89. enableProjectMenus() {
  90. this.getWidget("menu edit").setStateRaw(Atomic.UI_WIDGET_STATE_NONE);
  91. this.getWidget("menu build").setStateRaw(Atomic.UI_WIDGET_STATE_NONE);
  92. this.getWidget("menu tools").setStateRaw(Atomic.UI_WIDGET_STATE_NONE);
  93. }
  94. shutdown() {
  95. this.resourceframe.shutdown();
  96. this.deleteAllChildren();
  97. }
  98. handleResourceEditorChanged(data): void {
  99. var editor = <Editor.ResourceEditor> data.editor;
  100. if (editor) {
  101. //this.showInspectorFrame(editor.requiresInspector());
  102. } else {
  103. //this.showInspectorFrame(false);
  104. }
  105. }
  106. projectframe: ProjectFrame;
  107. resourceframe: ResourceFrame;
  108. inspectorframe: InspectorFrame;
  109. hierarchyFrame: HierarchyFrame;
  110. welcomeFrame: WelcomeFrame;
  111. inspectorlayout: Atomic.UILayout;
  112. mainToolbar: MainToolbar;
  113. menu: MainFrameMenu;
  114. }
  115. export = MainFrame;