如何在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),但是没有去。
答案 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()
获取选择提供商。
ISelectionProvider
有setSelection
方法,但它通常不执行任何操作或抛出异常,因此您可能无法清除选择。