WelcomeFrame.ts 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  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. var container = <Atomic.UILayout> parent.getWidget("resourceviewcontainer");
  12. container.addChild(this);
  13. this.updateRecentProjects();
  14. }
  15. handleWidgetEvent(ev: Atomic.UIWidgetEvent) {
  16. if (ev.type == Atomic.UI_EVENT_TYPE_CLICK) {
  17. var id = ev.target.id;
  18. if (id == "recentprojects") {
  19. var itemID = Number(this.recentProjects.selectedItemID);
  20. if (itemID >= 0 && itemID < this.recent.length) {
  21. this.sendEvent(EditorEvents.LoadProject, { path: this.recent[itemID] });
  22. }
  23. return true;
  24. }
  25. if (id == "open project") {
  26. var utils = new Editor.FileUtils();
  27. var path = utils.openProjectFileDialog();
  28. if (path) {
  29. this.sendEvent(EditorEvents.LoadProject, { path: path });
  30. }
  31. return true;
  32. }
  33. if (id == "new project") {
  34. var mo = EditorUI.getModelOps();
  35. mo.showNewProject();
  36. return true;
  37. }
  38. }
  39. }
  40. updateRecentProjects() {
  41. this.recentSource.clear();
  42. // prune any that don't exist
  43. Atomic.editorMode.preferences.updateRecentFiles();
  44. this.recent = Atomic.editorMode.preferences.recentProjects;
  45. for (var i in this.recent) {
  46. this.recentSource.addItem(new Atomic.UISelectItem(this.recent[i], i))
  47. }
  48. this.recentProjects.source = this.recentSource;
  49. }
  50. recent: string[] = [];
  51. recentProjects: Atomic.UISelectList;
  52. recentSource: Atomic.UISelectItemSource;
  53. }
  54. export = WelcomeFrame;