gojs
Version:
Interactive diagrams, charts, and graphs, such as trees, flowcharts, orgcharts, UML, BPMN, or business diagrams
112 lines (111 loc) • 5.3 kB
JavaScript
var __extends = (this && this.__extends) || (function () {
var extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
define(["require", "exports", "../../../release/go"], function (require, exports, go) {
"use strict";
var WallBuildingTool = (function (_super) {
__extends(WallBuildingTool, _super);
function WallBuildingTool() {
var _this = _super.call(this) || this;
_this.name = "WallBuilding";
_this._startPoint = null;
_this._endPoint = null;
_this._wallReshapingTool = null;
return _this;
}
Object.defineProperty(WallBuildingTool.prototype, "startPoint", {
get: function () { return this._startPoint; },
set: function (value) { this._startPoint = value; },
enumerable: true,
configurable: true
});
Object.defineProperty(WallBuildingTool.prototype, "endPoint", {
get: function () { return this._endPoint; },
set: function (value) { this._endPoint = value; },
enumerable: true,
configurable: true
});
Object.defineProperty(WallBuildingTool.prototype, "wallReshapingTool", {
get: function () { return this._wallReshapingTool; },
set: function (value) { this._wallReshapingTool = value; },
enumerable: true,
configurable: true
});
WallBuildingTool.prototype.doActivate = function () {
this.endPoint = null;
this.startTransaction(this.name);
this.diagram.isMouseCaptured = true;
var diagram = this.diagram;
var tool = this;
var fp = diagram;
diagram.model.setDataProperty(diagram.model.modelData, "wallThickness", fp.convertUnitsToPixels(parseFloat("5")));
var point1 = tool.diagram.lastInput.documentPoint;
var gs = diagram.model.modelData.gridSize;
if (!(tool.diagram.toolManager.draggingTool.isGridSnapEnabled))
gs = 1;
var newx = gs * Math.round(point1.x / gs);
var newy = gs * Math.round(point1.y / gs);
var newPoint1 = new go.Point(newx, newy);
this.startPoint = newPoint1;
this.wallReshapingTool = tool.diagram.toolManager.mouseDownTools.elt(3);
this.isActive = true;
};
WallBuildingTool.prototype.doMouseDown = function () {
var diagram = this.diagram;
var tool = this;
tool.diagram.currentCursor = 'crosshair';
var data = { key: "wall", category: "WallGroup", caption: "Wall", type: "Wall", startpoint: tool.startPoint, endpoint: tool.startPoint, thickness: parseFloat(diagram.model.modelData.wallThickness), isGroup: true, notes: "" };
this.diagram.model.addNodeData(data);
var wall = diagram.findPartForKey(data.key);
var fp = diagram;
fp.updateWall(wall);
var part = diagram.findPartForData(data);
tool.transactionResult = tool.name;
diagram.raiseDiagramEvent('PartCreated', part);
tool.wallReshapingTool.isEnabled = true;
diagram.select(part);
tool.wallReshapingTool.isBuilding = true;
tool.wallReshapingTool.adornedShape = part.findObject("SHAPE");
tool.wallReshapingTool.doActivate();
};
WallBuildingTool.prototype.doKeyDown = function () {
var fp = this.diagram;
var e = fp.lastInput;
if (e.key === "Esc") {
var wall = fp.selection.first();
fp.remove(wall);
fp.pointNodes.iterator.each(function (node) { fp.remove(node); });
fp.dimensionLinks.iterator.each(function (link) { fp.remove(link); });
fp.pointNodes.clear();
fp.dimensionLinks.clear();
this.doDeactivate();
}
go.Tool.prototype.doKeyDown.call(this);
};
WallBuildingTool.prototype.doMouseMove = function () {
this.wallReshapingTool.doMouseMove();
};
WallBuildingTool.prototype.doDeactivate = function () {
var diagram = this.diagram;
this.diagram.currentCursor = "";
this.diagram.isMouseCaptured = false;
this.wallReshapingTool.isEnabled = false;
this.wallReshapingTool.adornedShape = null;
this.wallReshapingTool.doDeactivate();
this.wallReshapingTool.isBuilding = false;
var fp = diagram;
fp.updateWallDimensions();
this.stopTransaction();
this.isActive = false;
};
return WallBuildingTool;
}(go.Tool));
return WallBuildingTool;
});