我有一个编辑
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上实现处理程序?