| 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) |
| ) |
| } |
| |
| } |