mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-16 10:58:30 -05:00
Remove unused prompt code (#10996)
This commit is contained in:
@@ -1,50 +0,0 @@
|
|||||||
// This code is originally from https://github.com/DonJayamanne/bowerVSCode
|
|
||||||
// License: https://github.com/DonJayamanne/bowerVSCode/blob/master/LICENSE
|
|
||||||
|
|
||||||
import { window } from 'vscode';
|
|
||||||
import Prompt from './prompt';
|
|
||||||
import EscapeException from './escapeException';
|
|
||||||
|
|
||||||
const figures = require('figures');
|
|
||||||
|
|
||||||
export default class CheckboxPrompt extends Prompt {
|
|
||||||
|
|
||||||
constructor(question: any, ignoreFocusOut?: boolean) {
|
|
||||||
super(question, ignoreFocusOut);
|
|
||||||
}
|
|
||||||
|
|
||||||
public render(): any {
|
|
||||||
let choices = this._question.choices.reduce((result: any, choice: any) => {
|
|
||||||
let choiceName = choice.name || choice;
|
|
||||||
result[`${choice.checked === true ? figures.radioOn : figures.radioOff} ${choiceName}`] = choice;
|
|
||||||
return result;
|
|
||||||
}, {});
|
|
||||||
|
|
||||||
let options = this.defaultQuickPickOptions;
|
|
||||||
options.placeHolder = this._question.message;
|
|
||||||
|
|
||||||
let quickPickOptions = Object.keys(choices);
|
|
||||||
quickPickOptions.push(figures.tick);
|
|
||||||
|
|
||||||
return window.showQuickPick(quickPickOptions, options)
|
|
||||||
.then(result => {
|
|
||||||
if (result === undefined) {
|
|
||||||
throw new EscapeException();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (result !== figures.tick) {
|
|
||||||
choices[result].checked = !choices[result].checked;
|
|
||||||
|
|
||||||
return this.render();
|
|
||||||
}
|
|
||||||
|
|
||||||
return this._question.choices.reduce((result2: any, choice: any) => {
|
|
||||||
if (choice.checked === true) {
|
|
||||||
result2.push(choice.value);
|
|
||||||
}
|
|
||||||
|
|
||||||
return result2;
|
|
||||||
}, []);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,76 +0,0 @@
|
|||||||
// This code is originally from https://github.com/DonJayamanne/bowerVSCode
|
|
||||||
// License: https://github.com/DonJayamanne/bowerVSCode/blob/master/LICENSE
|
|
||||||
|
|
||||||
import vscode = require('vscode');
|
|
||||||
import Prompt from './prompt';
|
|
||||||
import EscapeException from './escapeException';
|
|
||||||
import { INameValueChoice } from './question';
|
|
||||||
|
|
||||||
const figures = require('figures');
|
|
||||||
|
|
||||||
export default class ExpandPrompt extends Prompt {
|
|
||||||
|
|
||||||
constructor(question: any, ignoreFocusOut?: boolean) {
|
|
||||||
super(question, ignoreFocusOut);
|
|
||||||
}
|
|
||||||
|
|
||||||
public render(): any {
|
|
||||||
// label indicates this is a quickpick item. Otherwise it's a name-value pair
|
|
||||||
if (this._question.choices[0].label) {
|
|
||||||
return this.renderQuickPick(this._question.choices);
|
|
||||||
} else {
|
|
||||||
return this.renderNameValueChoice(this._question.choices);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private renderQuickPick(choices: vscode.QuickPickItem[]): any {
|
|
||||||
let options = this.defaultQuickPickOptions;
|
|
||||||
options.placeHolder = this._question.message;
|
|
||||||
|
|
||||||
return vscode.window.showQuickPick(choices, options)
|
|
||||||
.then(result => {
|
|
||||||
if (result === undefined) {
|
|
||||||
throw new EscapeException();
|
|
||||||
}
|
|
||||||
|
|
||||||
return this.validateAndReturn(result || false);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
private renderNameValueChoice(choices: INameValueChoice[]): any {
|
|
||||||
const choiceMap = this._question.choices.reduce((result: any, choice: any) => {
|
|
||||||
result[choice.name] = choice.value;
|
|
||||||
return result;
|
|
||||||
}, {});
|
|
||||||
|
|
||||||
let options = this.defaultQuickPickOptions;
|
|
||||||
options.placeHolder = this._question.message;
|
|
||||||
|
|
||||||
return vscode.window.showQuickPick(Object.keys(choiceMap), options)
|
|
||||||
.then(result => {
|
|
||||||
if (result === undefined) {
|
|
||||||
throw new EscapeException();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Note: cannot be used with 0 or false responses
|
|
||||||
let returnVal = choiceMap[result] || false;
|
|
||||||
return this.validateAndReturn(returnVal);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
private validateAndReturn(value: any): any {
|
|
||||||
if (!this.validate(value)) {
|
|
||||||
return this.render();
|
|
||||||
}
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
|
|
||||||
private validate(value: any): boolean {
|
|
||||||
const validationError = this._question.validate ? this._question.validate(value || '') : undefined;
|
|
||||||
|
|
||||||
if (validationError) {
|
|
||||||
this._question.message = `${figures.warning} ${validationError}`;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -4,34 +4,14 @@
|
|||||||
// License: https://github.com/DonJayamanne/bowerVSCode/blob/master/LICENSE
|
// License: https://github.com/DonJayamanne/bowerVSCode/blob/master/LICENSE
|
||||||
|
|
||||||
import Prompt from './prompt';
|
import Prompt from './prompt';
|
||||||
import InputPrompt from './input';
|
|
||||||
import PasswordPrompt from './password';
|
|
||||||
import ListPrompt from './list';
|
|
||||||
import ConfirmPrompt from './confirm';
|
import ConfirmPrompt from './confirm';
|
||||||
import CheckboxPrompt from './checkbox';
|
|
||||||
import ExpandPrompt from './expand';
|
|
||||||
|
|
||||||
export default class PromptFactory {
|
export default class PromptFactory {
|
||||||
|
|
||||||
public static createPrompt(question: any, ignoreFocusOut?: boolean): Prompt {
|
public static createPrompt(question: any, ignoreFocusOut?: boolean): Prompt {
|
||||||
/**
|
switch (question.type) {
|
||||||
* TODO:
|
|
||||||
* - folder
|
|
||||||
*/
|
|
||||||
switch (question.type || 'input') {
|
|
||||||
case 'string':
|
|
||||||
case 'input':
|
|
||||||
return new InputPrompt(question, ignoreFocusOut);
|
|
||||||
case 'password':
|
|
||||||
return new PasswordPrompt(question, ignoreFocusOut);
|
|
||||||
case 'list':
|
|
||||||
return new ListPrompt(question, ignoreFocusOut);
|
|
||||||
case 'confirm':
|
case 'confirm':
|
||||||
return new ConfirmPrompt(question, ignoreFocusOut);
|
return new ConfirmPrompt(question, ignoreFocusOut);
|
||||||
case 'checkbox':
|
|
||||||
return new CheckboxPrompt(question, ignoreFocusOut);
|
|
||||||
case 'expand':
|
|
||||||
return new ExpandPrompt(question, ignoreFocusOut);
|
|
||||||
default:
|
default:
|
||||||
throw new Error(`Could not find a prompt for question type ${question.type}`);
|
throw new Error(`Could not find a prompt for question type ${question.type}`);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,59 +0,0 @@
|
|||||||
'use strict';
|
|
||||||
|
|
||||||
// This code is originally from https://github.com/DonJayamanne/bowerVSCode
|
|
||||||
// License: https://github.com/DonJayamanne/bowerVSCode/blob/master/LICENSE
|
|
||||||
|
|
||||||
import { window, InputBoxOptions } from 'vscode';
|
|
||||||
import Prompt from './prompt';
|
|
||||||
import EscapeException from './escapeException';
|
|
||||||
|
|
||||||
const figures = require('figures');
|
|
||||||
|
|
||||||
export default class InputPrompt extends Prompt {
|
|
||||||
|
|
||||||
protected _options: InputBoxOptions;
|
|
||||||
|
|
||||||
constructor(question: any, ignoreFocusOut?: boolean) {
|
|
||||||
super(question, ignoreFocusOut);
|
|
||||||
|
|
||||||
this._options = this.defaultInputBoxOptions;
|
|
||||||
this._options.prompt = this._question.message;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Helper for callers to know the right type to get from the type factory
|
|
||||||
public static get promptType(): string { return 'input'; }
|
|
||||||
|
|
||||||
public render(): any {
|
|
||||||
// Prefer default over the placeHolder, if specified
|
|
||||||
let placeHolder = this._question.default ? this._question.default : this._question.placeHolder;
|
|
||||||
|
|
||||||
if (this._question.default instanceof Error) {
|
|
||||||
placeHolder = this._question.default.message;
|
|
||||||
this._question.default = undefined;
|
|
||||||
}
|
|
||||||
|
|
||||||
this._options.placeHolder = placeHolder;
|
|
||||||
|
|
||||||
return window.showInputBox(this._options)
|
|
||||||
.then(result => {
|
|
||||||
if (result === undefined) {
|
|
||||||
throw new EscapeException();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (result === '') {
|
|
||||||
// Use the default value, if defined
|
|
||||||
result = this._question.default || '';
|
|
||||||
}
|
|
||||||
|
|
||||||
const validationError = this._question.validate ? this._question.validate(result || '') : undefined;
|
|
||||||
|
|
||||||
if (validationError) {
|
|
||||||
this._question.default = new Error(`${figures.warning} ${validationError}`);
|
|
||||||
|
|
||||||
return this.render();
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
// This code is originally from https://github.com/DonJayamanne/bowerVSCode
|
|
||||||
// License: https://github.com/DonJayamanne/bowerVSCode/blob/master/LICENSE
|
|
||||||
|
|
||||||
import { window } from 'vscode';
|
|
||||||
import Prompt from './prompt';
|
|
||||||
import EscapeException from './escapeException';
|
|
||||||
|
|
||||||
export default class ListPrompt extends Prompt {
|
|
||||||
|
|
||||||
constructor(question: any, ignoreFocusOut?: boolean) {
|
|
||||||
super(question, ignoreFocusOut);
|
|
||||||
}
|
|
||||||
|
|
||||||
public render(): any {
|
|
||||||
const choices = this._question.choices.reduce((result: any, choice: any) => {
|
|
||||||
result[choice.name] = choice.value;
|
|
||||||
return result;
|
|
||||||
}, {});
|
|
||||||
|
|
||||||
let options = this.defaultQuickPickOptions;
|
|
||||||
options.placeHolder = this._question.message;
|
|
||||||
|
|
||||||
return window.showQuickPick(Object.keys(choices), options)
|
|
||||||
.then(result => {
|
|
||||||
if (result === undefined) {
|
|
||||||
throw new EscapeException();
|
|
||||||
}
|
|
||||||
|
|
||||||
return choices[result];
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
'use strict';
|
|
||||||
|
|
||||||
// This code is originally from https://github.com/DonJayamanne/bowerVSCode
|
|
||||||
// License: https://github.com/DonJayamanne/bowerVSCode/blob/master/LICENSE
|
|
||||||
import InputPrompt from './input';
|
|
||||||
|
|
||||||
export default class PasswordPrompt extends InputPrompt {
|
|
||||||
|
|
||||||
constructor(question: any, ignoreFocusOut?: boolean) {
|
|
||||||
super(question, ignoreFocusOut);
|
|
||||||
|
|
||||||
this._options.password = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,70 +0,0 @@
|
|||||||
'use strict';
|
|
||||||
|
|
||||||
// This code is originally from https://github.com/DonJayamanne/bowerVSCode
|
|
||||||
// License: https://github.com/DonJayamanne/bowerVSCode/blob/master/LICENSE
|
|
||||||
|
|
||||||
import { window, StatusBarItem, StatusBarAlignment } from 'vscode';
|
|
||||||
|
|
||||||
export default class ProgressIndicator {
|
|
||||||
|
|
||||||
private _statusBarItem: StatusBarItem;
|
|
||||||
|
|
||||||
constructor() {
|
|
||||||
this._statusBarItem = window.createStatusBarItem(StatusBarAlignment.Left);
|
|
||||||
}
|
|
||||||
|
|
||||||
private _tasks: string[] = [];
|
|
||||||
public beginTask(task: string): void {
|
|
||||||
this._tasks.push(task);
|
|
||||||
this.displayProgressIndicator();
|
|
||||||
}
|
|
||||||
|
|
||||||
public endTask(task: string): void {
|
|
||||||
if (this._tasks.length > 0) {
|
|
||||||
this._tasks.pop();
|
|
||||||
}
|
|
||||||
|
|
||||||
this.setMessage();
|
|
||||||
}
|
|
||||||
|
|
||||||
private setMessage(): void {
|
|
||||||
if (this._tasks.length === 0) {
|
|
||||||
this._statusBarItem.text = '';
|
|
||||||
this.hideProgressIndicator();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
this._statusBarItem.text = this._tasks[this._tasks.length - 1];
|
|
||||||
this._statusBarItem.show();
|
|
||||||
}
|
|
||||||
|
|
||||||
private _interval: any;
|
|
||||||
private displayProgressIndicator(): void {
|
|
||||||
this.setMessage();
|
|
||||||
this.hideProgressIndicator();
|
|
||||||
this._interval = setInterval(() => this.onDisplayProgressIndicator(), 100);
|
|
||||||
}
|
|
||||||
private hideProgressIndicator(): void {
|
|
||||||
if (this._interval) {
|
|
||||||
clearInterval(this._interval);
|
|
||||||
this._interval = undefined;
|
|
||||||
}
|
|
||||||
this.ProgressCounter = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
private ProgressText = ['|', '/', '-', '\\', '|', '/', '-', '\\'];
|
|
||||||
private ProgressCounter = 0;
|
|
||||||
private onDisplayProgressIndicator(): void {
|
|
||||||
if (this._tasks.length === 0) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
let txt = this.ProgressText[this.ProgressCounter];
|
|
||||||
this._statusBarItem.text = this._tasks[this._tasks.length - 1] + ' ' + txt;
|
|
||||||
this.ProgressCounter++;
|
|
||||||
|
|
||||||
if (this.ProgressCounter >= this.ProgressText.length - 1) {
|
|
||||||
this.ProgressCounter = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user