代码之家  ›  专栏  ›  技术社区  ›  Stefan S.

处理程序启用的访问上下文

  •  1
  • Stefan S.  · 技术社区  · 6 年前

    我有一个编辑 TableViewer s、 所以我不能用 ISelectionService

    为了解决这个问题,我的编辑使用 ToolItem#setData 创建表后:

        final IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
        final IMenuService menuService = (IMenuService) window.getService(IMenuService.class);
        final ToolBarManager manager = new ToolBarManager(new ToolBar(parent, SWT.NONE));
        menuService.populateContributionManager(manager, TOOLBAR_URI);
        manager.update(true);
    
        for (final ToolItem item : manager.getControl().getItems()) {
            item.setData(TABLE_VIEWER, myTableViewer);
        }
    

    这样处理程序就可以这样访问数据:

    public Object execute(ExecutionEvent event) throws ExecutionException {
        final Widget toolItem = ((Event) event.getTrigger()).widget;
        final TableViewer myTableViewer = (TableViewer) toolItem.getData(TABLE_VIEWER);
        // do magic...
        return null;
    }
    

    这一切都很好,但是现在当我想根据选择启用/禁用处理程序时,问题就出现了,例如,当没有选择任何内容时禁用它。

    plugin.xml文件 还有标签 enabledWhen activeWhen . 问题是我无法访问查看器。

    我想最有可能的情况是 PropertyTester ,但它们也无法获得所附加的命令/处理程序的任何上下文(因为它们可能附加到完全不同的内容)。

    这就是为什么我没有选择。

    如何在周围的GUI上实现处理程序?

    0 回复  |  直到 6 年前