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.Adapters
class适配对象:
IFile file = Adapters.adapt(object, IFile.class);
我对 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.Adapters
class适配对象:
IFile file = Adapters.adapt(object, IFile.class);