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

时间:2018-07-18 12:17:38

标签: java eclipse-plugin

我有一个具有多个TableViewer的编辑器,所以我不能只使用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 以及标签enabledWhenactiveWhen来定义类似的内容。问题是我无法访问查看器。

我认为最可能的情况是获得一个PropertyTester,但是它们也没有获得它们所附加的命令/处理程序的任何上下文(因为据推测它们可能会附加到完全不同的事物上)。

这就是为什么我对选择一无所知。

如何在周围的GUI上启用处理程序?

0 个答案:

没有答案