2008-09-22 2 views
3

제가 작업하고있는 Eclipse RCP 앱이 있습니다. 여기에는 특정보기 관련 메뉴가 있으며 메뉴 항목 중 하나는 해당 기능을 사용할 수있을 때 옆에 체크 표시를하려는 항목입니다. 마찬가지로 다음에 항목을 선택하면 해당 기능을 사용할 수 없다는 것을 나타 내기 위해 항목을 선택 해제해야합니다.메뉴 항목 토글하기

제 질문은이 메뉴 항목의 토글 상태를 어떻게 설정합니까? 메뉴 항목을 선택했을 때 이벤트를 처리 할 IHandler가 있지만 GUI 요소 자체를 업데이트하는 방법을 잘 모르겠습니다.

StackOverflow 커뮤니티에서이 문제를 해결할 수있는 방법에 대한 의견이 있습니까?

+0

제목에 태그를 추가 할 필요가 없습니다. 즉, 태그의 용도입니다. – GEOCHET

답변

1

해결 방법에는 명령 처리기에서 IElementUpdater 인터페이스를 구현하는 것이 포함됩니다. 인터페이스 엘리먼트는 너무로 업데이트 할 수 있습니다

public void updateElement(UIElement element, Map parameters) 
{ 
    element.setChecked(isSelected);  
} 

updateElement가 너무로 핸들러의 실행 명령에서 호출 할 수있는 UI 새로 고침의 일환으로 호출됩니다

 ICommandService service = (ICommandService) HandlerUtil 
     .getActiveWorkbenchWindowChecked(event).getService(
      ICommandService.class); 
    service.refreshElements(event.getCommand().getId(), null); 

많은 추가 정보를 here ( 라디오 단추 명령 업데이트 상태를 항목)

1

어쩌면 상황이 변경을 확인 참조, 어쩌면 RCP와 Eclip 사이에 차이가 있습니다 se 플러그인을 사용했지만 액션 스타일을 toggle으로 설정하고 자동으로 전환을 처리했습니다. 소스 코드는 github.com에 있습니다.

 <action 
      class="live_py.EnableAction" 
      id="live-py.enable.action" 
      label="Li&amp;ve Coding" 
      menubarPath="pyGeneralMenu/pyNavigateGroup" 
      state="false" 
      style="toggle"> 

난 그냥 ID로 액션을 조회, 기능이 현재 활성화되어 있는지 여부를 확인하고 isChecked()를 호출합니다.

+0

방금 ​​많은 시간과 노력을 절약 해 주셨습니다. - 고마워요! – sfinnie