我想将自定义视图添加到“窗口”菜单中。此代码仅添加打开的视图
IMenuManager pencereler = new MenuManager("sample");
pencereler.add(ContributionItemFactory.VIEWS_SHORTLIST.create(window));
viewMenu.add(pencereler);
如果我打开自定义视图,则会将其添加到此菜单中。但是,我想在此菜单中始终显示我的自定义视图,而不仅仅是在打开它之后。
那么我可以从视图中创建“ContributionItem”,还是有其他方法可以在“plugin.xml”中添加一些行或将我的视图ID添加到任何扩展名中?
答案 0 :(得分:6)
假设您已正确包含 Window 菜单,这就是它的工作原理。
在 plugin.xml ,选项卡扩展程序中,添加扩展点org.eclipse.ui.commands
。
要org.eclipse.ui.commands
,请添加新的命令(右键单击扩展点&gt;新建&gt;命令)。为命令提供 id (例如,“ myplugin.openCustomView ”)和名称(例如,“打开自定义视图< / em>的“)。
对于新创建的命令“ myplugin.openCustomView ”,您必须创建一个处理程序,它将以编程方式打开视图。
在 plugin.xml ,选项卡扩展程序中,添加扩展点org.eclipse.ui.handlers
。
要org.eclipse.ui.handlers
添加处理程序(右键单击扩展点&gt;新&gt;处理程序)。对于处理程序的 commandId ,键入新创建的命令的名称( myplugin.openCustomView )或浏览它。在类字段中,键入要创建的处理程序类的名称(例如,“ OpenCustomViewHandler ”),然后单击超链接的字段名称 class 。这将打开New Class Wizard。
让新课程(名称已填写)延长org.eclipse.core.commands.AbstractHandler
。
将开放视图逻辑添加到新创建的类的execute()
方法中,以便该类看起来大致如下(使用您的视图ID而不是 myplugin.mycustomviewID 疗程)。
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.handlers.HandlerUtil;
public class OpenViewHandler extends AbstractHandler {
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
try {
HandlerUtil.getActiveWorkbenchWindowChecked(event).
getActivePage().showView("myplugin.mycustomviewID");
} catch (PartInitException e) {
e.printStackTrace();
}
return null;
}
}
在 plugin.xml ,选项卡扩展程序中,添加扩展点org.eclipse.ui.menus
。
要org.eclipse.ui.menus
,请添加新的 menuContribution (右键单击扩展点&gt;新建&gt; menuContribution )。
为 menuContribution 提供以下 locationURI :菜单:窗口?之后=添加(这会将贡献放在< em> Window 菜单,如果你已正确包含它。)
到新创建的 menuContribution ,添加命令(右键单击menuContribution&gt; New&gt;命令) 。浏览 commandId ,或手动输入( myplugin.openCustomView )。为 menuContribution 提供 id (例如,“ myplugin.menu.openCustomView ”),并将样式设置为“ 推”