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