| package org.eclipse.nebula.widgets.nattable.core.layer.impl |
| |
| import com.google.inject.Inject |
| import java.util.List |
| import org.eclipse.nebula.widgets.nattable.core.data.ObjectPropertyAccessor |
| import org.eclipse.nebula.widgets.nattable.core.layer.Layer |
| import org.eclipse.nebula.widgets.nattable.core.layer.axis.Axis |
| import org.eclipse.nebula.widgets.nattable.core.layer.axis.impl.SimpleAxis |
| import org.eclipse.nebula.widgets.nattable.core.layer.cell.impl.ReadOnlyCell |
| |
| /** |
| * A layer whose row data comes from a list. |
| */ |
| class ListRowDataLayer implements Layer { |
| |
| val List<?> list |
| |
| val Axis horizontalAxis |
| val Axis verticalAxis |
| |
| @Inject extension ObjectPropertyAccessor |
| |
| new(List<?> list, Axis horizontalAxis) { |
| this.list = list |
| this.horizontalAxis = horizontalAxis |
| this.verticalAxis = new SimpleAxis(list.size, 20) |
| } |
| |
| // Layer interface |
| |
| override getHorizontalAxis() { horizontalAxis } |
| override getVerticalAxis() { verticalAxis } |
| |
| override getCell(int columnPosition, int rowPosition) { |
| val rowObject = list.get(rowPosition) |
| val propertyId = horizontalAxis.getIdOfSegmentPosition(columnPosition) |
| val value = rowObject.getPropertyValue(propertyId) |
| |
| new ReadOnlyCell(this, columnPosition, rowPosition, value) |
| } |
| |
| } |