- 新增浏览器模块技术文档,涵盖 BrowserCore、BrowserWindow 等核心组件 - 添加事件系统文档,包括 EventBus、GlobalEventBus 及各类事件定义 - 创建 LanguageManager 国际化管理器详细说明文档 - 新增 Log4j2OutputStream 标准输出重定向类文档 - 添加 Main 入口类启动流程与路由机制说明 - 创建 BrowserCreationCallback 回调接口使用指南 - 完善 AxisInnovatorsBox 主类架构与崩溃诊断系统文档
4.7 KiB
4.7 KiB
RegistrationTool 类技术文档
包路径: com.axis.innovators.box.register.RegistrationTool
主要功能: 工具箱组件注册中心、功能分类管理器
作者: tzdwindows 7
1. 概述
RegistrationTool 是 Axis Innovators Box 的功能调度核心。它负责管理主程序中所有的工具项(ToolItem)及其所属的分类(ToolCategory)。通过该类,开发者可以将各种功能模块(如调试工具、编程环境、AI 推理等)注册到主界面的工具栏中。
该类不仅内置了丰富的系统工具,还为外部插件提供了一套标准的扩展接口,支持基于命名空间的工具注册逻辑。
2. 核心职责
- 功能分类管理: 将相似功能的工具组织在
ToolCategory下(如“调试工具”、“AI工具”)。 - 工具项路由: 定义点击工具图标后的具体行为(通过
AbstractAction实现窗口弹出或逻辑执行)。 - 插件扩展支持: 提供 API 允许插件在加载时动态注入自定义工具。
- 唯一性校验: 确保每个注册项拥有唯一的
UUID和注册名称(Registered Name),防止冲突。 - 平台适配: 在初始化时根据
BuildInformation检查操作系统兼容性(主要针对 Windows)。
3. 内置工具分类
在 Windows 系统环境下,RegistrationTool 默认初始化以下分类及工具:
3.1 调试工具 (Debug Tools)
- Frida 注入工具: 使用 Frida 框架对目标进程进行脚本注入。
3.2 编程工具 (Programming Tools)
- JarApi 查看器: 反射查看 JAR 包内的方法定义及其注解。
- C 语言编辑器: 智能化的 C 语言编译与编辑环境。
- 多语言在线执行: 支持多种编程语言的实时在线运行,具备无限循环检测机制。
- 数据库管理: 跨平台的数据库管理客户端。
- Linux 终端: 启动一个真实的 Linux 终端模拟环境。
- MySQL 控制台: 模拟 MySQL 命令行交互界面。
3.3 AI 工具 (AI Tools)
- 本地 AI 执行工具: 在本地运行开源大语言模型(LLM)。支持自动加载 CUDA 硬件加速库(通过
LM类)。
3.4 系统工具 (System Tools)
- 任务栏主题设置: 深度定制 Windows 任务栏的外观、颜色和透明度。
4. 插件扩展机制
RegistrationTool 支持插件化扩展,插件可以通过以下方法将自己的工具分类注册到主程序中:
public void addToolCategory(ToolCategory toolCategory,
PluginDescriptor pluginDescriptor,
String registeredName)
命名空间规则:
为了防止不同插件之间的工具冲突,系统会自动使用 插件注册名:工具注册名 的格式生成全局唯一的标识符。
5. API 接口说明
5.1 注册方法
| 方法 | 描述 |
|---|---|
addToolCategory(ToolCategory, String) |
注册一个新的工具分类(系统级使用)。 |
addToolCategory(ToolCategory, PluginDescriptor, String) |
插件专用接口。通过插件描述符注册分类。 |
5.2 查询方法
| 方法 | 描述 |
|---|---|
ToolCategory getToolCategory(UUID id) |
根据 UUID 获取分类对象。 |
UUID getUUID(String registeredName) |
根据注册名称(如 "system:debugTools")获取其 UUID。 |
List<ToolCategory> getToolCategories() |
获取当前所有已注册的分类列表。 |
6. 关键技术约束:注册时机
生命周期限制:
RegistrationTool 的注册操作具有严格的时机限制:必须在应用主窗口启动(run 方法执行完毕)之前完成。
- 如果在主窗口已处于显示状态(
main.isWindow()为true)时尝试添加工具,系统会通过日志记录logger.warn("Wrong time to add tools")并拒绝注册。 - 这种设计确保了 UI 在渲染初期能获得完整的工具树,避免动态修改 UI 导致的线程竞争或布局闪烁。
7. 错误处理
如果在注册过程中检测到重复的注册名称,该类会抛出 RegistrationError。这是一种致命错误,旨在提醒开发者工具标识符冲突,必须在开发阶段解决。
8. 示例代码:添加简单工具
ToolCategory myCategory = new ToolCategory("我的工具", "icon.png", "说明");
myCategory.addTool(new ToolItem("弹窗演示", "btn.png", "点击会弹出消息", 100, new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "你好,这是注册工具!");
}
}));
// 注册到系统
registrationTool.addToolCategory(myCategory, "my_custom_tools");
文档生成时间: 2026-01-02