in src/archetype/createProject/SelectArchetypeStep.ts [22:62]
public async run(metadata: IProjectCreationMetadata): Promise<StepResult> {
const disposables: Disposable[] = [];
const specifyAchetypePromise = new Promise<StepResult>(async (resolve, _reject) => {
const pickBox: QuickPick<IArchetypePickItem> = window.createQuickPick<IArchetypePickItem>();
pickBox.title = "Create Maven Project";
pickBox.placeholder = "Select an archetype ...";
pickBox.matchOnDescription = true;
pickBox.ignoreFocusOut = true;
pickBox.items = await this.getArchetypePickItems(false);
disposables.push(
pickBox.onDidTriggerButton(async (item) => {
if (item === QuickInputButtons.Back) {
pickBox.items = await this.getArchetypePickItems(false);
pickBox.buttons = [];
}
}),
pickBox.onDidAccept(async () => {
if (pickBox.selectedItems[0].archetype === undefined) {
pickBox.items = await this.getArchetypePickItems(true);
pickBox.buttons = [QuickInputButtons.Back];
} else {
metadata.archetypeArtifactId = pickBox.selectedItems[0].archetype.artifactId;
metadata.archetypeGroupId = pickBox.selectedItems[0].archetype.groupId;
metadata.archetype = pickBox.selectedItems[0].archetype;
resolve(StepResult.NEXT);
}
}),
pickBox.onDidHide(() => {
resolve(StepResult.STOP);
})
);
disposables.push(pickBox);
pickBox.show();
});
try {
return await specifyAchetypePromise;
} finally {
disposables.forEach(d => d.dispose());
}
}