1
1
import { inject , injectable , postConstruct } from 'inversify' ;
2
2
import { Emitter } from '@theia/core/lib/common/event' ;
3
3
import { BoardUserField , CoreService } from '../../common/protocol' ;
4
- import { ArduinoMenus } from '../menu/arduino-menus' ;
4
+ import { ArduinoMenus , PlaceholderMenuNode } from '../menu/arduino-menus' ;
5
5
import { ArduinoToolbar } from '../toolbar/arduino-toolbar' ;
6
6
import { BoardsDataStore } from '../boards/boards-data-store' ;
7
7
import { MonitorConnection } from '../monitor/monitor-connection' ;
@@ -16,12 +16,16 @@ import {
16
16
} from './contribution' ;
17
17
import { UserFieldsDialog } from '../dialogs/user-fields/user-fields-dialog' ;
18
18
import { nls } from '@theia/core/lib/browser/nls' ;
19
+ import { DisposableCollection } from '@theia/core' ;
19
20
20
21
@injectable ( )
21
22
export class UploadSketch extends SketchContribution {
22
23
@inject ( CoreService )
23
24
protected readonly coreService : CoreService ;
24
25
26
+ @inject ( MenuModelRegistry )
27
+ protected readonly menuRegistry : MenuModelRegistry ;
28
+
25
29
@inject ( MonitorConnection )
26
30
protected readonly monitorConnection : MonitorConnection ;
27
31
@@ -42,11 +46,14 @@ export class UploadSketch extends SketchContribution {
42
46
protected uploadInProgress = false ;
43
47
protected boardRequiresUserFields = false ;
44
48
49
+ protected readonly menuActionsDisposables = new DisposableCollection ( ) ;
50
+
45
51
@postConstruct ( )
46
52
protected init ( ) : void {
47
53
this . boardsServiceClientImpl . onBoardsConfigChanged ( async ( ) => {
48
54
const userFields = await this . boardsServiceClientImpl . selectedBoardUserFields ( ) ;
49
55
this . boardRequiresUserFields = userFields . length > 0 ;
56
+ this . registerMenus ( this . menuRegistry ) ;
50
57
} )
51
58
}
52
59
@@ -124,24 +131,43 @@ export class UploadSketch extends SketchContribution {
124
131
}
125
132
126
133
registerMenus ( registry : MenuModelRegistry ) : void {
127
- registry . registerMenuAction ( ArduinoMenus . SKETCH__MAIN_GROUP , {
128
- commandId : UploadSketch . Commands . UPLOAD_SKETCH . id ,
129
- label : nls . localize ( 'arduino/sketch/upload' , 'Upload' ) ,
130
- order : '1' ,
131
- } ) ;
132
- registry . registerMenuAction ( ArduinoMenus . SKETCH__MAIN_GROUP , {
133
- commandId : UploadSketch . Commands . UPLOAD_WITH_CONFIGURATION . id ,
134
- label : UploadSketch . Commands . UPLOAD_WITH_CONFIGURATION . label ,
135
- order : '2' ,
136
- } ) ;
137
- registry . registerMenuAction ( ArduinoMenus . SKETCH__MAIN_GROUP , {
138
- commandId : UploadSketch . Commands . UPLOAD_SKETCH_USING_PROGRAMMER . id ,
139
- label : nls . localize (
140
- 'arduino/sketch/uploadUsingProgrammer' ,
141
- 'Upload Using Programmer'
142
- ) ,
143
- order : '3' ,
144
- } ) ;
134
+ this . menuActionsDisposables . dispose ( ) ;
135
+
136
+ this . menuActionsDisposables . push (
137
+ registry . registerMenuAction ( ArduinoMenus . SKETCH__MAIN_GROUP , {
138
+ commandId : UploadSketch . Commands . UPLOAD_SKETCH . id ,
139
+ label : nls . localize ( 'arduino/sketch/upload' , 'Upload' ) ,
140
+ order : '1' ,
141
+ } )
142
+ ) ;
143
+ if ( this . boardRequiresUserFields ) {
144
+ this . menuActionsDisposables . push (
145
+ registry . registerMenuAction ( ArduinoMenus . SKETCH__MAIN_GROUP , {
146
+ commandId : UploadSketch . Commands . UPLOAD_WITH_CONFIGURATION . id ,
147
+ label : UploadSketch . Commands . UPLOAD_WITH_CONFIGURATION . label ,
148
+ order : '2' ,
149
+ } )
150
+ ) ;
151
+ } else {
152
+ this . menuActionsDisposables . push (
153
+ registry . registerMenuNode ( ArduinoMenus . SKETCH__MAIN_GROUP , new PlaceholderMenuNode (
154
+ ArduinoMenus . SKETCH__MAIN_GROUP ,
155
+ // commandId: UploadSketch.Commands.UPLOAD_WITH_CONFIGURATION.id,
156
+ UploadSketch . Commands . UPLOAD_WITH_CONFIGURATION . label ! ,
157
+ { order : '2' }
158
+ ) )
159
+ ) ;
160
+ }
161
+ this . menuActionsDisposables . push (
162
+ registry . registerMenuAction ( ArduinoMenus . SKETCH__MAIN_GROUP , {
163
+ commandId : UploadSketch . Commands . UPLOAD_SKETCH_USING_PROGRAMMER . id ,
164
+ label : nls . localize (
165
+ 'arduino/sketch/uploadUsingProgrammer' ,
166
+ 'Upload Using Programmer'
167
+ ) ,
168
+ order : '3' ,
169
+ } )
170
+ ) ;
145
171
}
146
172
147
173
registerKeybindings ( registry : KeybindingRegistry ) : void {
0 commit comments