WelcomeFrame.ts 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. import EditorEvents = require("../editor/EditorEvents");
  2. import EditorUI = require("./EditorUI");
  3. import ScriptWidget = require("./ScriptWidget");
  4. class WelcomeFrame extends ScriptWidget {
  5. constructor(parent: Atomic.UIWidget) {
  6. super();
  7. this.load("AtomicEditor/editor/ui/welcomeframe.tb.txt");
  8. this.recentProjects = <Atomic.UISelectList> this.getWidget("recentprojects");
  9. this.recentSource = new Atomic.UISelectItemSource();
  10. this.gravity = Atomic.UI_GRAVITY_ALL;
  11. this.subscribeToEvent("ProjectLoaded", (data) => {
  12. Editor.getPreferences().registerRecentProject(data.ProjectPath);
  13. })
  14. var container = <Atomic.UILayout> parent.getWidget("resourceviewcontainer");
  15. container.addChild(this);
  16. this.updateRecentProjects();
  17. }
  18. handleWidgetEvent(ev: Atomic.UIWidgetEvent) {
  19. if (ev.type == Atomic.UI_EVENT_TYPE_CLICK) {
  20. var id = ev.target.id;
  21. if (id == "recentprojects") {
  22. var itemID = Number(this.recentProjects.selectedItemID);
  23. if (itemID >= 0 && itemID < this.recent.length) {
  24. this.sendEvent(EditorEvents.LoadProject, { path: this.recent[itemID] });
  25. }
  26. return true;
  27. }
  28. if (id == "open project") {
  29. var utils = new Editor.FileUtils();
  30. var path = utils.openProjectFileDialog();
  31. if (path) {
  32. this.sendEvent(EditorEvents.LoadProject, { path: path });
  33. }
  34. return true;
  35. }
  36. if (id == "new project") {
  37. var mo = EditorUI.getModelOps();
  38. mo.showNewProject();
  39. return true;
  40. }
  41. }
  42. }
  43. updateRecentProjects() {
  44. this.recentSource.clear();
  45. // prune any that don't exist
  46. Editor.getPreferences().updateRecentFiles();
  47. this.recent = Editor.getPreferences().recentProjects;
  48. for (var i in this.recent) {
  49. this.recentSource.addItem(new Atomic.UISelectItem(this.recent[i], i))
  50. }
  51. this.recentProjects.source = this.recentSource;
  52. }
  53. recent: string[] = [];
  54. recentProjects: Atomic.UISelectList;
  55. recentSource: Atomic.UISelectItemSource;
  56. }
  57. export = WelcomeFrame;