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 { createLocationButton } = await import('./buttons/location');
        const { createWalkMenuButton } = await import('./buttons/walk/walk-menu');
        const { createWalkPersonButton } = await import('./buttons/walk/walk-person');
        const { createWalkBirdButton } = await import('./buttons/walk/walk-bird');
        const { createSettingButton } = await import('./buttons/setting');
        const { createInfoButton } = await import('./buttons/info');
        const { createMeasureButton } = await import('./buttons/measure');
        const { createSectionMenuButton } = await import('./buttons/section/section-menu');
        const { createSectionPlaneButton } = await import('./buttons/section/section-plane');
        const { createSectionAxisButton } = await import('./buttons/section/section-axis');
        const { createSectionBoxButton } = await import('./buttons/section/section-box');

        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(createWalkPersonButton(this.engine));
            this.addButton(createWalkBirdButton(this.engine));
            this.addButton(createLocationButton(this.engine));
            this.addGroup('group-2');
            this.addButton(createSettingButton(this.engine));
            this.addButton(createInfoButton(this.engine));
        } else {
            console.warn('[Toolbar] Engine not available when creating buttons.');
        }

        this.render();
    }
}
