drawer-manager.js 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. /*
  2. * iGeom by LInE
  3. * Free software to student private data
  4. *
  5. * http://www.matematica.br/igeom
  6. * http://www.usp.br/line
  7. *
  8. * ./app/core/drawers/drawer-manager.js
  9. *
  10. * @version 2020/06/14: now using app/core/models/application/actions/action.js
  11. */
  12. import { stageManager as Stages } from "../application/stage-manager";
  13. class DrawerManager {
  14. constructor () {
  15. this.currentStage = this._getCurrentStage();
  16. }
  17. _getCurrentStage () {
  18. return Stages.getCurrentStage();
  19. }
  20. _getCurrentKonvaStage () {
  21. return Stages.getCurrentKonvaStage();
  22. }
  23. getStages () {
  24. return Stages.getStages();
  25. }
  26. draw (object) {
  27. this.currentStage.draw(object);
  28. }
  29. addAggregator (aggregator) {
  30. this.currentStage.addAggregator(aggregator);
  31. }
  32. batchDraw () {
  33. // Old: Stages.getCurrentStage().getCurrentKonvaLayer().batchDraw();
  34. var currentStage, currentKonvaLayer;
  35. currentStage = Stages.getCurrentStage();
  36. currentKonvaLayer = currentStage.getCurrentKonvaLayer();
  37. currentKonvaLayer.batchDraw();
  38. }
  39. addAction (action) { // drawer-manager.js!addAction(action): error TypeError: cyclic object value: actionManager, action(id,type)=(9,1)
  40. // Old: Stages.getCurrentLayer().actionManager.push(action);
  41. var currentLayer, actionManager, auxE = "";
  42. try {
  43. currentLayer = Stages.getCurrentLayer(); // app/core/drawers/stage.js: getCurrentLayer(): return this.layer;
  44. auxE += "currentLayer, ";
  45. actionManager = currentLayer.actionManager; // app/core/drawers/layer.js: "this.actionManager = new ActionManager();", with ./app/core/models/application/actions/action-manager.js
  46. auxE += "actionManager, ";
  47. actionManager.push(action); // app/core/models/application/actions/action-manager.js: push(action): this.actions.push(action);
  48. } catch (error) {
  49. if (action && action!=undefined) auxE += "action(id,type)=(" + action.id + "," + action.type + ")";
  50. else auxE += "action(id,type)=" + action;
  51. console.log("drawer-manager.js!addAction(action): error '" + error + "': " + auxE);
  52. }
  53. }
  54. removeAction (action) {
  55. Stages.getCurrentLayer().actionManager.remove(action);
  56. }
  57. }
  58. export const drawerManager = new DrawerManager();