in src/archetype/createProject/SpecifyGroupIdStep.ts [10:55]
public async run(metadata: IProjectCreationMetadata): Promise<StepResult> {
const disposables: Disposable[] = [];
const specifyGroupIdPromise = new Promise<StepResult>((resolve, reject) => {
const inputBox: InputBox = window.createInputBox();
inputBox.title = "Create Maven Project";
inputBox.placeholder = "e.g. com.example";
inputBox.prompt = "Input group Id of your project.";
inputBox.value = metadata.groupId ?? "com.example";
inputBox.ignoreFocusOut = true;
if (this.previousStep) {
inputBox.buttons = [(QuickInputButtons.Back)];
disposables.push(
inputBox.onDidTriggerButton((item) => {
if (item === QuickInputButtons.Back) {
resolve(StepResult.PREVIOUS);
}
})
);
}
disposables.push(
inputBox.onDidChangeValue(() => {
const validationMessage: string | undefined = this.groupIdValidation(inputBox.value);
inputBox.enabled = validationMessage === undefined;
inputBox.validationMessage = validationMessage;
}),
inputBox.onDidAccept(() => {
if (!inputBox.enabled) {
reject("Invalid groupId submitted.");
}
metadata.groupId = inputBox.value;
resolve(StepResult.NEXT);
}),
inputBox.onDidHide(() => {
resolve(StepResult.STOP);
})
);
disposables.push(inputBox);
inputBox.show();
});
try {
return await specifyGroupIdPromise;
} finally {
disposables.forEach(d => d.dispose());
}
}