in src/handler/utils.ts [94:160]
export async function createInputBox(inputMetaData: IInputMetaData): Promise<boolean> {
const disposables: Disposable[] = [];
const result: boolean = await new Promise<boolean>((resolve, reject) => {
const inputBox: InputBox = window.createInputBox();
inputBox.title = inputMetaData.title;
inputBox.placeholder = inputMetaData.placeholder;
inputBox.prompt = inputMetaData.prompt;
inputBox.value = inputMetaData.defaultValue;
inputBox.ignoreFocusOut = true;
if (inputMetaData.metadata.pickSteps.length > 0) {
inputBox.buttons = [(QuickInputButtons.Back)];
disposables.push(
inputBox.onDidTriggerButton((item) => {
if (item === QuickInputButtons.Back) {
return resolve(false);
}
})
);
}
disposables.push(
inputBox.onDidChangeValue(() => {
let validCheck: string | null;
if (inputMetaData.pickStep instanceof SpecifyGroupIdStep) {
validCheck = groupIdValidation(inputBox.value);
} else if (inputMetaData.pickStep instanceof SpecifyArtifactIdStep) {
validCheck = artifactIdValidation(inputBox.value);
}
if (validCheck !== null) {
inputBox.enabled = false;
inputBox.validationMessage = validCheck;
} else {
inputBox.enabled = true;
inputBox.validationMessage = undefined;
}
}),
inputBox.onDidAccept(() => {
if (!inputBox.enabled) {
return;
}
if (inputMetaData.pickStep instanceof SpecifyGroupIdStep) {
inputMetaData.metadata.groupId = inputBox.value;
SpecifyGroupIdStep.getInstance().setDefaultInput(inputBox.value);
inputMetaData.metadata.pickSteps.push(SpecifyGroupIdStep.getInstance());
} else if (inputMetaData.pickStep instanceof SpecifyArtifactIdStep) {
inputMetaData.metadata.artifactId = inputBox.value;
SpecifyArtifactIdStep.getInstance().setDefaultInput(inputBox.value);
inputMetaData.metadata.pickSteps.push(SpecifyArtifactIdStep.getInstance());
}
return resolve(true);
}),
inputBox.onDidHide(() => {
if (inputMetaData.pickStep instanceof SpecifyGroupIdStep) {
return reject(new OperationCanceledError("GroupId not specified."));
} else if (inputMetaData.pickStep instanceof SpecifyArtifactIdStep) {
return reject(new OperationCanceledError("ArtifactId not specified."));
}
return reject(new Error("Unknown inputting step"));
})
);
disposables.push(inputBox);
inputBox.show();
});
for (const d of disposables) {
d.dispose();
}
return result;
}