55import vscode = require( "vscode" ) ;
66import QuickPickItem = vscode . QuickPickItem ;
77
8- export interface ICheckboxOption {
8+ export class CheckboxQuickPickItem {
99 name : string ;
1010 isSelected : boolean ;
1111}
1212
1313export class CheckboxQuickPick {
14- private options : ICheckboxOption [ ] ;
14+ private options : CheckboxQuickPickItem [ ] ;
1515 private readonly confirm : string ;
1616 private readonly checkboxOn : string ;
1717 private readonly checkboxOff : string ;
1818 private readonly confirmPlaceHolder : string ;
1919
20- constructor ( options : ICheckboxOption [ ] ) {
20+ constructor ( options : CheckboxQuickPickItem [ ] ) {
2121 this . options = options ;
2222 this . confirm = "$(check)" ;
2323 this . checkboxOn = "[ x ]" ;
2424 this . checkboxOff = "[ ]" ;
25- this . confirmPlaceHolder = "Select " + this . confirm + " to confirm";
25+ this . confirmPlaceHolder = "Select 'Confirm' to confirm" ;
2626 }
2727
28- public show ( callback : ( options : ICheckboxOption [ ] ) => void ) : void {
29- let tempOptions : ICheckboxOption [ ] = this . options . slice ( ) ;
28+ public show ( callback : ( options : CheckboxQuickPickItem [ ] ) => void ) : void {
29+ let tempOptions : CheckboxQuickPickItem [ ] = this . options . slice ( ) ;
3030 this . showInner ( tempOptions , callback ) ;
3131 }
3232
33- private showInner ( tempOptions : ICheckboxOption [ ] , callback : ( options : ICheckboxOption [ ] ) => void ) : void {
34- vscode . window . showQuickPick (
35- this . getQuickPickItems ( tempOptions ) ,
36- { ignoreFocusOut : true , placeHolder : this . confirmPlaceHolder } ) . then ( ( selection ) => {
37- if ( ! selection ) {
38- return ;
39- }
33+ private showInner (
34+ tempOptions : CheckboxQuickPickItem [ ] ,
35+ callback : ( options : CheckboxQuickPickItem [ ] ) => void ) : void {
36+ vscode . window . showQuickPick (
37+ this . getQuickPickItems ( tempOptions ) ,
38+ { ignoreFocusOut : true , placeHolder : this . confirmPlaceHolder } ) . then ( ( selection ) => {
39+ if ( ! selection ) {
40+ return ;
41+ }
4042
41- if ( selection . label == this . confirm ) {
42- callback ( tempOptions ) ;
43- this . options = tempOptions ;
44- return ;
45- }
43+ if ( selection . label == this . confirm ) {
44+ callback ( tempOptions ) ;
45+ this . options = tempOptions ;
46+ return ;
47+ }
4648
47- let index : number = this . getRuleIndex ( tempOptions , selection . description ) ;
48- this . toggleOption ( tempOptions [ index ] ) ;
49- this . showInner ( tempOptions , callback ) ;
50- } ) ;
49+ let index : number = this . getRuleIndex ( tempOptions , selection . description ) ;
50+ this . toggleOption ( tempOptions [ index ] ) ;
51+ this . showInner ( tempOptions , callback ) ;
52+ } ) ;
5153 }
5254
53- private getRuleIndex ( options : ICheckboxOption [ ] , optionLabel : string ) : number {
55+ private getRuleIndex ( options : CheckboxQuickPickItem [ ] , optionLabel : string ) : number {
5456 return options . findIndex ( opt => opt . name == optionLabel ) ;
5557 }
5658
57- private getQuickPickItems ( tempOptions : ICheckboxOption [ ] ) : QuickPickItem [ ] {
59+ private getQuickPickItems ( tempOptions : CheckboxQuickPickItem [ ] ) : QuickPickItem [ ] {
5860 let quickPickItems : QuickPickItem [ ] = [ ] ;
5961 tempOptions . forEach ( option =>
6062 quickPickItems . push ( {
@@ -72,7 +74,7 @@ export class CheckboxQuickPick {
7274 return ! state ;
7375 }
7476
75- private toggleOption ( option : ICheckboxOption ) : void {
77+ private toggleOption ( option : CheckboxQuickPickItem ) : void {
7678 option . isSelected = this . toggleState ( option . isSelected ) ;
7779 }
7880
0 commit comments