做Eclipse RCP Product的时候,经常会遇到有一些Menu或CoolItem需要进行隐藏,这些一般都是由于其他插件通过扩展点的方式导致的。
隐藏做法:在ApplicationWorkbenchWindowAdvisor的postWindowOpen方法中对Menu和CoolBar进行处理
Sample code
IActionBarConfigurer configurer = getWindowConfigurer().getActionBarConfigurer();
IContributionItem[] menuItems = configurer.getMenuManager().getItems();
IContributionItem[] coolItems = configurer.getCoolBarManager().getItems();
XXXX //过滤动作
configurer.getMenuManager().update(true);
configurer.getCoolBarManager().update(true);
PreferenceManager pm = getWindowConfigurer().getWindow().getWorkbench()
.getPreferenceManager();
IPreferenceNode[] prefNodes = pm.getRootSubNodes();
for ( IPreferenceNode node : prefNodes ) {
if (XXX) {
pm.remove(node);
}
}