Skip to content

Commit 2750985

Browse files
committed
Merge branch 'acorn/211-implement-pearai-creator-view' into acorn/creator-mode-feature-branch
2 parents fbe151a + 1070368 commit 2750985

File tree

10 files changed

+901
-27
lines changed

10 files changed

+901
-27
lines changed

src/vs/workbench/browser/actions/layoutActions.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import { IPaneCompositePartService } from '../../services/panecomposite/browser/
2222
import { ToggleAuxiliaryBarAction } from '../parts/auxiliarybar/auxiliaryBarActions.js';
2323
import { TogglePanelAction } from '../parts/panel/panelActions.js';
2424
import { ICommandService } from '../../../platform/commands/common/commands.js';
25-
import { AuxiliaryBarVisibleContext, PanelAlignmentContext, PanelVisibleContext, SideBarVisibleContext, FocusedViewContext, InEditorZenModeContext, IsMainEditorCenteredLayoutContext, MainEditorAreaVisibleContext, IsMainWindowFullscreenContext, PanelPositionContext, IsAuxiliaryWindowFocusedContext, TitleBarStyleContext, PearAIVisibleContext } from '../../common/contextkeys.js';
25+
import { AuxiliaryBarVisibleContext, PanelAlignmentContext, PanelVisibleContext, SideBarVisibleContext, FocusedViewContext, InEditorZenModeContext, IsMainEditorCenteredLayoutContext, MainEditorAreaVisibleContext, IsMainWindowFullscreenContext, PanelPositionContext, IsAuxiliaryWindowFocusedContext, TitleBarStyleContext, PearAIVisibleContext, PearAICreatorVisibleContext } from '../../common/contextkeys.js';
2626
import { Codicon } from '../../../base/common/codicons.js';
2727
import { ThemeIcon } from '../../../base/common/themables.js';
2828
import { DisposableStore } from '../../../base/common/lifecycle.js';
@@ -33,6 +33,7 @@ import { IKeybindingService } from '../../../platform/keybinding/common/keybindi
3333
import { TitlebarStyle } from '../../../platform/window/common/window.js';
3434
import { IPreferencesService } from '../../services/preferences/common/preferences.js';
3535
import { TogglePearOverlayAction } from '../parts/overlay/pearOverlayActions.js';
36+
import { ToggleCreatorOverlayAction } from '../parts/overlay/creatorView/creatorOverlayActions.js';
3637

3738
// Register Icons
3839
const menubarIcon = registerIcon('menuBar', Codicon.layoutMenubar, localize('menuBarIcon', "Represents the menu bar"));
@@ -1393,7 +1394,8 @@ ToggleVisibilityActions.push(...[
13931394
CreateToggleLayoutItem(ToggleAuxiliaryBarAction.ID, AuxiliaryBarVisibleContext, localize('secondarySideBar', "PearAI Side Bar"), { whenA: ContextKeyExpr.equals('config.workbench.sideBar.location', 'left'), iconA: panelRightIcon, iconB: panelLeftIcon }),
13941395
CreateToggleLayoutItem(TogglePanelAction.ID, PanelVisibleContext, localize('panel', "Panel"), panelIcon),
13951396
CreateToggleLayoutItem(ToggleStatusbarVisibilityAction.ID, ContextKeyExpr.equals('config.workbench.statusBar.visible', true), localize('statusBar', "Status Bar"), statusBarIcon),
1396-
CreateToggleLayoutItem(TogglePearOverlayAction.ID, PearAIVisibleContext, 'PearAI', pearaiIcon)
1397+
CreateToggleLayoutItem(TogglePearOverlayAction.ID, PearAIVisibleContext, 'PearAI', pearaiIcon),
1398+
CreateToggleLayoutItem(ToggleCreatorOverlayAction.ID, PearAICreatorVisibleContext, 'PearAI Creator'),
13971399
]);
13981400

