blob: 13e9e51c8522cd8d23fc73e8926c35a42677922d [file] [log] [blame]
package org.eclipse.nebula.widgets.nattable.core.layer.impl.viewport
import java.math.BigInteger
import org.eclipse.nebula.widgets.nattable.core.geometry.PositionRectangle
import org.eclipse.nebula.widgets.nattable.core.layer.cell.Cell
import static extension org.eclipse.nebula.widgets.nattable.core.math.BigIntegerExtensions.*
class ViewportCell implements Cell {
val ViewportLayer viewportLayer
val int columnPosition
val int rowPosition
new(ViewportLayer viewportLayer, int columnPosition, int rowPosition) {
this.viewportLayer = viewportLayer
this.columnPosition = columnPosition
this.rowPosition = rowPosition
}
override getLayer() { viewportLayer }
override getPositionBounds() {
val underlyingPositionBounds = underlyingCell.positionBounds
new PositionRectangle(
(underlyingPositionBounds.columnPosition - viewportLayer.horizontalAxis.originSegmentPosition).intValueExact,
(underlyingPositionBounds.rowPosition - viewportLayer.verticalAxis.originSegmentPosition).intValueExact,
underlyingPositionBounds.width.intValueExact,
underlyingPositionBounds.height.intValueExact
)
}
override getDataValue() {
underlyingCell.dataValue
}
override setDataValue(Object newValue) {
underlyingCell.dataValue = newValue
}
def getUnderlyingCell() {
viewportLayer.underlyingLayer.getCell(
viewportLayer.horizontalAxis.originSegmentPosition + BigInteger::valueOf(columnPosition),
viewportLayer.verticalAxis.originSegmentPosition + BigInteger::valueOf(rowPosition)
)
}
}