devexpress-diagram
Version:
DevExpress Diagram Control
56 lines (50 loc) • 2.32 kB
text/typescript
import { Connector } from "../../Model/Connectors/Connector";
import { DiagramMouseEvent } from "../Event";
import { MouseHandlerDraggingState } from "./MouseHandlerDraggingState";
import { MouseHandler } from "../MouseHandler";
import { History } from "../../History/History";
import { DiagramModel } from "../../Model/Model";
import { ChangeConnectorTextPositionHistoryItem } from "../../History/Properties/ChangeConnectorTextPositionHistoryItem";
import { ItemKey } from "../../Model/DiagramItem";
import { ChangeConnectorTextHistoryItem } from "../../History/Properties/ChangeConnectorTextHistoryItem";
export class MouseHandlerMoveConnectorTextState extends MouseHandlerDraggingState {
connector: Connector;
position: number;
text: string;
savedText: string;
constructor(handler: MouseHandler, history: History, protected model: DiagramModel) {
super(handler, history);
}
onMouseDown(evt: DiagramMouseEvent) {
this.connector = this.model.findConnector(evt.source.key);
this.position = parseFloat(evt.source.value);
this.text = this.connector.getText(this.position);
this.savedText = "";
super.onMouseDown(evt);
}
onApplyChanges(evt: DiagramMouseEvent) {
const newPosition = this.connector.getTextPositionByPoint(evt.modelPoint);
if(newPosition !== this.position) {
const text = this.connector.getText(newPosition);
if(text !== "" && text !== this.text) {
this.history.addAndRedo(
new ChangeConnectorTextHistoryItem(this.connector, newPosition, "")
);
this.savedText = text;
}
this.history.addAndRedo(
new ChangeConnectorTextPositionHistoryItem(this.connector, this.position, newPosition)
);
if(this.savedText !== "" && this.savedText !== text) {
this.history.addAndRedo(
new ChangeConnectorTextHistoryItem(this.connector, this.position, this.savedText)
);
this.savedText = "";
}
this.position = newPosition;
}
}
getDraggingElementKeys(): ItemKey[] {
return [this.connector.key];
}
}