Skip to content

Commit cc8f338

Browse files
committed
Support menu separators and improve types
1 parent cec9062 commit cc8f338

File tree

1 file changed

+27
-20
lines changed

1 file changed

+27
-20
lines changed

src/commands/studio.ts

Lines changed: 27 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ export enum StudioMenuType {
2727
}
2828

2929
interface StudioAction extends vscode.QuickPickItem {
30-
name: string;
3130
id: string;
31+
save: number;
3232
}
3333

3434
function getOtherStudioActionLabel(action: OtherStudioAction): string {
@@ -227,7 +227,7 @@ class StudioActions {
227227
}
228228

229229
private userAction(action, afterUserAction = false, answer = "", msg = "", type = 0): Thenable<void> {
230-
if (!action) {
230+
if (!action || action.id == "") {
231231
return;
232232
}
233233
const func = afterUserAction ? "AfterUserAction(?, ?, ?, ?, ?)" : "UserAction(?, ?, ?, ?)";
@@ -275,29 +275,36 @@ class StudioActions {
275275
);
276276
}
277277

278-
private prepareMenuItems(menus, sourceControl: boolean): any[] {
278+
private prepareMenuItems(menus, sourceControl: boolean): StudioAction[] {
279279
return menus
280280
.filter((menu) => sourceControl == (menu.id === "%SourceMenu" || menu.id === "%SourceContext"))
281281
.reduce(
282282
(list, sub) =>
283283
list.concat(
284284
sub.items
285-
.filter((el) => el.id !== "" && el.separator == 0)
286-
.filter((el) => el.enabled == 1)
287-
.map((el) => ({
288-
...el,
289-
id: `${sub.id},${el.id}`,
290-
label: el.name.replace("&", ""),
291-
itemId: el.id,
292-
type: sub.type,
293-
description: sub.name.replace("&", ""),
294-
}))
285+
.filter((el) => el.id !== "")
286+
.filter((el) => el.separator == 1 || el.enabled == 1)
287+
.map((el) =>
288+
el.separator == 1
289+
? {
290+
label: "",
291+
description: "---",
292+
id: "",
293+
save: 0,
294+
}
295+
: {
296+
label: el.name.replace("&", ""),
297+
description: sub.name.replace("&", ""),
298+
id: `${sub.id},${el.id}`,
299+
save: el.save,
300+
}
301+
)
295302
),
296303
[]
297304
);
298305
}
299306

300-
public getMenu(menuType: StudioMenuType, sourceControl: boolean): Thenable<any> {
307+
public getMenu(menuType: StudioMenuType, sourceControl: boolean): Thenable<void> {
301308
let selectedText = "";
302309
const editor = vscode.window.activeTextEditor;
303310
if (this.uri && editor) {
@@ -367,15 +374,15 @@ class StudioActions {
367374
}
368375
}
369376

370-
export async function mainCommandMenu(uri?: vscode.Uri): Promise<any> {
377+
export async function mainCommandMenu(uri?: vscode.Uri): Promise<void> {
371378
return _mainMenu(false, uri);
372379
}
373380

374-
export async function mainSourceControlMenu(uri?: vscode.Uri): Promise<any> {
381+
export async function mainSourceControlMenu(uri?: vscode.Uri): Promise<void> {
375382
return _mainMenu(true, uri);
376383
}
377384

378-
async function _mainMenu(sourceControl: boolean, uri?: vscode.Uri): Promise<any> {
385+
async function _mainMenu(sourceControl: boolean, uri?: vscode.Uri): Promise<void> {
379386
uri = uri || vscode.window.activeTextEditor?.document.uri;
380387
if (uri && uri.scheme !== FILESYSTEM_SCHEMA) {
381388
return;
@@ -384,15 +391,15 @@ async function _mainMenu(sourceControl: boolean, uri?: vscode.Uri): Promise<any>
384391
return studioActions && studioActions.getMenu(StudioMenuType.Main, sourceControl);
385392
}
386393

387-
export async function contextCommandMenu(node: PackageNode | ClassNode | RoutineNode): Promise<any> {
394+
export async function contextCommandMenu(node: PackageNode | ClassNode | RoutineNode): Promise<void> {
388395
return _contextMenu(false, node);
389396
}
390397

391-
export async function contextSourceControlMenu(node: PackageNode | ClassNode | RoutineNode): Promise<any> {
398+
export async function contextSourceControlMenu(node: PackageNode | ClassNode | RoutineNode): Promise<void> {
392399
return _contextMenu(true, node);
393400
}
394401

395-
export async function _contextMenu(sourceControl: boolean, node: PackageNode | ClassNode | RoutineNode): Promise<any> {
402+
export async function _contextMenu(sourceControl: boolean, node: PackageNode | ClassNode | RoutineNode): Promise<void> {
396403
const nodeOrUri = node || vscode.window.activeTextEditor?.document.uri;
397404
if (!nodeOrUri || (nodeOrUri instanceof vscode.Uri && nodeOrUri.scheme !== FILESYSTEM_SCHEMA)) {
398405
return;

0 commit comments

Comments
 (0)