import { Codicon } from '../../../../base/common/codicons.js';
import { localize2WithPath, localizeWithPath } from '../../../../nls.js';
import { Action2, MenuId, registerAction2, MenuRegistry } from '../../../../platform/actions/common/actions.js';
import { ContextKeyExpr } from '../../../../platform/contextkey/common/contextkey.js';
import { registerIcon } from '../../../../platform/theme/common/iconRegistry.js';
import { Categories } from '../../../../platform/action/common/actionCommonCategories.js';
import { AuxiliaryBarVisibleContext } from '../../../common/contextkeys.js';
import { ViewContainerLocation, ViewContainerLocationToString } from '../../../common/views.js';
import { Parts } from '../../../services/layout/browser/layoutService.js';
import { IWorkbenchLayoutService } from '../../../services/layout/browser/layoutService.service.js';
import { IPaneCompositePartService } from '../../../services/panecomposite/browser/panecomposite.service.js';
import { KeybindingWeight } from '../../../../platform/keybinding/common/keybindingsRegistry.js';
import { KeyMod as KeyMod$1, KeyCode } from '../../../../base/common/keyCodes.js';
const _moduleId = "vs/workbench/browser/parts/auxiliarybar/auxiliaryBarActions";
const auxiliaryBarRightIcon = registerIcon('auxiliarybar-right-layout-icon', Codicon.layoutSidebarRight, ( localizeWithPath(
    _moduleId,
    0,
    'Icon to toggle the auxiliary bar off in its right position.'
)));
const auxiliaryBarRightOffIcon = registerIcon('auxiliarybar-right-off-layout-icon', Codicon.layoutSidebarRightOff, ( localizeWithPath(_moduleId, 1, 'Icon to toggle the auxiliary bar on in its right position.')));
const auxiliaryBarLeftIcon = registerIcon('auxiliarybar-left-layout-icon', Codicon.layoutSidebarLeft, ( localizeWithPath(_moduleId, 2, 'Icon to toggle the auxiliary bar in its left position.')));
const auxiliaryBarLeftOffIcon = registerIcon('auxiliarybar-left-off-layout-icon', Codicon.layoutSidebarLeftOff, ( localizeWithPath(_moduleId, 3, 'Icon to toggle the auxiliary bar on in its left position.')));
class ToggleAuxiliaryBarAction extends Action2 {
    static { this.ID = 'workbench.action.toggleAuxiliaryBar'; }
    static { this.LABEL = ( localize2WithPath(_moduleId, 4, "Toggle Secondary Side Bar Visibility")); }
    constructor() {
        super({
            id: ToggleAuxiliaryBarAction.ID,
            title: ToggleAuxiliaryBarAction.LABEL,
            toggled: {
                condition: AuxiliaryBarVisibleContext,
                title: ( localizeWithPath(_moduleId, 5, "Secondary Side Bar")),
                mnemonicTitle: ( localizeWithPath(_moduleId, 6, "Secondary Si&&de Bar")),
            },
            category: Categories.View,
            f1: true,
            keybinding: {
                weight: KeybindingWeight.WorkbenchContrib,
                primary: KeyMod$1.CtrlCmd | KeyMod$1.Alt | KeyCode.KeyB
            },
            menu: [
                {
                    id: MenuId.LayoutControlMenuSubmenu,
                    group: '0_workbench_layout',
                    order: 1
                },
                {
                    id: MenuId.MenubarAppearanceMenu,
                    group: '2_workbench_layout',
                    order: 2
                }
            ]
        });
    }
    async run(accessor) {
        const layoutService = accessor.get(IWorkbenchLayoutService);
        layoutService.setPartHidden(layoutService.isVisible(Parts.AUXILIARYBAR_PART), Parts.AUXILIARYBAR_PART);
    }
}
registerAction2(ToggleAuxiliaryBarAction);
registerAction2(class FocusAuxiliaryBarAction extends Action2 {
    static { this.ID = 'workbench.action.focusAuxiliaryBar'; }
    static { this.LABEL = ( localize2WithPath(_moduleId, 7, "Focus into Secondary Side Bar")); }
    constructor() {
        super({
            id: FocusAuxiliaryBarAction.ID,
            title: FocusAuxiliaryBarAction.LABEL,
            category: Categories.View,
            f1: true,
        });
    }
    async run(accessor) {
        const paneCompositeService = accessor.get(IPaneCompositePartService);
        const layoutService = accessor.get(IWorkbenchLayoutService);
        if (!layoutService.isVisible(Parts.AUXILIARYBAR_PART)) {
            layoutService.setPartHidden(false, Parts.AUXILIARYBAR_PART);
        }
        const composite = paneCompositeService.getActivePaneComposite(ViewContainerLocation.AuxiliaryBar);
        composite?.focus();
    }
});
MenuRegistry.appendMenuItems([
    {
        id: MenuId.LayoutControlMenu,
        item: {
            group: '0_workbench_toggles',
            command: {
                id: ToggleAuxiliaryBarAction.ID,
                title: ( localizeWithPath(_moduleId, 8, "Toggle Secondary Side Bar")),
                toggled: { condition: AuxiliaryBarVisibleContext, icon: auxiliaryBarLeftIcon },
                icon: auxiliaryBarLeftOffIcon,
            },
            when: ( (ContextKeyExpr.and( (ContextKeyExpr.or(
                 (ContextKeyExpr.equals('config.workbench.layoutControl.type', 'toggles')),
                 (ContextKeyExpr.equals('config.workbench.layoutControl.type', 'both'))
            )),  (ContextKeyExpr.equals('config.workbench.sideBar.location', 'right'))))),
            order: 0
        }
    }, {
        id: MenuId.LayoutControlMenu,
        item: {
            group: '0_workbench_toggles',
            command: {
                id: ToggleAuxiliaryBarAction.ID,
                title: ( localizeWithPath(_moduleId, 8, "Toggle Secondary Side Bar")),
                toggled: { condition: AuxiliaryBarVisibleContext, icon: auxiliaryBarRightIcon },
                icon: auxiliaryBarRightOffIcon,
            },
            when: ( (ContextKeyExpr.and( (ContextKeyExpr.or(
                 (ContextKeyExpr.equals('config.workbench.layoutControl.type', 'toggles')),
                 (ContextKeyExpr.equals('config.workbench.layoutControl.type', 'both'))
            )),  (ContextKeyExpr.equals('config.workbench.sideBar.location', 'left'))))),
            order: 2
        }
    }, {
        id: MenuId.ViewTitleContext,
        item: {
            group: '3_workbench_layout_move',
            command: {
                id: ToggleAuxiliaryBarAction.ID,
                title: ( localize2WithPath(_moduleId, 9, 'Hide Secondary Side Bar')),
            },
            when: ( (ContextKeyExpr.and(AuxiliaryBarVisibleContext,  (ContextKeyExpr.equals(
                'viewLocation',
                ViewContainerLocationToString(ViewContainerLocation.AuxiliaryBar)
            ))))),
            order: 2
        }
    }
]);
export { ToggleAuxiliaryBarAction };
