如何清除选择服务Eclipse RCP中的选择?

时间:2014-12-02 13:17:42

标签: eclipse eclipse-rcp

如何在Eclipse RCP应用程序中清除选择?

基本上我想在转义键上清除它:

Display display = PlatformUI.createDisplay();
display.addFilter(SWT.KeyDown, new Listener() {
    @Override
    public void handleEvent(Event event) {
        if (event.character == SWT.ESC) {
            // if this is escape key, clear selection in the application
        }
    }
});

我以为我可以做类似于PlatformUI.getWorkbench()。getActiveWorkbenchWindow()。getSelectionService()。clearSelection()/ setSelection(IStructuredSelection.EMPTY),但是没有去。

2 个答案:

答案 0 :(得分:1)

您需要查找ISelectionProvider而不是ISelectionService。这将为您提供setSelection()方法。

您可以从网站获取选择提供者:

        PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActivePart().getSite().getSelectionProvider();

PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor().getSite().getSelectionProvider();

请注意,其中一些返回值可能为null,因此请添加相应的检查。

答案 1 :(得分:0)

您无法直接清除选择服务提供的选择。

服务返回的选择由当前部分的“选择提供者”(ISelectionProvider)提供。

您可以从IWorkbenchPart IWorkbenchPart.getSite().getSelectionProvider()获取选择提供商。

ISelectionProvidersetSelection方法,但它通常不执行任何操作或抛出异常,因此您可能无法清除选择。