(actions: QuickPickAction[])
| 389 | * The next action will be chosen for each call to createQuickPick(). |
| 390 | */ |
| 391 | export function stubCreateQuickPickActions(actions: QuickPickAction[]): void { |
| 392 | const createQuickPick = sb.stub(vs.window, "createQuickPick"); |
| 393 | createQuickPick.callsFake(() => { |
| 394 | let acceptHandler: () => void; |
| 395 | let hideHandler: () => void; |
| 396 | const quickPick = { |
| 397 | activeItems: [] as vs.QuickPickItem[], |
| 398 | canSelectMany: false, |
| 399 | dispose: sb.stub(), |
| 400 | items: [] as vs.QuickPickItem[], |
| 401 | onDidAccept: (handler: () => void) => { |
| 402 | acceptHandler = handler; |
| 403 | return { dispose: () => undefined }; |
| 404 | }, |
| 405 | onDidHide: (handler: () => void) => { |
| 406 | hideHandler = handler; |
| 407 | return { dispose: () => undefined }; |
| 408 | }, |
| 409 | placeholder: undefined as string | undefined, |
| 410 | selectedItems: [] as vs.QuickPickItem[], |
| 411 | show: () => { |
| 412 | const action = actions.shift(); |
| 413 | if (!action) |
| 414 | throw new Error("No more quick pick actions were available"); |
| 415 | |
| 416 | // Defer callbacks until after the implementation code has finished wiring up |
| 417 | // all event handlers. |
| 418 | setImmediate(() => { |
| 419 | switch (action.kind) { |
| 420 | case "cancel": |
| 421 | hideHandler?.(); |
| 422 | break; |
| 423 | case "top-level-setting": |
| 424 | quickPick.selectedItems = quickPick.items.filter((item) => item.label === action.label); |
| 425 | acceptHandler?.(); |
| 426 | break; |
| 427 | case "enum": |
| 428 | quickPick.activeItems = quickPick.items.filter((item) => item.label === action.label); |
| 429 | acceptHandler?.(); |
| 430 | break; |
| 431 | case "multi": |
| 432 | quickPick.selectedItems = quickPick.items.filter((item) => action.labels.includes(item.label)); |
| 433 | acceptHandler?.(); |
| 434 | break; |
| 435 | case "accept-selected": |
| 436 | acceptHandler?.(); |
| 437 | break; |
| 438 | } |
| 439 | }); |
| 440 | }, |
| 441 | title: undefined as string | undefined, |
| 442 | }; |
| 443 | |
| 444 | return quickPick; |
| 445 | }); |
| 446 | } |
| 447 | |
| 448 | export async function closeAllOpenFiles(): Promise<void> { |
no outgoing calls