MainFrame.ts 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. import ProjectFrame = require("./ProjectFrame");
  2. import ResourceFrame = require("./ResourceFrame");
  3. import WelcomeFrame = require("./WelcomeFrame");
  4. import InspectorFrame = require("./inspector/InspectorFrame");
  5. import HierarchyFrame = require("./HierarchyFrame");
  6. import MainToolbar = require("./MainToolbar");
  7. import MessageModal = require("./modal/MessageModal");
  8. import UIEvents = require("./UIEvents");
  9. import ScriptWidget = require("./ScriptWidget");
  10. import MainFrameMenu = require("./MainFrameMenu");
  11. class MainFrame extends ScriptWidget {
  12. constructor() {
  13. super();
  14. this.load("AtomicEditor/editor/ui/mainframe.tb.txt");
  15. this.inspectorlayout = <Atomic.UILayout> this.getWidget("inspectorlayout");
  16. this.getWidget("consolecontainer").visibility = Atomic.UI_WIDGET_VISIBILITY_GONE;
  17. this.inspectorframe = new InspectorFrame();
  18. this.inspectorlayout.addChild(this.inspectorframe);
  19. this.projectframe = new ProjectFrame(this);
  20. this.hierarchyFrame = new HierarchyFrame(this);
  21. this.welcomeFrame = new WelcomeFrame(this);
  22. this.resourceframe = new ResourceFrame(this);
  23. this.mainToolbar = new MainToolbar(this.getWidget("maintoolbarcontainer"));
  24. this.menu = new MainFrameMenu();
  25. this.subscribeToEvent(UIEvents.ResourceEditorChanged, (data) => this.handleResourceEditorChanged(data));
  26. this.subscribeToEvent("ProjectLoaded", (data) => {
  27. this.showResourceFrame(true);
  28. });
  29. this.showWelcomeFrame(true);
  30. }
  31. frameVisible(frame: Atomic.UIWidget): boolean {
  32. var container = <Atomic.UILayout> this.getWidget("resourceviewcontainer");
  33. var child = null;
  34. for (child = container.firstChild; child; child = child.next) {
  35. if (child == frame)
  36. return true;
  37. }
  38. return false;
  39. }
  40. showResourceFrame(show: boolean) {
  41. if (show && this.frameVisible(this.resourceframe))
  42. return;
  43. if (show && this.frameVisible(this.welcomeFrame))
  44. this.showWelcomeFrame(false);
  45. var container = <Atomic.UILayout> this.getWidget("resourceviewcontainer");
  46. var child = null;
  47. for (child = container.firstChild; child; child = child.next) {
  48. if (child == this.resourceframe)
  49. break;
  50. }
  51. if (show) {
  52. this.showInspectorFrame(true);
  53. if (!child) {
  54. container.addChild(this.resourceframe);
  55. }
  56. }
  57. else {
  58. if (child)
  59. container.removeChild(child);
  60. }
  61. }
  62. showWelcomeFrame(show: boolean) {
  63. if (show && this.frameVisible(this.welcomeFrame))
  64. return;
  65. if (show && this.frameVisible(this.resourceframe))
  66. this.showResourceFrame(false);
  67. var container = <Atomic.UILayout> this.getWidget("resourceviewcontainer");
  68. var child = null;
  69. for (child = container.firstChild; child; child = child.next) {
  70. if (child == this.welcomeFrame)
  71. break;
  72. }
  73. if (show) {
  74. this.showInspectorFrame(false);
  75. this.welcomeFrame.updateRecentProjects();
  76. if (!child) {
  77. container.addChild(this.welcomeFrame);
  78. }
  79. }
  80. else {
  81. if (child)
  82. container.removeChild(child);
  83. }
  84. }
  85. showInspectorFrame(show: boolean) {
  86. if (show) {
  87. this.inspectorlayout.visibility = Atomic.UI_WIDGET_VISIBILITY_VISIBLE;
  88. this.inspectorframe.visibility = Atomic.UI_WIDGET_VISIBILITY_VISIBLE;
  89. } else {
  90. this.inspectorframe.visibility = Atomic.UI_WIDGET_VISIBILITY_GONE;
  91. this.inspectorlayout.visibility = Atomic.UI_WIDGET_VISIBILITY_GONE;
  92. }
  93. }
  94. onEventClick(target: Atomic.UIWidget, refid: string): boolean {
  95. if (this.menu.handlePopupMenu(target, refid))
  96. return true;
  97. var src = this.menu.getMenuItemSource(target.id);
  98. if (src) {
  99. var menu = new Atomic.UIMenuWindow(target, target.id + " popup");
  100. menu.show(src);
  101. return true;
  102. }
  103. return false;
  104. }
  105. handleResourceEditorChanged(data): void {
  106. var editor = <Editor.ResourceEditor> data.editor;
  107. if (editor) {
  108. //this.showInspectorFrame(editor.requiresInspector());
  109. } else {
  110. //this.showInspectorFrame(false);
  111. }
  112. }
  113. projectframe: ProjectFrame;
  114. resourceframe: ResourceFrame;
  115. inspectorframe: InspectorFrame;
  116. hierarchyFrame: HierarchyFrame;
  117. welcomeFrame: WelcomeFrame;
  118. inspectorlayout: Atomic.UILayout;
  119. mainToolbar: MainToolbar;
  120. menu: MainFrameMenu;
  121. }
  122. export = MainFrame;