devexpress-diagram
Version:
DevExpress Diagram Control
28 lines (26 loc) • 1.36 kB
text/typescript
import { SimpleCommandState } from "../CommandStates";
import { ChangeShapeImageHistoryItem } from "../../History/Properties/ChangeShapeImageHistoryItem";
import { SimpleCommandBase } from "../SimpleCommandBase";
import { Shape } from "../../Model/Shapes/Shape";
export class EditShapeImageCommandBase extends SimpleCommandBase {
isEnabled(): boolean {
const selectedShape = this.getSelectedShape();
return super.isEnabled() && !!selectedShape && !selectedShape.locked && selectedShape.enableImage && selectedShape.allowEditImage;
}
getValue(): any {
const selectedShape = this.getSelectedShape();
const imageUrl = (selectedShape) ? selectedShape.image.exportUrl : undefined;
return imageUrl;
}
getSelectedShape(): Shape {
const selectedShapes = this.control.selection.getSelectedShapes(true);
return (selectedShapes.length === 1) ? selectedShapes[0] : undefined;
}
executeCore(state: SimpleCommandState, parameter: string) {
this.control.history.beginTransaction();
const selectedUnlockedShapes = this.control.selection.getSelectedShapes(false);
this.control.history.addAndRedo(new ChangeShapeImageHistoryItem(selectedUnlockedShapes[0], parameter));
this.control.history.endTransaction();
return true;
}
}