我的 RCP 应用程序的菜单栏中突然出现了“运行”和“搜索”。无论如何要删除它们吗?
2 回答
首先,检查这个线程(以及这个线程中使用的文章“ Contributing Actions to the Eclipse Workbench ” ):
诀窍是“
check the launcher config
”——即使在全新安装 Eclipse 3.1.1 之后,除了我自己的插件之外,我的 WS 中没有其他任何东西,烦人的额外菜单和烦人的错误“编辑最后位置”仍然存在。然后我按照您的建议进入启动器配置,其中有很多杂物(由 Eclipse 自动创建) -所以我取消选择所有,选择我的插件,然后单击“
Add Required
”;从 WS 运行——太好了!
另请参阅错误 115998
删除“平台”功能可以解决所有问题 - 一个非常简单但很难找到的修复程序!
也就是说,一般来说,要隐藏一些你可以尝试的动作贡献,比如在这个线程中:
1/ 隐藏由 ActionSet 扩展点定义的菜单/酷栏。
IWorkbenchPage.hideActionSet(actionSetId)
IWorkbenchPage.hideActionSet("org.eclipse.search.menu");
2/ 隐藏菜单:
MenuManager mbManager = ((ApplicationWindow)page.getWorkbenchWindow()).getMenuBarManager();
for (int i=0; i<mbManager.getItems().length; i++){
IContributionItem item=mbManager.getItems()[i];
if (item.getId().equals("org.eclipse.search.menu")){
item.setVisible(false);
}
}
或者你可以试试这个线程,通过一个隐藏它的任何视角PerspectiveListener
:
我通过浏览依赖的 Eclipse 插件获得的操作 ID .. 搜索
ActionSets
package ch.post.pf.gui.prototyp.sesam.pstonline;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.IPerspectiveDescriptor;
import org.eclipse.ui.IPerspectiveListener;
import org.eclipse.ui.IStartup;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PlatformUI;
public class ActionWiper implements IStartup, IPerspectiveListener {
private static final String[] ACTIONS_2_WIPE = new String[] {
"org.eclipse.search.searchActionSet",
"org.eclipse.ui.edit.text.actionSet.presentation",
"org.eclipse.ui.edit.text.actionSet.openExternalFile",
"org.eclipse.ui.edit.text.actionSet.annotationNavigation",
"org.eclipse.ui.edit.text.actionSet.navigation",
"org.eclipse.ui.edit.text.actionSet.convertLineDelimitersTo",
"org.eclipse.update.ui.softwareUpdates" };
public void earlyStartup() {
IWorkbenchWindow[] windows = PlatformUI.getWorkbench()
.getWorkbenchWindows();
for (int i = 0; i < windows.length; i++) {
IWorkbenchPage page = windows[i].getActivePage();
if (page != null) {
wipeActions(page);
}
windows[i].addPerspectiveListener(this);
}
}
private void wipeActions(IWorkbenchPage page) {
for (int i = 0; i < ACTIONS_2_WIPE.length; i++) {
wipeAction(page, ACTIONS_2_WIPE[i]);
}
}
private void wipeAction(final IWorkbenchPage page, final String actionsetId) {
Display.getDefault().syncExec(new Runnable() {
public void run() {
page.hideActionSet(actionsetId);
}
});
}
public void perspectiveActivated(IWorkbenchPage page,
IPerspectiveDescriptor perspective) {
wipeActions(page);
}
public void perspectiveChanged(IWorkbenchPage page,
IPerspectiveDescriptor perspective, String changeId) {
}
}
并删除首选项:
有了
PreferenceManager
我什至摆脱了不需要的首选项..:)
字符串PREFERENCES_2_WIPE
必须是您想要摆脱的主要类别的 ID。就像“org.eclipse.ui.preferencePages.Workbench”一样 -> 显示为 General
PreferenceManager pm = PlatformUI.getWorkbench().getPreferenceManager();
for (int i = 0; i < PREFERENCES_2_WIPE.length; i++) {
pm.remove(PREFERENCES_2_WIPE[i]);
}
对我来说,这很有效(希望对您有所帮助):
<extension
point="org.eclipse.ui.activities">
<activity
id="someid.remove"
name="RemoveSearchMenu">
<enabledWhen>
<with
variable="activePartId">
<equals
value="someidr.RemoveSearchMenu1">
</equals>
</with></enabledWhen>
</activity>
<activityPatternBinding
activityId="someid.remove"
pattern="org.eclipse.search.*">
</activityPatternBinding>