e4 selectionservice - 列表或单个对象和适配器

e4 selectionservice - list or single object and adapters

我对 e4 selectionservice

上的 "best practice" 有疑问

1) 处理单个和多个 selection

例如,在表格查看器上,我可以 select 单个或多个元素。取决于此,我的活动 selection 是一个对象或对象的集合。

在我的听众中处理该问题的最佳做法是什么?

.....selectionService.setSelection(structuredSelection.getFirstElement())

.....selectionService.setSelection(structuredSelection.asList())

public void xy (@Optional @Named(IServiceConstants.ACTIVE_SELECTION) List selection){} --> 如果单个元素 selected

,selection 为 null

public void xyz (@Optional @Named(IServiceConstants.ACTIVE_SELECTION) MyObject selection){} --> selection is null if multiple elements are selected

我是否需要实现这两种方法来处理这两种情况?为什么单个元素不打包在列表中,反之亦然?

2) 如何处理可以适应目标对象的活性select离子? 我是否需要有 ISelection 参数并手动检查适应性,或者框架是否有任何方法可以适应和注入(如果可能)?

非常感谢

正常选择是实际的IStructuredSelection对象,不是它的内容:

selectionService.setSelection(structuredSelection);


public void xx(@Named(IServiceConstants.ACTIVE_SELECTION) IStructuredSelection selection)

所以你只有一种方法,它接收所有类型的选择。

对于自适应对象,没有任何东西可以自动执行此操作。使用org.eclipse.core.runtime.Adaptersclass适配对象:

IFile file = Adapters.adapt(object, IFile.class);