UNPKG

@wcardinal/wcardinal-geditor

Version:

WebGL-based graphic editor, tester and viewer for supervisory systems

143 lines 6.49 kB
import { __extends } from "tslib"; import { DApplications, DControllers, toResized, UtilPointerEvent } from "@wcardinal/wcardinal-ui"; import { Point } from "pixi.js"; import { ECommandShapeCreate } from "../command/e-command-shape-create"; import { EToolImpl } from "./e-tool-impl"; var EToolShapeCreate = /** @class */ (function (_super) { __extends(EToolShapeCreate, _super); function EToolShapeCreate(selection, diagram) { var _this = _super.call(this) || this; _this._selection = selection; _this._diagram = diagram; _this._applicationLayer = null; _this._onDownPoint = new Point(); _this._onMovePoint = new Point(); _this._shape = null; _this._creator = undefined; _this._onDownBound = function (e) { _this.onDown(e); }; _this._onMoveBound = function (e) { _this.onMove(e); }; _this._onUpBound = function (e) { _this.onUp(e); }; return _this; } Object.defineProperty(EToolShapeCreate.prototype, "shape", { get: function () { return this._creator; }, set: function (creator) { this._creator = creator; }, enumerable: false, configurable: true }); EToolShapeCreate.prototype.onActivate = function () { this._diagram.on(UtilPointerEvent.down, this._onDownBound); }; EToolShapeCreate.prototype.onDeactivate = function () { this._diagram.off(UtilPointerEvent.down, this._onDownBound); this.onDone(); }; EToolShapeCreate.prototype.onDown = function (e) { var originalEvent = e.data.originalEvent; if (originalEvent.altKey) { return; } var selection = this._selection; var diagram = this._diagram; var diagramLayer = diagram.layer; var creator = this._creator; if (diagramLayer != null && creator != null && this._shape == null) { var onDownPoint = diagramLayer.toLocal(e.data.global, undefined, this._onDownPoint); diagram.snapper.toSnapped(onDownPoint, onDownPoint); this._onMovePoint.copyFrom(onDownPoint); var shape = (this._shape = creator()); toResized(shape, onDownPoint, onDownPoint, originalEvent.ctrlKey, originalEvent.shiftKey); shape.attach(diagramLayer); selection.modifier.disallow(); DControllers.getCommandController().push(new ECommandShapeCreate([shape], diagramLayer, this._selection, true)); var oldApplicationLayer = this._applicationLayer; if (oldApplicationLayer) { this._applicationLayer = null; var oldInteractionManager = oldApplicationLayer.renderer.plugins.interaction; oldInteractionManager.off(UtilPointerEvent.move, this._onMoveBound); var onUpBound = this._onUpBound; oldInteractionManager.off(UtilPointerEvent.up, onUpBound); oldInteractionManager.off(UtilPointerEvent.upoutside, onUpBound); oldInteractionManager.off(UtilPointerEvent.cancel, onUpBound); } var newApplicationLayer = DApplications.getLayer(diagram); if (newApplicationLayer) { this._applicationLayer = newApplicationLayer; var newInteractionManager = newApplicationLayer.renderer.plugins.interaction; newInteractionManager.on(UtilPointerEvent.move, this._onMoveBound); var onUpBound = this._onUpBound; newInteractionManager.on(UtilPointerEvent.up, onUpBound); newInteractionManager.on(UtilPointerEvent.upoutside, onUpBound); newInteractionManager.on(UtilPointerEvent.cancel, onUpBound); } } }; EToolShapeCreate.prototype.onMove = function (e) { var originalEvent = e.data.originalEvent; if (originalEvent.altKey) { return; } var shape = this._shape; if (shape) { var diagram = this._diagram; var diagramLayer = diagram.layer; var selection = this._selection; var applicationLayer = this._applicationLayer; if (diagramLayer && applicationLayer) { applicationLayer.lock(); var onDownPoint = this._onDownPoint; var onMovePoint = diagramLayer.toLocal(e.data.global, undefined, this._onMovePoint); diagram.snapper.toSnapped(onMovePoint, onMovePoint); toResized(shape, onDownPoint, onMovePoint, originalEvent.ctrlKey, originalEvent.shiftKey); selection.update("PROPERTY"); applicationLayer.unlock(); applicationLayer.update(); } } }; EToolShapeCreate.prototype.onUp = function (e) { this.onDone(); }; EToolShapeCreate.prototype.onDone = function () { var shape = this._shape; if (shape) { this._shape = null; var selection = this._selection; var onDownPoint = this._onDownPoint; var onMovePoint = this._onMovePoint; var applicationLayer = this._applicationLayer; if (applicationLayer) { this._applicationLayer = null; var interactionManager = applicationLayer.renderer.plugins.interaction; interactionManager.off(UtilPointerEvent.move, this._onMoveBound); var onUpBound = this._onUpBound; interactionManager.off(UtilPointerEvent.up, onUpBound); interactionManager.off(UtilPointerEvent.upoutside, onUpBound); interactionManager.off(UtilPointerEvent.cancel, onUpBound); applicationLayer.lock(); if (onDownPoint.x === onMovePoint.x && onDownPoint.y === onMovePoint.y) { onMovePoint.set(onDownPoint.x + 100, onDownPoint.y + 100); toResized(shape, onDownPoint, onMovePoint, false, false); } selection.modifier.allow(); selection.update("PROPERTY"); applicationLayer.unlock(); applicationLayer.update(); } this.emit("done", this); } }; return EToolShapeCreate; }(EToolImpl)); export { EToolShapeCreate }; //# sourceMappingURL=e-tool-shape-create.js.map