export async function waitForStandardMode()

in src/utility.ts [225:276]


export async function waitForStandardMode(progressReporter: IProgressReporter): Promise<boolean> {
    const importMessage = progressReporter?.getProgressLocation() === vscode.ProgressLocation.Notification ?
        "Importing projects, [check details](command:java.show.server.task.status)" : "Importing projects...";
    if (await isImportingProjects()) {
        progressReporter.report(importMessage);
    }

    const api = await getJavaExtensionAPI(progressReporter);
    if (!api) {
        return false;
    }

    if (api && api.serverMode === ServerMode.LIGHTWEIGHT) {
        const answer = await vscode.window.showInformationMessage("Run/Debug feature requires Java language server to run in Standard mode. "
            + "Do you want to switch it to Standard mode now?", "Yes", "Cancel");
        if (answer === "Yes") {
            if (api.serverMode === ServerMode.STANDARD) {
                return true;
            }

            progressReporter?.report(importMessage);
            return new Promise<boolean>((resolve) => {
                progressReporter.getCancellationToken().onCancellationRequested(() => {
                    resolve(false);
                });
                api.onDidServerModeChange((mode: string) => {
                    if (mode === ServerMode.STANDARD) {
                        resolve(true);
                    }
                });

                vscode.commands.executeCommand("java.server.mode.switch", ServerMode.STANDARD, true);
            });
        }

        return false;
    } else if (api && api.serverMode === ServerMode.HYBRID) {
        progressReporter.report(importMessage);
        return new Promise<boolean>((resolve) => {
            progressReporter.getCancellationToken().onCancellationRequested(() => {
                resolve(false);
            });
            api.onDidServerModeChange((mode: string) => {
                if (mode === ServerMode.STANDARD) {
                    resolve(true);
                }
            });
        });
    }

    return true;
}