2016-05-03 8 views
0

JFace TableViewerをNatTableに置き換えようとしています。 TableViewerを使った私の実装では、私はセル内に画像を持ち、実行時にオブジェクトの具体的な状態を取得する方法を知っているILabelProviderの実装を持っています。だからILabelProvider.getImage(element)からColumnLabelProviderに電話します。NatTableセルのアイコン

NatTableでは、configLabelに対してconfigAttributeを登録することでイメージを追加する方法を知っています。また、configAttributeについては、どのイメージを使用するかを明示的に指示する必要があります。確かに私はすべての状態のラベルを作成し、各ラベルの画像を登録し、ConfigLabelAccumulatorを使用してそれをすべてtogeatherにすることができます。しかし、イメージの量は非常に巨大であり、さらに私はこの論理を複製したくありません。そのような場合にはより適切な方法がありますか?既存のILabelProviderに委任するだけですか?

+0

https://www.eclipse.org/forums/index.php/t/491100/を参照してください。 –

答えて

2

Imageを取得するダイナミックなものがある場合は、ラベルソリューションが不十分です(たとえば、1行のオブジェクトごとに異なる画像を持つショップシステムについて考えるとき)。そのような場合は、通常ImagePainterというカスタムを実装し、をgetImage()メソッドで使用するコードを実装します。

次のスニペットは、カスタム論理を実装して使用する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; 
    } 
} 
関連する問題