@wcardinal/wcardinal-geditor
Version:
WebGL-based graphic editor, tester and viewer for supervisory systems
143 lines • 6.49 kB
JavaScript
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