2011-05-04 2 views
0

Eclipse RCP 응용 프로그램은 원래 3.1/3.2 시대에 구축되었으며 최근 3.6으로 전환 할 때까지 3.2에서 실행되었습니다. 해당 IApplicationPlatformUI.createAndRunWorkbench(...)을 통해 실행됩니다. 이 함수에 전달 된 WorkbenchAdvisorcreateActionBarAdvisor(...)ActionBarAdvisor을 반환하는 WorkbenchWindowAdvisor을 반환하기 위해 createWorkbenchWindowAdvisor(...)을 재정의합니다.Eclipse RCP 앱의 키보드 단축키 (단축키)를 시작한 직후에 어떻게 작동시킬 수 있습니까?

ActionBarAdvisormakeActions(...) 생성하고 register() 자신의 생성자에서 setAccelerator(SWT.CTRL | 'O'); 등의 작업을 수행 할 많은 것이 org.eclipse.jface.action.Action의의 무리에요. Action은이어서 ActionBarAdvisorfillMenuBar(...)fillCoolBar(...) 방법에 설치됩니다.

(우리가 Eclipse RCP 3.6을 사용하고 있기 때문에)이 가속기는 메뉴가 표시 될 때까지 활성화되지 않는 것입니다 (메뉴를 다시 닫지 않고 아무 조치도 취하지 않아도).

우리는 a relevant bug을보고 있지만 우리의 상황에 그 치료법을 적용하는 방법을 이해하는 데 약간의 어려움이 있습니다. 우리는 Action 대신 명령, 핸들러 및 키 바인딩을 "사용해야"한다는 것을 알고 있습니다. 그러나 우리는 아직 그 길을 걷지 않아도되기를 희망합니다.

응용 프로그램을 시작하자마자 액셀러레이터를 "라이브"로 만들려면 어떻게해야합니까? 우리는 얼마나 잘 맞는 아무 생각이

@Override 
public void postWindowCreate() { 
    getWindowConfigurer().getActionBarConfigurer().getMenuManager().updateAll(true); 
} 

:

답변

0

주위 사냥 및 the bug에서 조언을 적용하려고 조금 실험 후, 우리는 트릭을 할 것으로 보인다, 우리 WorkbenchWindowAdvisor에 다음을 추가 Workbench의 설계 기대치; 더 좋은 방법이있을 수 있습니다.

2

o.e.ui.bindings 확장 점을 사용하지 않으면 더 좋은 방법이 아닙니다. 당신은 당신이 대답에서했던 것처럼 당신 자신 만 강제로 menuManager를 업데이트해야합니다.

1

@Prakash가 언급했듯이 RCP 앱에서 해당 경로를 계속 유지하려면 가속기를 보려면 모든 기본 메뉴를 렌더링해야합니다.

완벽한 업그레이드를 즉시 수행하지 않고 명령을 올바르게 추적 할 수있는 부분 업그레이드 경로가 있습니다. 메뉴의 각 조치에 대해 ID가있는 명령을 정의하고 plugin.xml에서 원하는 바로 가기에 대한 바인딩을 정의하십시오. 그런 다음 ActionBarAdvisor에서 작업을 만들 때 액셀러레이터를 설정하지 마십시오. IAction.setActionDefinitionId (*)를 명령 ID로 설정하면 register (action)를 호출 할 수 있습니다.

그러면 더 이상 모든 기본 메뉴를 열심히 렌더링하기 위해 menuManager.updateAll (true)을 사용할 필요가 없습니다.

관련 문제