13991401
const MoveSideBarActions: CustomizeLayoutItem[] = [

src/vs/workbench/browser/layout.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,7 @@ export abstract class Layout extends Disposable implements IWorkbenchLayoutServi
263263
private editorPartView!: ISerializableView;
264264
private statusBarPartView!: ISerializableView;
265265
private pearOverlayPartView!: ISerializableView;
266+
private pearCreatorOverlayPartView!: ISerializableView;
266267

267268
private environmentService!: IBrowserWorkbenchEnvironmentService;
268269
private extensionService!: IExtensionService;
@@ -1489,6 +1490,7 @@ export abstract class Layout extends Disposable implements IWorkbenchLayoutServi
14891490
const sideBar = this.getPart(Parts.SIDEBAR_PART);
14901491
const statusBar = this.getPart(Parts.STATUSBAR_PART);
14911492
const pearOverlayPart = this.getPart(Parts.PEAROVERLAY_PART);
1493+
const pearCreatorOverlayPart = this.getPart(Parts.PEARCREATOROVERLAY_PART);
14921494

14931495
// View references for all parts
14941496
this.titleBarPartView = titleBar;
@@ -1500,6 +1502,7 @@ export abstract class Layout extends Disposable implements IWorkbenchLayoutServi
15001502
this.auxiliaryBarPartView = auxiliaryBarPart;
15011503
this.statusBarPartView = statusBar;
15021504
this.pearOverlayPartView = pearOverlayPart;
1505+
this.pearCreatorOverlayPartView = pearCreatorOverlayPart;
15031506

15041507
// Create a new container for PearOverlayPart
15051508
const pearOverlayPartContainer = document.createElement("div");
@@ -1516,6 +1519,22 @@ export abstract class Layout extends Disposable implements IWorkbenchLayoutServi
15161519
this.mainContainer.appendChild(pearOverlayPartContainer);
15171520
pearOverlayPart.create(pearOverlayPartContainer);
15181521

1522+
// Create a container for the PearCreatorOverlayPart
1523+
1524+
const pearCreatorOverlayPartContainer = document.createElement("div");
1525+
pearCreatorOverlayPartContainer.style.position = "absolute";
1526+
pearCreatorOverlayPartContainer.style.top = "0";
1527+
pearCreatorOverlayPartContainer.style.left = "0";
1528+
pearCreatorOverlayPartContainer.style.right = "0";
1529+
pearCreatorOverlayPartContainer.style.bottom = "0";
1530+
pearCreatorOverlayPartContainer.style.zIndex = "-10";
1531+
pearCreatorOverlayPartContainer.style.display = "absolute";
1532+
pearCreatorOverlayPartContainer.classList.add("pearcreatoroverlay-part-container");
1533+
pearCreatorOverlayPartContainer.style.backgroundColor = 'transparent';
1534+
1535+
this.mainContainer.appendChild(pearCreatorOverlayPartContainer);
1536+
pearCreatorOverlayPart.create(pearCreatorOverlayPartContainer);
1537+
15191538
const viewMap = {
15201539
[Parts.ACTIVITYBAR_PART]: this.activityBarPartView,
15211540
[Parts.BANNER_PART]: this.bannerPartView,
@@ -1526,6 +1545,7 @@ export abstract class Layout extends Disposable implements IWorkbenchLayoutServi
15261545
[Parts.STATUSBAR_PART]: this.statusBarPartView,
15271546
[Parts.AUXILIARYBAR_PART]: this.auxiliaryBarPartView,
15281547
[Parts.PEAROVERLAY_PART]: this.pearOverlayPartView,
1548+
[Parts.PEARCREATOROVERLAY_PART]: this.pearCreatorOverlayPartView,
15291549
};
15301550

15311551
const fromJSON = ({ type }: { type: Parts }) => viewMap[type];
Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
/* eslint-disable header/header */
2+
3+
import {
4+
registerAction2,
5+
Action2,
6+
} from "../../../../../platform/actions/common/actions.js";
7+
import { ServicesAccessor } from "../../../../../platform/instantiation/common/instantiation.js";
8+
import { ICreatorOverlayService } from "./creatorOverlayService.js"; // Added .js extension
9+
import { KeyCode, KeyMod } from "../../../../../base/common/keyCodes.js";
10+
// import { PearAICreatorVisibleContext } from "../../../../common/contextkeys.js";
11+
12+
export class HideCreatorLoadingOverlayAction extends Action2 {
13+
static readonly ID = "workbench.action.hideCreatorLoadingOverlay";
14+
15+
constructor() {
16+
super({
17+
id: HideCreatorLoadingOverlayAction.ID,
18+
title: {
19+
value: "Close Creator Loading Overlay",
20+
original: "Close Creator Loading Overlay",
21+
},
22+
f1: false,
23+
});
24+
}
25+
26+
run(accessor: ServicesAccessor): void {
27+
const creatorOverlayService = accessor.get(ICreatorOverlayService);
28+
creatorOverlayService.hideLoadingOverlay();
29+
}
30+
}
31+
32+
export class CloseCreatorOverlayAction extends Action2 {
33+
static readonly ID = "workbench.action.closeCreatorView";
34+
35+
constructor() {
36+
super({
37+
id: CloseCreatorOverlayAction.ID,
38+
title: {
39+
value: "Close Creator View Popup",
40+
original: "Close Creator View Popup",
41+
},
42+
f1: true,
43+
keybinding: {
44+
weight: 210,
45+
primary: KeyCode.Escape,
46+
// when: PearAICreatorVisibleContext,
47+
},
48+
});
49+
}
50+
51+
run(accessor: ServicesAccessor): void {
52+
const creatorOverlayService = accessor.get(ICreatorOverlayService);
53+
creatorOverlayService.hide();
54+
}
55+
}
56+
57+
export class ToggleCreatorOverlayAction extends Action2 {
58+
static readonly ID = "workbench.action.toggleCreatorView";
59+
60+
constructor() {
61+
super({
62+
id: ToggleCreatorOverlayAction.ID,
63+
title: {
64+
value: "Toggle Creator View Popup",
65+
original: "Toggle Creator View Popup",
66+
},
67+
f1: true,
68+
keybinding: {
69+
weight: 200,
70+
primary: KeyMod.CtrlCmd | KeyCode.KeyE,
71+
},
72+
});
73+
}
74+
75+
run(accessor: ServicesAccessor): void {
76+
const creatorOverlayService = accessor.get(ICreatorOverlayService);
77+
creatorOverlayService.toggle();
78+
}
79+
}
80+
81+
export class LockCreatorOverlayAction extends Action2 {
82+
static readonly ID = "workbench.action.lockCreatorView";
83+
84+
constructor() {
85+
super({
86+
id: LockCreatorOverlayAction.ID,
87+
title: { value: "Lock Creator View", original: "Lock Creator View" },
88+
f1: true,
89+
});
90+
}
91+
92+
run(accessor: ServicesAccessor): void {
93+
const creatorOverlayService = accessor.get(ICreatorOverlayService);
94+
creatorOverlayService.lock();
95+
}
96+
}
97+
98+
export class UnlockCreatorOverlayAction extends Action2 {
99+
static readonly ID = "workbench.action.unlockCreatorView";
100+
101+
constructor() {
102+
super({
103+
id: UnlockCreatorOverlayAction.ID,
104+
title: { value: "Unlock Creator View", original: "Unlock Creator View" },
105+
f1: true,
106+
});
107+
}
108+
109+
run(accessor: ServicesAccessor): void {
110+
const creatorOverlayService = accessor.get(ICreatorOverlayService);
111+
creatorOverlayService.unlock();
112+
}
113+
}
114+
115+
// Register all actions
116+
registerAction2(CloseCreatorOverlayAction);
117+
registerAction2(ToggleCreatorOverlayAction);
118+
registerAction2(LockCreatorOverlayAction);
119+
registerAction2(UnlockCreatorOverlayAction);
120+
registerAction2(HideCreatorLoadingOverlayAction);

0 commit comments

Comments
 (0)