@@ -31,6 +31,34 @@ class ConfirmController {
3131 } ) ;
3232 }
3333
34+ const selectAllLabel = 'Select All Components' ;
35+
36+ menu . insert ( 0 , new MenuItem ( {
37+ label : selectAllLabel ,
38+ click : ( ) => {
39+ this . sc . $apply ( this . selectAll . bind ( this ) ) ;
40+ }
41+ } ) ) ;
42+
43+ const deselectAllLabel = 'Deselect All Components' ;
44+
45+
46+ menu . insert ( 1 , new MenuItem ( {
47+ label : deselectAllLabel ,
48+ click : ( ) => {
49+ this . sc . $apply ( this . deselectAll . bind ( this ) ) ;
50+ }
51+ } ) ) ;
52+
53+ menu . insert ( 2 , new MenuItem ( {
54+ label : deselectAllLabel ,
55+ type : 'separator'
56+ } ) ) ;
57+
58+ $scope . $on ( '$destroy' , ( ) => {
59+ restoreMenu ( ) ;
60+ } )
61+
3462 $scope . isConfigurationValid = this . isConfigurationValid ;
3563
3664 $scope . $watch ( '$viewContentLoaded' , ( ) => {
@@ -45,6 +73,23 @@ class ConfirmController {
4573 } ) ;
4674 }
4775
76+ selectAll ( ) {
77+ let checkboxModel = this . sc . checkboxModel ;
78+ for ( let key in checkboxModel ) {
79+ let node = checkboxModel [ key ] ;
80+ if ( node . isInstallable && node . isNotDetected ( ) ) {
81+ node . selectedOption = 'install' ;
82+ }
83+ }
84+ }
85+
86+ deselectAll ( ) {
87+ let checkboxModel = this . sc . checkboxModel ;
88+ for ( let key in checkboxModel ) {
89+ checkboxModel [ key ] . selectedOption = 'detected' ;
90+ }
91+ }
92+
4893 initPage ( ) {
4994 return this . detectInstalledComponents ( ) . then ( ( ) => {
5095 this . graph = ComponentLoader . loadGraph ( this . installerDataSvc ) ;
0 commit comments