阶段一百一十二:设计器工作区与交互整理
实现范围
设计器采用统一的文件命令、文档工具栏、结构导航、连续画布和上下文属性检查器。结构树显示中文类型、实际文字与 ID,支持搜索、折叠和键盘导航;表格及行、列设置按层展开。节点属性按用途分组,ID 和正文靠前,多选差异显示“多个值”。文件菜单、插入菜单、操作搜索、导出任务和帮助使用一致的控件与焦点反馈。
Ctrl+K 搜索可执行操作;专注模式隐藏两侧面板。编辑视图写入地址参数,支持重新打开相同视图。备用字体诊断按类别归并,保留原始记录;草稿错误同时出现在编辑区与状态栏。源码高亮、实时 Java 预览、多选排序、资源、表格工具与损失策略继续使用现有契约。没有改动文档模型或排版后端。
操作入口见设计器指南。
构建与静态检查
powershell
.\gradlew.bat :export4j-designer:test :export4j-designer:distZip --gradle-user-home build/gradle-validation --offline设计器 29 项 Java 测试通过,无失败、错误或跳过。全部前端脚本通过 node --check;HTML 无重复 ID,脚本引用存在且加载顺序正确。git diff --check 通过。应用从本次分发 ZIP 的真实 JAR 启动,新增工作区脚本使用固定静态路由,不扩大文件系统读取范围。
浏览器验收
| 场景 | 实际结果 |
|---|---|
| 默认结构与搜索 | 表格默认折叠;搜索末行文字可定位深层单元格并保留祖先 |
| 鼠标展开与键盘折叠 | 点击表格箭头展开,左方向键折叠;焦点与展开状态可观察 |
| 正文输入和切换节点 | 输入新标题后自动预览,切换节点将正文写入模板 |
| 多选属性 | 两个节点可一起修改字号;ID 不参与批量编辑,不同字号显示“多个值” |
| 多选拖动及撤销 | 两个同级元素移动到表格之后,源顺序正确且保持相对次序,可撤销 |
| 表格合并和拆分 | Ctrl 选择两个相邻表头格后合并,网格实际出现 colspan=2;拆分恢复物理格 |
| 模板 XML | 格式化后有同步行号及语法标记,混合内容继续使用原格式化契约 |
| 非法 JSON | 错误可见,原有效页面保留;修正后自动恢复排版 |
| 操作搜索 | 搜索“页眉”可执行页面设置;Ctrl+K 打开、Esc 关闭 |
| 专注模式 | 侧栏隐藏,原画布图片 URL 保持,退出恢复侧栏 |
| 诊断 | 266 条逐字备用字体记录合为一个类别,详细记录仍可展开 |
| 导出 PDF | 完成预检并从浏览器下载;零损失、零警告,独立解析包含检查表首末行 |
| 窗口尺寸 | 默认桌面、966×884 窄桌面和 375×812 窄屏检查未发现页面横向溢出;临时尺寸已复原 |
浏览器最终页面无脚本错误。PDF 下载经 pypdf 6.10.0 独立解析,确认一页及正文首末标记。此次主要验证工作区交互,不扩大六格式的既有输出支持范围,也不替代其独立输出验收。
验收后恢复原模板、独立 JSON 和全部 ZIP 资源,各条目字节相同,仅保留一个本地设计器实例。备份、截图、下载和原始日志保留在忽略的 build/verification/ 中。以上为本地构建与浏览器验证,不代表提交、推送或正式发布。