UNPKG

devexpress-diagram

Version:

DevExpress Diagram Control

56 lines (50 loc) 2.32 kB
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]; } }