blob: c968f857ab944a1a08f551c58c3cdc31ed507aec [file] [log] [blame]
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)
}
}