이클립스 플러그인 응용 프로그램을 시작할 때 메뉴 항목을 완전히 제거하고 싶습니다. 내가하고 싶은 일은 나중에 사용자의 행동을 기반으로 비즈니스 로직에 따라 메뉴 항목을 추가 할 수 있습니다. 이것을 할 수있는 방법이 있습니까? 기고금을 사용하여 보았지만 정확하게 원하는대로되지는 않을 것 같습니다.프로그래밍 방식으로 메뉴 항목 변경 이클립스 플러그인
내가 수행해야하는 작업을 수행하는 경우 어떻게 사용합니까? 도움을 주셔서 미리 감사드립니다.
이클립스 플러그인 응용 프로그램을 시작할 때 메뉴 항목을 완전히 제거하고 싶습니다. 내가하고 싶은 일은 나중에 사용자의 행동을 기반으로 비즈니스 로직에 따라 메뉴 항목을 추가 할 수 있습니다. 이것을 할 수있는 방법이 있습니까? 기고금을 사용하여 보았지만 정확하게 원하는대로되지는 않을 것 같습니다.프로그래밍 방식으로 메뉴 항목 변경 이클립스 플러그인
내가 수행해야하는 작업을 수행하는 경우 어떻게 사용합니까? 도움을 주셔서 미리 감사드립니다.
MenuManager에서 메뉴를 가져온 다음 기여도를 수정할 수 있습니다. 이 스 니펫은 메뉴 관리자에 액세스하고 명명 된 항목을 제거하는 방법을 보여줍니다.
삭제 된 항목 및 항목 색인을 복원하려면이를 추적해야합니다. 유일한 문제는 indexOf 메서드가 표시되지 않는다는 것입니다. 이 스 니펫을 MenuManager와 같은 패키지에있는 유형에 추가하고 조각에 추가하는 것도 한 가지 방법입니다.
IWorkbenchWindow window = Workbench.getInstance().getActiveWorkbenchWindow()
if(window instanceof WorkbenchWindow) {
MenuManager menuManager = ((WorkbenchWindow)window).getMenuManager();
//TODO you may need to remove items from the coolbar as well
ICoolBarManager coolBarManager = null;
if(((WorkbenchWindow) window).getCoolBarVisible()) {
coolBarManager = ((WorkbenchWindow)window).getCoolBarManager2();
}
Menu menu = menuManager.getMenu();
//you'll need to find the id for the item
String itemId = "menuId";
IContributionItem item = menuManager.find(itemId);
// remember position, TODO this is protected
int controlIdx = menu.indexOf(mySaveAction.getId());
if (item != null) {
// clean old one
menuManager.remove(item);
// refresh menu gui
menuManager.update();
}
}
RCP 응용 프로그램에서 메뉴 또는 툴바 항목의 가시성을 제어하는 여러 가지 방법이 있습니다.
해당 항목에 기여하는 플러그인을 제어 할 수 있다면 가장 쉬운 방법은 보통 menus
확장 점과 연결된 visibleWhen
표현식을 사용하는 것입니다. 검사 할 내부 상태가있는 경우 propertyTester
과 함께 표현식의 test
요소를 사용할 수 있습니다.
다른 방법으로 활동을 사용하는 것입니다. 이것들은 응용 프로그램의 다른 많은 것들을 제어 할 수 있습니다. 내장 대화 상자의 일부를 다시 구현해야한다고 생각했습니다. 자세한 내용은이 블로그 항목 "Using activities for user management"을 참조하십시오.
IDE 기반 응용 프로그램에서도 가능합니까? 예를 들어,'Project '와 같은 Eclipse의 메뉴 중 일부를 제거합니다. – nbz