안그래보이지만 개발자/환경

[Eclipse RCP] 기본 메뉴 (툴바/액션 셋) 제거하기

자네트 2020. 9. 19. 09:35
반응형

 

 

구글링해서 스택 오버플로우에서 찾은 해결법이 나한텐 안 먹혀서 쓰는 포스팅.

 

* 참고로 안 됐던 코드는 여기에 있음

 

Remove default menu in Eclipse RCP application

I develop an Eclipse RCP application and I don't want to use the default menu and toolbar of my Eclipse. Here is my plugin.xml file

stackoverflow.com

혹시 누군가는 될지도 모를 일이니... 근데 난 안됐음 주의

 

 

 

⬇내가 성공한 코드

//ApplicationWorkbenchWindowAdvisor.java 안의 preWindowOpen() 메소드 내부에 아래 코드를 작성한다.

ActionSetRegistry reg = WorkbenchPlugin.getDefault().getActionSetRegistry();
IActionSetDescriptor[] actionSets = reg.getActionSets();

for (int i = 0 ; i < cationSets.length ; i++ ){
	
    if(actionSets[i].getId().startsWith("org.eclipse.")){
    	IExtension ext = actionSets[i].getConfigurationElement().getDeclaringExtension();
        reg.removeExtension(ext, new Object[]{actionSets[i]});
    }
}

 

그런데 이렇게 하면 "org.eclipse."로 시작하는 모든 커맨드가 제거되므로,

exit 등 몇가지 가져다 쓰고 싶은 명령어가 있다면, 아래처럼 처리한다.

동일한 코드 반복문 안에 특정 명령어 제외 조건을 넣었다.

 

//ApplicationWorkbenchWindowAdvisor.java 안의 preWindowOpen() 메소드 내부에 아래 코드를 작성한다.

ActionSetRegistry reg = WorkbenchPlugin.getDefault().getActionSetRegistry();
IActionSetDescriptor[] actionSets = reg.getActionSets();

Hashtable <String, String> exceptId = new Hashtable();
exceptId.put("org.eclipse.file.exit", "org.eclipse.file.exit");
//이외에도 여러 명령어를 같은 식으로 put 한다.

for (int i = 0 ; i < cationSets.length ; i++ ){
	
    if(exceptId.containsKey(actionSets[i].getId()))
    continue;
    
    if(actionSets[i].getId().startsWith("org.eclipse.")){
    	IExtension ext = actionSets[i].getConfigurationElement().getDeclaringExtension();
        reg.removeExtension(ext, new Object[]{actionSets[i]});
    }
}

 

적용하고 실행시키면 짜잔.

거슬리던 기본 툴바 메뉴들이 사라져 있을 것이다.

스샷은 없음.

 

 


 

반응형