Files
window-axis-innovators-box1.17/api-documentation/events/Axis Innovators Box 事件类集合技术文档.md
tzdwindows 7 7badbb0d8e docs: 添加 Axis Innovators Box 框架完整 API 文档
- 新增浏览器模块技术文档,涵盖 BrowserCore、BrowserWindow 等核心组件
- 添加事件系统文档,包括 EventBus、GlobalEventBus 及各类事件定义
- 创建 LanguageManager 国际化管理器详细说明文档
- 新增 Log4j2OutputStream 标准输出重定向类文档
- 添加 Main 入口类启动流程与路由机制说明
- 创建 BrowserCreationCallback 回调接口使用指南
- 完善 AxisInnovatorsBox 主类架构与崩溃诊断系统文档
2026-01-03 08:46:19 +08:00

122 lines
4.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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*