blob: 7f79f190c91c6651d7e00746066c03aa820b347c [file] [log] [blame]
package org.eclipse.nebula.widgets.nattable.core.layer.impl.viewport
import org.eclipse.nebula.widgets.nattable.core.geometry.PixelRectangle
import org.eclipse.nebula.widgets.nattable.core.layer.BigLayer
import org.eclipse.nebula.widgets.nattable.core.layer.Layer
import org.eclipse.nebula.widgets.nattable.core.layer.impl.AbstractLayer
import org.eclipse.nebula.widgets.nattable.core.layer.impl.NotSoBigLayer
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 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)
}
}