devexpress-diagram
Version:
DevExpress Diagram Control
49 lines (43 loc) • 1.69 kB
text/typescript
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();
}
}