Thursday, July 18, 2013

Eclipse NatTable: How do you render Checkbox, Image and Text in a single cell

Say, below is your requirement. I am showing only part of the complete dialog below.

I am talking here about first column,rending check box and windows 8 image and followed by display text.

Do the following:
Use a TextPainter, decorate it (CellPainterDecorator) with an ImagePainter, use the resulting painter as base painter of another decorator and decorate it with a CheckboxPainter

//Text painter to diplay text
TextPainter textPainter = new TextPainter() {
//Any specific implementation

//My image painter
 class MyImagePainter extends ImagePainter {

private MyData data = null
public MyImagePainter(MyData data) { = data; //this would be useful, what image has to displayed on call.

protected Image getImage(ILayerCell cell, IConfigRegistry configRegistry) {
//return specific image on data object and it's properties.
return null;

//Cell painter decorator for image and text
CellPainterDecorator cellPainterDecorator = new CellPainterDecorator(
textPainter, //text painter
CellEdgeEnum.LEFT, //Image should left side of Text
new MyImagePainter(bodyDataProvider)); //Image Painter
//Wrapper for cellPainterDecorator  and checkbox
new CellPainterWrapper(new BackgroundPainter(
new CellPainterDecorator(
cellPainterDecorator, //decorator to render image and text
CellEdgeEnum.LEFT, // check box has to be displayed left hand side of the cell.
myCheckBoxPainter)), // check box painter

registerEditing(configRegistry, TreeLayer.TREE_COLUMN_CELL);

No comments:

Post a Comment