NatTable 单元格中的图标

Icons in NatTable cells

我正在用 NatTable 替换 JFace TableViewer。在我使用 TableViewer 的实现中,我在单元格中有图像,并且我有 ILabelProvider 的实现,它知道如何在运行时为对象的具体状态获取图像。所以我从 ColumnLabelProvider 调用 ILabelProvider.getImage(element)

在 NatTable 中,我知道通过针对 configLabel 的注册字符串 configAttribute 添加图像的方法。对于 configAttribute,我应该明确说明要使用的图像。当然,我可以为每个状态创建标签,为每个标签注册图像,然后使用 ConfigLabelAccumulator 将它们连接在一起。但是图片量很大,而且我也不想重复这个逻辑。那么对于这种情况有没有更合适的方式呢?仅委派给现有 ILabelProvider?

如果您有相当多的动态来检索 Image 标签解决方案是不够的(例如,当考虑每行对象具有不同图像的商店系统时)。在这种情况下,您通常会实施自定义 ImagePainter 并实施确定要在 getImage() 方法中使用的 Image 的代码。

以下代码段可用作起点,您只需实施自定义逻辑即可确定要使用的 Image。这样你只需要注册一个ImagePainter。在 NatTable 中,这也适用于一些静态图像,例如 TreeImagePainter.

public class ContentDependentImagePainter<T> extends ImagePainter {

    IRowDataProvider<T> dataProvider;

    public ContentDependentImagePainter(IRowDataProvider<T> dataProvider) {
        this.dataProvider = dataProvider;
    }

    @Override
    protected Image getImage(ILayerCell cell, IConfigRegistry configRegistry) {
        // get the row object
        T rowObject = dataProvider.getRowObject(cell.getRowIndex());
        Image result = null;

        // perform your custom logic to determine the Image

        return result;
    }
}