我有一个关于"最佳实践"的问题在e4选择服务上
1)处理单个和多个选择
例如,在tableviewer上我可以选择一个或多个元素。根据这一点,我的主动选择是对象或对象集合。
在我的听众中处理这个问题的最佳做法是什么?
... selectionService.setSelection(structuredSelection.getFirstElement())
OR
... selectionService.setSelection(structuredSelection.asList())
public void xy(@Optional @Named(IServiceConstants.ACTIVE_SELECTION) 列表选择){} - >如果选择了单个元素,则selection为null
OR
public void xyz(@Optional @Named(IServiceConstants.ACTIVE_SELECTION)MyObject selection){} - >如果选择了多个元素,则selection为null
我是否需要实现这两种方法来处理这两种情况?为什么单个元素没有打包在列表中,反之亦然?
2) 如何处理可以适应目标对象的活动选择? 我是否需要有ISelection参数并手动检查调整,或者如果可能,框架是否可以适应和注入?
提前多多感谢
答案 0 :(得分:-1)
正常选择是实际的IStructuredSelection
对象,不其内容:
selectionService.setSelection(structuredSelection);
public void xx(@Named(IServiceConstants.ACTIVE_SELECTION) IStructuredSelection selection)
所以你只有一个方法,它接收所有类型的选择。
对于自适应对象,没有任何东西会自动执行此操作。使用org.eclipse.core.runtime.Adapters
类来调整对象:
IFile file = Adapters.adapt(object, IFile.class);