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.Layer
import org.eclipse.nebula.widgets.nattable.core.layer.impl.AbstractLayer

class ViewportLayer extends AbstractLayer {

	Layer underlyingLayer
	ViewportAxis horizontalAxis
	ViewportAxis verticalAxis
	
	new() {}
	
	new(Layer underlyingLayer) {
		setUnderlyingLayer(underlyingLayer)
	}
	
	def void setUnderlyingLayer(Layer 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 Layer getUnderlyingLayer() { underlyingLayer }
	
	// Layer interface
	
	override ViewportAxis getHorizontalAxis() { horizontalAxis }
	override ViewportAxis getVerticalAxis() { verticalAxis }
	
	override getCell(long columnPosition, long rowPosition) {
		new ViewportCell(this, columnPosition, rowPosition)
	}
	
}