2

我想将我的自定义视图添加到“窗口”菜单。此代码仅添加打开的视图

    IMenuManager pencereler = new MenuManager("sample");
    pencereler.add(ContributionItemFactory.VIEWS_SHORTLIST.create(window));
    viewMenu.add(pencereler);

如果我打开我的自定义视图,它会添加到此菜单中。但是,我想始终在此菜单中显示我的自定义视图,而不仅仅是在打开它之后。

那么我可以从视图中创建“ContributionItem”,还是有任何其他方式,比如将一些行添加到“plugin.xml”或将我的视图的 id 添加到任何扩展?

4

1 回答 1

6

假设您正确地包含了Window菜单,这就是它的工作方式。

添加命令

  1. plugin.xml的选项卡Extensions中,添加扩展点org.eclipse.ui.commands

  2. org.eclipse.ui.commands,添加一个新命令右键单击扩展点 > 新建 > 命令)。给命令一个id(例如,“ myplugin.openCustomView ”)和一个名称(例如,“ Open Custom View ”)。

为命令添加处理程序

对于新创建的命令“ myplugin.openCustomView ”,您必须创建一个处理程序,它将以编程方式打开视图。

  1. plugin.xml的选项卡Extensions中,添加扩展点org.eclipse.ui.handlers

  2. org.eclipse.ui.handlers添加一个处理程序右键单击扩展点 > 新建 > 处理程序)。对于处理程序的commandId,键入新创建的命令的名称 ( myplugin.openCustomView ) 或浏览它。在字段中,输入要创建的处理程序类的名称(例如,“ OpenCustomViewHandler ”),然后单击超链接的字段名称。这将打开新建类向导。

  3. 让新类(名称已填写)扩展org.eclipse.core.commands.AbstractHandler

  4. 将打开视图逻辑添加到新创建的类的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;
      }
    }
    

将命令添加到菜单

  1. plugin.xml的选项卡Extensions中,添加扩展点org.eclipse.ui.menus

  2. org.eclipse.ui.menus添加一个新的menuContribution(右键单击扩展点 > New > menuContribution)。

  3. menuContribution提供以下locationURImenu:window?after=additions (如果您正确包含它,这会将贡献放置在Window菜单中)。

  4. 在新创建的menuContribution中,添加一个命令右键单击 menuContribution > New > command)。浏览commandId,或手动输入(myplugin.openCustomView)。给menuContribution一个id(例如,“ myplugin.menu.openCustomView ”),并将样式设置为“ push ”。

于 2013-02-27T13:09:28.757 回答