ModalOps.ts 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. import EditorUI = require("../EditorUI");
  2. import ModalWindow = require("./ModalWindow");
  3. import NewProject = require("./NewProject");
  4. import CreateProject = require("./CreateProject");
  5. class ModalOps extends Atomic.ScriptObject {
  6. constructor() {
  7. super();
  8. this.dimmer = new Atomic.UIDimmer();
  9. }
  10. showCreateProject(projectTemplateFolder:string) {
  11. if (this.show()) {
  12. this.opWindow = new CreateProject(projectTemplateFolder);
  13. }
  14. }
  15. showNewProject() {
  16. if (this.show()) {
  17. this.opWindow = new NewProject();
  18. }
  19. }
  20. private show(): boolean {
  21. if (this.dimmer.parent) {
  22. console.log("WARNING: attempting to show modal while dimmer is active");
  23. return false;
  24. }
  25. if (this.opWindow) {
  26. console.log("WARNING: attempting to show modal while another opWindow is active");
  27. return false;
  28. }
  29. var view = EditorUI.getView();
  30. view.addChild(this.dimmer);
  31. return true;
  32. }
  33. hide() {
  34. if (this.opWindow) {
  35. var window = this.opWindow;
  36. this.opWindow = null;
  37. if (window.parent)
  38. window.parent.removeChild(window, false);
  39. var view = EditorUI.getView();
  40. view.setFocusRecursive();
  41. }
  42. if (this.dimmer.parent) {
  43. this.dimmer.parent.removeChild(this.dimmer, false);
  44. }
  45. }
  46. dimmer: Atomic.UIDimmer;
  47. opWindow: ModalWindow;
  48. }
  49. export = ModalOps;