| package org.eclipse.nebula.widgets.nattable.core.layer.impl.viewport |
| |
| import org.eclipse.nebula.widgets.nattable.core.geometry.PixelArea |
| 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 horizontalViewportAxis |
| ViewportAxis verticalViewportAxis |
| |
| new() {} |
| |
| new(Layer underlyingLayer) { |
| setUnderlyingLayer(underlyingLayer) |
| } |
| |
| def void setUnderlyingLayer(Layer underlyingLayer) { |
| this.underlyingLayer = underlyingLayer |
| } |
| |
| def void setPixelArea(PixelArea pixelArea) { |
| this.horizontalViewportAxis = new ViewportAxis(underlyingLayer.horizontalAxis, pixelArea.horizontalPixelRange) |
| this.verticalViewportAxis = new ViewportAxis(underlyingLayer.verticalAxis, pixelArea.verticalPixelRange) |
| } |
| |
| // Layer interface |
| |
| override getHorizontalAxis() { |
| if (horizontalViewportAxis != null) horizontalViewportAxis |
| else underlyingLayer.horizontalAxis |
| } |
| |
| override getVerticalAxis() { |
| if (verticalViewportAxis != null) verticalViewportAxis |
| else underlyingLayer.verticalAxis |
| } |
| |
| override getCell(int columnPosition, int rowPosition) { |
| underlyingLayer.getCell( |
| horizontalViewportAxis.originSegmentPosition + columnPosition, |
| verticalViewportAxis.originSegmentPosition + rowPosition |
| ) |
| } |
| |
| } |