Commit df3850e
authored
feat: markdown导入后自动调用右向树布局 (#666)
## 实现方案
在 Markdown 导入链路的末端(节点和边全部创建完成后、记录历史之前),对根节点调用已有的
`autoLayoutSelectedFastTreeMode` 方法。
### 调用链路
```
GenerateNodeWindow (UI)
→ StageManager.generateNodeByMarkdown(text, location, autoLayout)
→ NodeAdder.addNodeByMarkdown(markdownText, diffLocation, autoLayout)
→ StageImport.addNodeByMarkdown(markdownText, diffLocation, autoLayout)
→ MarkdownImporter.import(markdownText, diffLocation, autoLayout)
→ autoAlign.autoLayoutSelectedFastTreeMode(rootNode) // ← 新增
```
### 关键设计决策
- **仅对根节点调用布局**:`autoLayoutSelectedFastTreeMode` 会递归处理整棵子树,只需传入 root 即可
- **默认启用,可选关闭**:`autoLayout` 参数默认为 `true`,保持向后兼容,调用方可传 `false` 跳过自动布局
- **布局在历史记录之前执行**:确保 undo 时能一步撤销「导入+布局」的完整操作
- **复用已有算法**:直接使用 `StageAutoAlignManager` 中的快速树布局,与右键菜单「自动排列 → 向右树形」完全一致
## 效果
https://github.com/user-attachments/assets/437834cb-3a1a-4883-8b75-2e2ff298f231File tree
4 files changed
+20
-7
lines changed- app/src/core
- service/dataGenerateService/stageImportEngine
- stage/stageManager
- concreteMethods
4 files changed
+20
-7
lines changedLines changed: 7 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
23 | 23 | | |
24 | 24 | | |
25 | 25 | | |
| 26 | + | |
26 | 27 | | |
27 | | - | |
| 28 | + | |
28 | 29 | | |
29 | 30 | | |
30 | 31 | | |
| |||
77 | 78 | | |
78 | 79 | | |
79 | 80 | | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
80 | 86 | | |
81 | 87 | | |
82 | 88 | | |
| |||
Lines changed: 3 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
66 | 66 | | |
67 | 67 | | |
68 | 68 | | |
| 69 | + | |
69 | 70 | | |
70 | 71 | | |
71 | 72 | | |
72 | 73 | | |
73 | 74 | | |
74 | 75 | | |
75 | | - | |
76 | | - | |
| 76 | + | |
| 77 | + | |
77 | 78 | | |
78 | 79 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
641 | 641 | | |
642 | 642 | | |
643 | 643 | | |
644 | | - | |
645 | | - | |
| 644 | + | |
| 645 | + | |
646 | 646 | | |
647 | 647 | | |
648 | 648 | | |
| |||
Lines changed: 8 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
208 | 208 | | |
209 | 209 | | |
210 | 210 | | |
211 | | - | |
212 | | - | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
213 | 219 | | |
214 | 220 | | |
215 | 221 | | |
| |||
0 commit comments