Скрыть пункт меню с основными выражениями Eclipse SWT - PullRequest
1 голос
/ 04 мая 2020

У меня есть меню панели инструментов для настраиваемого редактора, состоящего из двух частей. Я хочу, чтобы некоторые пункты меню появлялись только тогда, когда фокусировалась страница 1, а другие - когда фокусировалась страница 2.

Я определил панель инструментов в плагине. xml и использую Eclipse Core Expression activeFocusControlId в сочетании с IFocusService .

Я хорошо работаю, когда нажимаю на разные страницы, но изначально отображаются все элементы меню (даже когда я вызываю setFocus () из код редактора).

Как правильно запустить меню?

         <command
               commandId="newInput"
               label="New Entry"
               style="push"
            <visibleWhen
                  checkEnabled="false">
               <with
                     variable="activeFocusControlId">
                  <equals
                        value="inputViewer">
                  </equals>
               </with>
            </visibleWhen>
         </command>
         <command
               commandId="newClassification"
               label="New Classification"
               style="push"
            <visibleWhen
                  checkEnabled="false">
               <with
                     variable="activeFocusControlId">
                  <equals
                        value="classificationViewer">
                  </equals>
               </with>
            </visibleWhen>
         </command>

Java Код в MultiPageEditorPart's createPages () метод

IFocusService service = (IFocusService)this.getSite().getService(IFocusService.class);
service.addFocusTracker(this.viewer.getGrid(), "inputViewer");
service.addFocusTracker(this.classificationViewer.getGrid(),"classificationViewer" );
...