cgr*_*gcn 2 eclipse-plugin menu view eclipse-rcp
我想将自定义视图添加到"窗口"菜单中.此代码仅添加打开的视图
IMenuManager pencereler = new MenuManager("sample");
pencereler.add(ContributionItemFactory.VIEWS_SHORTLIST.create(window));
viewMenu.add(pencereler);
Run Code Online (Sandbox Code Playgroud)
如果我打开自定义视图,则会将其添加到此菜单中.但是,我想在此菜单中始终显示我的自定义视图,而不仅仅是在打开它之后.
那么我可以从视图中创建"ContributionItem"还是有任何其他方式,例如向"plugin.xml"添加一些行或将我的视图的id添加到任何扩展名?
假设您已正确包含Window菜单,这就是它的工作原理.
在plugin.xml中,选项卡Extensions,添加扩展点org.eclipse.ui.commands.
要org.eclipse.ui.commands添加新命令(右键单击扩展点>新建>命令).给命令一个id(例如," myplugin.openCustomView ")和一个名称(例如," Open Custom View ").
对于新创建的命令" myplugin.openCustomView ",您将必须创建一个处理程序,它将以编程方式打开视图.
在plugin.xml中,选项卡Extensions,添加扩展点org.eclipse.ui.handlers.
要org.eclipse.ui.handlers添加处理程序(右键单击扩展点> New>处理程序).对于处理程序的commandId,键入新创建的命令的名称(myplugin.openCustomView)或浏览它.在字段类中,键入要创建的处理程序类的名称(例如," OpenCustomViewHandler "),然后单击超链接的字段名称类.这将打开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;
}
}
Run Code Online (Sandbox Code Playgroud)在plugin.xml中,选项卡Extensions,添加扩展点org.eclipse.ui.menus.
要org.eclipse.ui.menus添加新的menuContribution(右键单击扩展点> New> menuContribution).
给menuContribution提供以下locationURI:menu:window?after = additions(这将把贡献放在Window菜单中,如果你已正确包含它).
在新创建的menuContribution中,添加一个命令(右键单击menuContribution> New>命令).浏览commandId,或手动输入(myplugin.openCustomView).给menuContribution一个id(例如," myplugin.menu.openCustomView "),并将样式设置为" push ".