WelcomeFrame.ts 1.6 KB

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