- 新增浏览器模块技术文档,涵盖 BrowserCore、BrowserWindow 等核心组件 - 添加事件系统文档,包括 EventBus、GlobalEventBus 及各类事件定义 - 创建 LanguageManager 国际化管理器详细说明文档 - 新增 Log4j2OutputStream 标准输出重定向类文档 - 添加 Main 入口类启动流程与路由机制说明 - 创建 BrowserCreationCallback 回调接口使用指南 - 完善 AxisInnovatorsBox 主类架构与崩溃诊断系统文档
122 lines
4.3 KiB
Markdown
122 lines
4.3 KiB
Markdown
# Axis Innovators Box 事件类集合技术文档
|
||
|
||
**包路径:** `com.axis.innovators.box.events.*`
|
||
**主要功能:** 作为事件总线(EventBus)的载体,定义系统各模块间的通信数据结构
|
||
**作者:** tzdwindows 7
|
||
|
||
---
|
||
|
||
## 1. 概述
|
||
|
||
本篇文档总结了 **Axis Innovators Box** 框架中定义的核心事件类。这些类作为 `EventBus` 分发的数据负载(Payload),涵盖了应用程序生命周期、UI 渲染、用户交互及系统设置等多个维度。
|
||
|
||
框架采用了 **Java Records (JDK 16+)** 和 **常规 POJO** 混合编写的方式:
|
||
* **Records**: 用于纯数据传输,简洁高效。
|
||
* **Classes**: 用于需要逻辑处理或可变状态(如事件拦截)的复杂场景。
|
||
|
||
---
|
||
|
||
## 2. 核心事件分类详解
|
||
|
||
### 2.1 系统生命周期事件
|
||
|
||
#### `StartupEvent` (Record)
|
||
* **触发时机**: 应用程序启动阶段。
|
||
* **用途**: 允许插件或子模块在系统就绪时获取主程序实例并执行初始化。
|
||
* **字段**:
|
||
* `AxisInnovatorsBox main`: 主程序入口实例。
|
||
|
||
---
|
||
|
||
### 2.2 主窗口与 UI 交互事件
|
||
|
||
#### `MainWindowEvents` (Container Class)
|
||
内部包含两个核心 Record,用于处理主窗口的不同阶段:
|
||
* **`initialize` (Record)**:
|
||
* **触发时机**: 主窗口初始化加载时。
|
||
* **用途**: 向主面板 (`mainPanel`) 添加自定义组件。
|
||
* **`update` (Record)**:
|
||
* **触发时机**: 窗口重绘或更新周期。
|
||
* **用途**: 执行基于 `Graphics` 的自定义绘制逻辑。
|
||
|
||
#### `TABUIEvents` (Class)
|
||
* **用途**: 管理选项卡(Tab)组件的 UI 属性设置。
|
||
* **内部类 `update`**: 专门用于选项卡的重绘事件,传递 `Graphics` 上下文。
|
||
|
||
#### `TopicsUpdateEvents` (Class)
|
||
* **触发时机**: 当系统主题发生变更(如切换深色模式/更换皮肤)时。
|
||
* **用途**: 通知所有 UI 组件同步更新样式。
|
||
* **字段**:
|
||
* `String themeName`: 主题名称。
|
||
* `boolean darkTheme`: 是否为暗黑模式。
|
||
|
||
---
|
||
|
||
### 2.3 文件与 IO 操作事件
|
||
|
||
#### `OpenFileEvents` (Class)
|
||
* **触发时机**: 当程序接收到外部文件打开请求(如拖拽文件入窗口)时。
|
||
* **核心功能**: **流程控制**。
|
||
* **关键字段**:
|
||
* `File filePath`: 文件路径。
|
||
* `String extension`: 文件后缀名。
|
||
* `boolean isContinue`: 默认值为 `true`。监听器可以通过 `setContinue(false)` 来**拦截**后续操作,阻止程序打开该文件。
|
||
|
||
---
|
||
|
||
### 2.4 设置与配置事件
|
||
|
||
#### `SettingsLoadEvents` (Record)
|
||
* **触发时机**: 设置对话框加载时。
|
||
* **用途**: 动态扩展设置界面。开发者可以获取 `JPanel content` 容器,向其中注入新的设置项(如复选框、输入框)。
|
||
* **字段**:
|
||
* `WindowsJDialog dialog`: 设置窗口实例。
|
||
* `JPanel content`: 承载设置内容的容器面板。
|
||
|
||
---
|
||
|
||
## 3. 事件一览表
|
||
|
||
| 事件类名 | 类型 | 核心字段 | 应用场景 |
|
||
| :--- | :--- | :--- | :--- |
|
||
| `StartupEvent` | Record | `main` | 插件初始化、全局资源准备 |
|
||
| `MainWindowEvents.initialize` | Record | `mainWindow`, `mainPanel` | 注入主界面组件 |
|
||
| `MainWindowEvents.update` | Record | `mainWindow`, `g` | 自定义画布渲染 |
|
||
| `OpenFileEvents` | Class | `filePath`, `isContinue` | 文件打开监听、格式校验与拦截 |
|
||
| `SettingsLoadEvents` | Record | `dialog`, `content` | 动态添加设置选项 |
|
||
| `TABUIEvents` | Class | `javax`, `card` | 选项卡组件管理 |
|
||
| `TopicsUpdateEvents` | Class | `themeName`, `darkTheme` | 皮肤切换、实时调色板更新 |
|
||
|
||
---
|
||
|
||
## 4. 使用代码示例
|
||
|
||
### 示例 1:拦截特定格式的文件打开
|
||
```java
|
||
@SubscribeEvent
|
||
public void onFileOpen(OpenFileEvents event) {
|
||
if (event.getExtension().equalsIgnoreCase("tmp")) {
|
||
System.out.println("拒绝打开临时文件");
|
||
event.setContinue(false); // 拦截流程
|
||
}
|
||
}
|
||
```
|
||
|
||
### 示例 2:在系统启动时注册组件
|
||
```java
|
||
@SubscribeEvent
|
||
public void onStartup(StartupEvent event) {
|
||
System.out.println("Axis Innovators Box 已启动: " + event.main().getClass().getName());
|
||
}
|
||
```
|
||
|
||
### 示例 3:动态添加设置项
|
||
```java
|
||
@SubscribeEvent
|
||
public void onSettingsLoad(SettingsLoadEvents event) {
|
||
event.content().add(new JButton("扩展插件设置"));
|
||
}
|
||
```
|
||
|
||
---
|
||
*文档生成时间: 2026-01-02* |