5
5
import vscode = require( "vscode" ) ;
6
6
import QuickPickItem = vscode . QuickPickItem ;
7
7
8
- export interface ICheckboxOption {
8
+ export class CheckboxQuickPickItem {
9
9
name : string ;
10
10
isSelected : boolean ;
11
11
}
12
12
13
13
export class CheckboxQuickPick {
14
- private options : ICheckboxOption [ ] ;
14
+ private options : CheckboxQuickPickItem [ ] ;
15
15
private readonly confirm : string ;
16
16
private readonly checkboxOn : string ;
17
17
private readonly checkboxOff : string ;
18
18
private readonly confirmPlaceHolder : string ;
19
19
20
- constructor ( options : ICheckboxOption [ ] ) {
20
+ constructor ( options : CheckboxQuickPickItem [ ] ) {
21
21
this . options = options ;
22
22
this . confirm = "$(check)" ;
23
23
this . checkboxOn = "[ x ]" ;
24
24
this . checkboxOff = "[ ]" ;
25
- this . confirmPlaceHolder = "Select " + this . confirm + " to confirm";
25
+ this . confirmPlaceHolder = "Select 'Confirm' to confirm" ;
26
26
}
27
27
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 ( ) ;
30
30
this . showInner ( tempOptions , callback ) ;
31
31
}
32
32
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
+ }
40
42
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
+ }
46
48
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
+ } ) ;
51
53
}
52
54
53
- private getRuleIndex ( options : ICheckboxOption [ ] , optionLabel : string ) : number {
55
+ private getRuleIndex ( options : CheckboxQuickPickItem [ ] , optionLabel : string ) : number {
54
56
return options . findIndex ( opt => opt . name == optionLabel ) ;
55
57
}
56
58
57
- private getQuickPickItems ( tempOptions : ICheckboxOption [ ] ) : QuickPickItem [ ] {
59
+ private getQuickPickItems ( tempOptions : CheckboxQuickPickItem [ ] ) : QuickPickItem [ ] {
58
60
let quickPickItems : QuickPickItem [ ] = [ ] ;
59
61
tempOptions . forEach ( option =>
60
62
quickPickItems . push ( {
@@ -72,7 +74,7 @@ export class CheckboxQuickPick {
72
74
return ! state ;
73
75
}
74
76
75
- private toggleOption ( option : ICheckboxOption ) : void {
77
+ private toggleOption ( option : CheckboxQuickPickItem ) : void {
76
78
option . isSelected = this . toggleState ( option . isSelected ) ;
77
79
}
78
80
0 commit comments