blob: d0311fe15f5bbd1c0f3925eb99cab48ac0bb8fcd [file] [log] [blame]
package org.eclipse.nebula.widgets.nattable.core.layer.impl.viewport
import org.eclipse.nebula.widgets.nattable.core.big.layer.BigLayer
import org.eclipse.nebula.widgets.nattable.core.big.layer.impl.NotSoBigLayer
import org.eclipse.nebula.widgets.nattable.core.geometry.PixelRectangle
import org.eclipse.nebula.widgets.nattable.core.layer.Layer
import org.eclipse.nebula.widgets.nattable.core.layer.impl.AbstractLayer
class ViewportLayer extends AbstractLayer {
BigLayer underlyingLayer
ViewportAxis horizontalAxis
ViewportAxis verticalAxis
new() {}
new(Layer underlyingLayer) {
this(new NotSoBigLayer(underlyingLayer))
}
new(BigLayer underlyingLayer) {
setUnderlyingLayer(underlyingLayer)
}
def void setUnderlyingLayer(Layer underlyingLayer) {
setUnderlyingLayer(new NotSoBigLayer(underlyingLayer))
}
def void setUnderlyingLayer(BigLayer underlyingLayer) {
this.underlyingLayer = underlyingLayer
this.underlyingLayer.addEventListener(this)
horizontalAxis = new ViewportAxis(underlyingLayer.horizontalAxis, [| fireEvent(new ScrollEvent) ])
verticalAxis = new ViewportAxis(underlyingLayer.verticalAxis, [| fireEvent(new ScrollEvent) ])
}
def setHorizontalAxis(ViewportAxis horizontalAxis) { this.horizontalAxis = horizontalAxis }
def setVerticalAxis(ViewportAxis verticalAxis) { this.verticalAxis = verticalAxis }
def void setVisiblePixelRectangle(PixelRectangle visiblePixelRectangle) {
horizontalAxis.visiblePixelSize = visiblePixelRectangle.width
verticalAxis.visiblePixelSize = visiblePixelRectangle.height
}
def BigLayer getUnderlyingLayer() { underlyingLayer }
// Layer interface
override ViewportAxis getHorizontalAxis() { horizontalAxis }
override ViewportAxis getVerticalAxis() { verticalAxis }
override getCell(int columnPosition, int rowPosition) {
new ViewportCell(this, columnPosition, rowPosition)
}
}