UNPKG

devexpress-diagram

Version:

DevExpress Diagram Control

49 lines (43 loc) 1.69 kB
import { DiagramMouseEvent, MouseButton } from "../Event"; import { Rectangle } from "@devexpress/utils/lib/geometry/rectangle"; import { Point } from "@devexpress/utils/lib/geometry/point"; import { Selection } from "../../Selection/Selection"; import { MouseHandler } from "../MouseHandler"; import { MouseHandlerCancellableState } from "./MouseHandlerStateBase"; import { IVisualizerManager } from "../Visualizers/VisualizersManager"; export class MouseHandlerSelectionState extends MouseHandlerCancellableState { startPoint: Point; rectangle: Rectangle; constructor(handler: MouseHandler, protected selection: Selection, protected visualizerManager: IVisualizerManager) { super(handler); } finish() { this.handler.raiseDragEnd([]); this.visualizerManager.resetSelectionRectangle(); super.finish(); } cancelChanges() { } onMouseDown(evt: DiagramMouseEvent) { this.startPoint = evt.modelPoint; this.handler.raiseDragStart([]); } onMouseMove(evt: DiagramMouseEvent) { if(evt.button !== MouseButton.Left) this.handler.switchToDefaultState(); else { this.rectangle = Rectangle.fromPoints(this.startPoint, evt.modelPoint); this.visualizerManager.setSelectionRectangle(this.rectangle); } } onMouseUp(evt: DiagramMouseEvent) { if(this.rectangle !== undefined) this.selection.selectRect(this.rectangle); else this.selection.set([]); this.rectangle = undefined; this.handler.switchToDefaultState(); } }