refactor: 重构 Manager 架构,引入 ManagerRegistry 和 BaseManager 基类

- 新增 ManagerRegistry 单例注册表,统一管理所有 Manager 实例
- 新增 BaseManager 基类,自动管理事件订阅清理
- 新增 BaseDialogManager 基类,统一对话框生命周期管理
- 重构 15 个 Manager 使用新基类
- 重构 Toolbar 按钮和 Menu 按钮移除 engine 参数依赖
- 删除 BimComponent 基类(已不再使用)
- 为所有 Manager 和核心模块添加中文 JSDoc 注释
This commit is contained in:
yuding
2026-01-22 15:23:57 +08:00
parent f2460fb981
commit 31b60e84ce
47 changed files with 5580 additions and 5341 deletions

View File

@@ -1,17 +1,9 @@
import { BimButtonGroup } from '../index';
/**
* 底部工具栏 (Toolbar)
* BimButtonGroup 的子类,专门用于加载工具栏默认按钮。
*/
export class Toolbar extends BimButtonGroup {
/**
* 重写初始化,加载默认按钮
*/
public async init(): Promise<void> {
await super.init();
// 动态加载默认按钮配置
const { createHomeButton } = await import('./buttons/home');
const { createZoomBoxButton } = await import('./buttons/zoom-box');
const { createWalkMenuButton } = await import('./buttons/walk/walk-menu');
@@ -28,26 +20,20 @@ export class Toolbar extends BimButtonGroup {
this.addGroup('group-1');
// 使用工厂函数创建按钮,并注入 engine
if (this.engine) {
this.addButton(createHomeButton(this.engine));
// 你要求:在"首页"后面添加"选框放大"
this.addButton(createZoomBoxButton(this.engine));
this.addButton(createMeasureButton(this.engine));
this.addButton(createSectionMenuButton(this.engine));
this.addButton(createSectionPlaneButton(this.engine));
this.addButton(createSectionAxisButton(this.engine));
this.addButton(createSectionBoxButton(this.engine));
this.addButton(createWalkMenuButton(this.engine));
this.addButton(createMapButton(this.engine));
this.addButton(createPropertyButton(this.engine));
this.addGroup('group-2');
this.addButton(createSettingButton(this.engine));
this.addButton(createInfoButton(this.engine));
this.addButton(createFullscreenButton(this.engine));
} else {
console.warn('[Toolbar] Engine not available when creating buttons.');
}
this.addButton(createHomeButton());
this.addButton(createZoomBoxButton());
this.addButton(createMeasureButton());
this.addButton(createSectionMenuButton());
this.addButton(createSectionPlaneButton());
this.addButton(createSectionAxisButton());
this.addButton(createSectionBoxButton());
this.addButton(createWalkMenuButton());
this.addButton(createMapButton());
this.addButton(createPropertyButton());
this.addGroup('group-2');
this.addButton(createSettingButton());
this.addButton(createInfoButton());
this.addButton(createFullscreenButton());
this.render();
}