稳定可用版本
This commit is contained in:
@@ -0,0 +1,228 @@
|
||||
---
|
||||
name: 系统设置重构-直接打开配置文件
|
||||
overview: 重构系统设置窗口,去掉繁琐的表单填写,改为每个 Tab 直接打开 data 目录下对应配置文件,用系统默认编辑器快速配置,每个 Tab 只管理自己栏目的配置。
|
||||
design:
|
||||
styleKeywords:
|
||||
- Clean
|
||||
- Minimalist
|
||||
fontSystem:
|
||||
fontFamily: Microsoft YaHei
|
||||
heading:
|
||||
size: 16px
|
||||
weight: 700
|
||||
subheading:
|
||||
size: 14px
|
||||
weight: 600
|
||||
body:
|
||||
size: 13px
|
||||
weight: 400
|
||||
colorSystem:
|
||||
primary:
|
||||
- "#4CAF50"
|
||||
background:
|
||||
- "#F5F5F5"
|
||||
- "#FFFFFF"
|
||||
text:
|
||||
- "#333333"
|
||||
- "#666666"
|
||||
functional:
|
||||
- "#FF9800"
|
||||
- "#F44336"
|
||||
todos:
|
||||
- id: refactor-external-config
|
||||
content: 移除 ExternalConfigManager 中 MyBatis 相关配置节,只保留系统路径、数据文件路径和字体大小
|
||||
status: completed
|
||||
- id: refactor-path-tab
|
||||
content: 重构系统路径 Tab,移除表单,改为显示 workutils.config 路径 + 打开按钮 + 重新加载按钮
|
||||
status: completed
|
||||
dependencies:
|
||||
- refactor-external-config
|
||||
- id: refactor-mybatis-tab
|
||||
content: 重构 MyBatis 数据库 Tab,移除表单,改为显示 mybatis-generator.properties 路径 + 打开按钮 + 重新加载按钮
|
||||
status: completed
|
||||
dependencies:
|
||||
- refactor-external-config
|
||||
- id: refactor-project-tab
|
||||
content: 重构项目路径 Tab,移除 TextArea,改为显示 project_paths.txt 路径 + 打开按钮,保留批量替换工具
|
||||
status: completed
|
||||
- id: add-datasource-tab
|
||||
content: 新增多数据源 Tab,显示 datasources.json 路径 + 打开按钮 + 重新加载按钮
|
||||
status: completed
|
||||
- id: refactor-damaged-cache-tab
|
||||
content: 重构损坏缓存 Tab,移除 TextArea,改为显示 damaged_repos.cache 路径 + 打开按钮 + 清理缓存按钮
|
||||
status: completed
|
||||
- id: add-open-file-util
|
||||
content: 新增 openFileInEditor 工具方法,支持 Desktop.edit 和 notepad fallback
|
||||
status: completed
|
||||
- id: compile-test
|
||||
content: 编译验证并测试所有 Tab 功能
|
||||
status: completed
|
||||
dependencies:
|
||||
- refactor-path-tab
|
||||
- refactor-mybatis-tab
|
||||
- refactor-project-tab
|
||||
- add-datasource-tab
|
||||
- refactor-damaged-cache-tab
|
||||
- add-open-file-util
|
||||
---
|
||||
|
||||
## 产品概述
|
||||
|
||||
重构系统设置窗口,去掉繁琐的 JavaFX 表单填写体验,改为每个 Tab 直接打开 data 目录下对应的配置文件,用系统默认编辑器(记事本/IDE)快速配置。每个 Tab 只管理自己栏目的配置,各配置文件独立管理。
|
||||
|
||||
## 核心功能
|
||||
|
||||
- **系统路径 Tab**:显示 `data/workutils.config` 文件路径,提供「用记事本打开」按钮直接编辑系统路径和字体设置
|
||||
- **MyBatis 数据库 Tab**:显示 `data/mybatis-generator.properties` 文件路径,提供「用记事本打开」按钮直接编辑数据库连接和包路径配置
|
||||
- **项目路径 Tab**:显示 `data/project_paths.txt` 文件路径,提供「用记事本打开」按钮直接编辑项目路径列表
|
||||
- **多数据源 Tab**:显示 `data/datasources.json` 文件路径,提供「用记事本打开」按钮直接编辑多数据源配置
|
||||
- **损坏缓存 Tab**:显示 `data/damaged_repos.cache` 文件路径,标记为只读,提供「用记事本打开」按钮查看,保留「清理缓存」按钮
|
||||
- **重新加载**:每个 Tab 提供「重新加载」按钮,让程序重新读取文件使配置生效
|
||||
- **ExternalConfigManager 精简**:移除 `SECTIONS` 中的 MyBatis 相关配置节,只保留系统路径、数据文件路径和字体大小
|
||||
|
||||
## 技术栈
|
||||
|
||||
- JavaFX(原有技术栈,保持一致的 UI 风格)
|
||||
- Desktop.getDesktop().edit() 打开配置文件(Windows 下用默认编辑器打开)
|
||||
|
||||
## 实施方案
|
||||
|
||||
### 架构设计
|
||||
|
||||
重构后的设置窗口每个 Tab 统一结构:
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────┐
|
||||
│ Tab 标题(如:系统路径) │
|
||||
│ │
|
||||
│ 配置文件: C:\xxx\data\workutils.config │
|
||||
│ │
|
||||
│ [用记事本打开] [重新加载] │
|
||||
│ │
|
||||
│ 说明文字:编辑后点击「重新加载」生效,无需重启。 │
|
||||
└─────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
### 关键修改点
|
||||
|
||||
#### 1. SettingsWindow.java — 重构各 Tab
|
||||
|
||||
**createPathTab()**(系统路径 Tab):
|
||||
|
||||
- 移除所有 GridPane 表单行(tfBaseDir、tfExportDir 等 TextField)
|
||||
- 显示 `properties.getWorkutilsConfigFilePath()` 绝对路径
|
||||
- 保留「用记事本打开」按钮(调用 `Desktop.getDesktop().edit(file)`)
|
||||
- 保留「重新加载」按钮(调用 `properties.mergeExternal(configManager.load())`)
|
||||
- 保留字体大小设置说明(字体设置仍在 workutils.config 中)
|
||||
|
||||
**createMyBatisTab()**(MyBatis 数据库 Tab):
|
||||
|
||||
- 完全移除 GridPane 表单(tfDbDriver、tfDbUrl 等)
|
||||
- 显示 `properties.getMybatisGeneratorFilePath()` 绝对路径
|
||||
- 「用记事本打开」按钮打开 `data/mybatis-generator.properties`
|
||||
- 「重新加载」按钮调用已有逻辑重新加载 MyBatis 配置
|
||||
- 移除「从内置配置加载」按钮(用户直接编辑文件即可)
|
||||
|
||||
**createProjectTab()**(项目路径 Tab):
|
||||
|
||||
- 移除 TextArea + 加载/保存按钮的复杂结构
|
||||
- 显示 `properties.getProjectPathsFilePath()` 绝对路径
|
||||
- 「用记事本打开」按钮打开 `data/project_paths.txt`
|
||||
- 保留「重新加载」按钮刷新项目路径列表
|
||||
- **保留批量替换工具**(这是用户之前明确需求的功能,在 memory ID 70362697 中有记录)
|
||||
|
||||
**createDatasourceTab()**(新增 Tab — 多数据源):
|
||||
|
||||
- 显示 `properties.getDatasourcesFilePath()` 绝对路径
|
||||
- 「用记事本打开」按钮打开 `data/datasources.json`
|
||||
- 「重新加载」按钮调用 `datasourceConfigManager.reload()`
|
||||
|
||||
**createDamagedCacheTab()**(损坏缓存 Tab,替代原项目管理 Tab 中的子 Tab):
|
||||
|
||||
- 显示 `properties.getDamagedReposFilePath()` 绝对路径
|
||||
- 标记为只读(加提示文字)
|
||||
- 「用记事本打开」按钮打开 `data/damaged_repos.cache`
|
||||
- 保留「清理缓存」按钮
|
||||
|
||||
**createDisplayTab()**(显示设置 Tab):
|
||||
|
||||
- 字体设置仍在 `workutils.config` 中,所以此 Tab 内容与系统路径 Tab 操作的是同一个文件
|
||||
- 可以简化为一个提示:「字体设置请在 workutils.config 中修改 font.size.* 属性」+ 「重新加载」按钮
|
||||
- 或者保留现有的滑块预览(用户可能喜欢实时预览字体效果),但保存时改为提示用户去文件编辑
|
||||
|
||||
**建议**:显示设置 Tab 保留现有滑块预览功能(用户体验好),但「保存」按钮改为提示用户手动编辑 workutils.config,或仍通过 `ExternalConfigManager.saveSectioned()` 保存字体设置(因为字体设置是系统级的,适合集中管理)。
|
||||
|
||||
#### 2. ExternalConfigManager.java — 移除 MyBatis 配置节
|
||||
|
||||
修改 `SECTIONS` 静态初始化块,移除:
|
||||
|
||||
- `"===== MyBatis 数据库连接(覆盖内置 mybatis-generator.properties)====="`
|
||||
- `"===== MyBatis 代码生成包路径 ====="`
|
||||
|
||||
只保留:
|
||||
|
||||
- `"===== 系统路径 ====="`
|
||||
- `"===== 数据文件路径 ====="`
|
||||
- `"===== 字体大小(显示设置) ====="`
|
||||
|
||||
同步移除对应的 KEY 常量(或修改注释说明这些 KEY 仅用于 workutils.config)。
|
||||
|
||||
#### 3. 打开文件工具方法
|
||||
|
||||
在 SettingsWindow 中新增工具方法:
|
||||
|
||||
```java
|
||||
private void openFileInEditor(Path file) {
|
||||
try {
|
||||
if (!Files.exists(file)) {
|
||||
Files.createDirectories(file.getParent());
|
||||
Files.createFile(file);
|
||||
}
|
||||
// Windows: Desktop.edit 用关联程序打开并允许编辑
|
||||
// 如果 Desktop 不可用,fallback 到 Runtime.exec("notepad")
|
||||
if (Desktop.isDesktopSupported()) {
|
||||
Desktop.getDesktop().edit(file.toFile());
|
||||
} else {
|
||||
// Windows fallback
|
||||
Runtime.getRuntime().exec(new String[]{"notepad", file.toAbsolutePath().toString()});
|
||||
}
|
||||
} catch (Exception e) {
|
||||
showAlert(AlertType.ERROR, "打开文件失败: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 实施注意事项
|
||||
|
||||
1. **Desktop.getDesktop().edit()** 在 Windows 上需要文件有关联的编辑器,且文件必须存在
|
||||
2. **批量替换工具保留**:用户的 memory 中明确提到需要保留项目路径批量替换功能,不能删除
|
||||
3. **向后兼容**:workutils.config 中如果仍有旧的 MyBatis 配置项,程序应能忽略(不报错)
|
||||
4. **文件不存在处理**:打开前检查文件是否存在,不存在则创建空文件或从模板复制
|
||||
|
||||
### 目录结构变更
|
||||
|
||||
```
|
||||
src/main/java/com/example/workutils/system/config/
|
||||
├── SettingsWindow.java [MODIFY] 重构所有 Tab 内容
|
||||
├── ExternalConfigManager.java [MODIFY] 移除 MyBatis 配置节
|
||||
├── WorkUtilsProperties.java [NO CHANGE] 无需修改
|
||||
├── DatasourceConfigManager.java [NO CHANGE] 无需修改
|
||||
└── ConfigInitializer.java [NO CHANGE] 无需修改
|
||||
```
|
||||
|
||||
无需新增文件,只需修改现有两个文件。
|
||||
|
||||
## 设计风格
|
||||
|
||||
保持现有 JavaFX 窗口的简洁风格,每个 Tab 内容统一为:
|
||||
|
||||
- 顶部:标题(加粗,字号稍大)
|
||||
- 中部:配置文件路径(等宽字体,可选择性可复制)
|
||||
- 按钮区:[]用记事本打开] []重新加载](对齐,间距合理)
|
||||
- 底部:说明文字(灰色,小字号)
|
||||
|
||||
## 布局说明
|
||||
|
||||
每个 Tab 使用 VBox 垂直布局,内容居中偏左对齐,整体留白适中(Insets 12px)。
|
||||
按钮使用 HBox 水平排列,间距 10px。
|
||||
路径 Label 使用等宽字体(Consolas),背景浅灰,增加可读性。
|
||||
Reference in New Issue
Block a user