WelcomeFrame.ts 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. import EditorEvents = require("editor/EditorEvents");
  2. import EditorUI = require("ui/EditorUI");
  3. import ScriptWidget = require("ui/ScriptWidget");
  4. import Preferences = require("editor/Preferences");
  5. class WelcomeFrame extends ScriptWidget {
  6. constructor(parent: Atomic.UIWidget) {
  7. super();
  8. this.load("AtomicEditor/editor/ui/welcomeframe.tb.txt");
  9. var recentProjects = <Atomic.UILayout> this.getWidget("recentprojects");
  10. this.gravity = Atomic.UI_GRAVITY_ALL;
  11. this.recentList = new Atomic.UIListView();
  12. this.recentList.rootList.id = "recentList";
  13. recentProjects.addChild(this.recentList);
  14. var container = <Atomic.UILayout> parent.getWidget("resourceviewcontainer");
  15. container.addChild(this);
  16. this.updateRecentProjects();
  17. this.subscribeToEvent(EditorEvents.CloseProject, () => {
  18. this.updateRecentProjects();
  19. });
  20. }
  21. handleWidgetEvent(ev: Atomic.UIWidgetEvent) {
  22. if (ev.type == Atomic.UI_EVENT_TYPE_RIGHT_POINTER_UP) {
  23. if (ev.target.id == "recentList") {
  24. this.openFrameMenu(ev.x, ev.y);
  25. }
  26. }
  27. if (ev.type == Atomic.UI_EVENT_TYPE_CLICK) {
  28. var id = ev.target.id;
  29. if (id == "open project") {
  30. var utils = new Editor.FileUtils();
  31. var path = utils.openProjectFileDialog();
  32. if (path) {
  33. this.sendEvent(EditorEvents.LoadProject, { path: path });
  34. }
  35. return true;
  36. }
  37. if (id == "new project") {
  38. var mo = EditorUI.getModelOps();
  39. mo.showNewProject();
  40. return true;
  41. }
  42. if (id == "recentList") {
  43. var path: string = this.recent[this.recentList.getSelectedItemID()];
  44. this.sendEvent(EditorEvents.LoadProject, { path: path });
  45. }
  46. if (id == "recentProjectsContextMenu") {
  47. var prefs = Preferences.getInstance();
  48. if (ev.refid == "clear recent projects") {
  49. prefs.deleteRecentProjects();
  50. this.updateRecentProjects();
  51. }
  52. }
  53. }
  54. }
  55. updateRecentProjects() {
  56. this.recentList.deleteAllItems();
  57. var prefs = Preferences.getInstance();
  58. prefs.updateRecentProjects();
  59. this.recent = prefs.recentProjects;
  60. for (var i in this.recent) {
  61. this.recentList.addRootItem(this.recent[i], "Folder.icon", i);
  62. }
  63. }
  64. private openFrameMenu(x: number, y: number) {
  65. var menu = new Atomic.UIMenuWindow(this, "recentProjectsContextMenu");
  66. var menuButtons = new Atomic.UISelectItemSource();
  67. menuButtons.addItem(new Atomic.UISelectItem("Clear Recent Projects", "clear recent projects"));
  68. menu.show(menuButtons, x, y);
  69. }
  70. recent: string[] = [];
  71. recentList: Atomic.UIListView;
  72. }
  73. export = WelcomeFrame;