import { Command } from "./Command"; /** * 工具切换命令 * 用于切换编辑器的工具模式(如绘画、选择、橡皮擦等) */ export class ToolCommand extends Command { /** * 创建一个工具切换命令 * @param {Object} options 配置选项 * @param {Object} options.toolManager 工具管理器实例 * @param {String} options.tool 要设置的工具名称 * @param {String} options.previousTool 先前的工具名称(可选,如果不提供会在执行时记录) * @param {Boolean} options.saveState 是否保存画布状态(默认为false) */ constructor(options) { super({ ...options, name: `切换工具: ${options.tool}`, description: `将工具切换为 ${options.tool}`, }); this.toolManager = options.toolManager; this.tool = options.tool; this.previousTool = options.previousTool || null; } /** * 执行工具切换 * @returns {String} 设置的工具名称 */ execute() { if (!this.toolManager) return null; // 记录当前工具(用于撤销) if (!this.previousTool) { this.previousTool = this.toolManager.getCurrentTool(); } // 切换工具 return this.toolManager.setTool(this.tool); } /** * 撤销工具切换 * @returns {String} 恢复的工具名称 */ undo() { if (!this.toolManager || !this.previousTool) return null; // 恢复到先前工具 return this.toolManager.setTool(this.previousTool); } }