blob: 61d541ef0408dde8a2e96247e07d7493b0d10ef4 [file] [log] [blame]
package org.eclipse.nebula.widgets.nattable.core.layer.composite
import org.eclipse.nebula.widgets.nattable.core.axis.Axis
import static extension org.eclipse.nebula.widgets.nattable.core.axis.AxisInvariants.*
class CompositeAxis implements Axis {
val CompositeLayersAccessor layersAccessor
val extension AxisAccessor axisAccessor
new(CompositeLayersAccessor layersAccessor, AxisAccessor axisAccessor) {
this.layersAccessor = layersAccessor
this.axisAccessor = axisAccessor
}
private def getLayers() {
layersAccessor.layers
}
override getSegmentCount() {
layers.size
}
override getStartPixelOfSegmentPosition(int segmentPosition) {
var segmentOffset = 0
var pixelOffset = 0
for (layer : layers) {
val axis = layer.axis
if (segmentPosition < axis.segmentCount)
return pixelOffset + axis.getStartPixelOfSegmentPosition(segmentPosition - segmentOffset)
segmentOffset = segmentOffset + axis.segmentCount
pixelOffset = pixelOffset + axis.pixelSize
}
pixelOffset
}
override getSegmentPositionByPixelLocation(int pixelLocation) {
var segmentOffset = 0
var pixelOffset = 0
for (layer : layers) {
val axis = layer.axis
if (pixelLocation < axis.pixelSize)
return segmentOffset + axis.getSegmentPositionByPixelLocation(pixelLocation - pixelOffset)
segmentOffset = segmentOffset + axis.segmentCount
pixelOffset = pixelOffset + axis.pixelSize
}
segmentOffset
}
override getIdOfSegmentPosition(int segmentPosition) {
var segmentOffset = 0
for (layer : layers) {
val axis = layer.axis
if (segmentPosition < axis.segmentCount)
return axis.getIdOfSegmentPosition(segmentPosition - segmentOffset)
segmentOffset = segmentOffset + axis.segmentCount
}
null
}
override getSegment(int segmentPosition) {
var segmentOffset = 0
for (layer : layers) {
val axis = layer.axis
if (segmentPosition < axis.segmentCount)
return axis.getSegment(segmentPosition - segmentOffset)
segmentOffset = segmentOffset + axis.segmentCount
}
null
}
}