app.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. var app = (function() {
  2. let _tools = [];
  3. let _menu = [];
  4. let _selectedTool = [];
  5. let _objects = [];
  6. let _state = APP_STATE.NONE;
  7. let _stage = _createStage();
  8. function _bootstrap() {
  9. configureStageEvents();
  10. _layer = _currentLayer();
  11. selector.bootstrap();
  12. }
  13. function _createStage() {
  14. return stages.create();
  15. }
  16. function _currentLayer() {
  17. return stages.getCurrentLayer();
  18. }
  19. function configureStageEvents() {
  20. _stage.on("mousedown ", function(e) {
  21. if (e.target === _stage) {
  22. _setState(APP_STATE.NONE);
  23. return;
  24. }
  25. if (e.target.id != undefined) {
  26. _setState(APP_STATE.OBJECT_SELECTED);
  27. return;
  28. }
  29. });
  30. _stage.on("click tap", function(e) {
  31. let tool = _getSelectedTool();
  32. if (tool != undefined) {
  33. tool.draw();
  34. return;
  35. }
  36. if (e.target === _stage) {
  37. _setState(APP_STATE.NONE);
  38. return;
  39. }
  40. });
  41. }
  42. function _setSelectedTool(tool) {
  43. _clearSelectedTool();
  44. _setState(APP_STATE.TOOL_SELECTED);
  45. if (tool.id != undefined) {
  46. document.getElementById("btn-" + tool.id).disabled = true;
  47. }
  48. _selectedTool.push(tool);
  49. }
  50. function _clearSelectedTool() {
  51. let tool = _getSelectedTool();
  52. if (tool != undefined) {
  53. if (tool.id != undefined) {
  54. document.getElementById("btn-" + tool.id).disabled = false;
  55. }
  56. }
  57. _selectedTool = [];
  58. _setStatus("");
  59. _setState(APP_STATE.NONE);
  60. }
  61. function _getSelectedTool() {
  62. if (_selectedTool.length > 0) return _selectedTool[0];
  63. return undefined;
  64. }
  65. function _getRelativePointerPosition() {
  66. return _stage.getPointerPosition();
  67. }
  68. function _setStatus(status) {
  69. document.getElementById("status").innerHTML = status;
  70. }
  71. function _pushObject(object) {
  72. _objects.push(object);
  73. }
  74. function _getObjects() {
  75. return _objects;
  76. }
  77. function _setState(state) {
  78. _state = state;
  79. }
  80. function _getState() {
  81. return _state;
  82. }
  83. function _menuClick(e) {
  84. _setState(APP_STATE.TOOL_SELECTED);
  85. if (e.click());
  86. }
  87. return {
  88. stage: _stage,
  89. currentLayer: _currentLayer,
  90. bootstrap: _bootstrap,
  91. tools: _tools,
  92. setSelectedTool: _setSelectedTool,
  93. clearSelectedTool: _clearSelectedTool,
  94. getSelectedTool: _getSelectedTool,
  95. pos: _getRelativePointerPosition,
  96. setStatus: _setStatus,
  97. pushObject: _pushObject,
  98. getObjects: _getObjects,
  99. setState: _setState,
  100. getState: _getState,
  101. menuClick: _menuClick
  102. };
  103. })();