| package org.eclipse.nebula.widgets.nattable.core.layer.impl.composite |
| |
| import javax.inject.Inject |
| import org.eclipse.nebula.widgets.nattable.core.geometry.PixelRectangle |
| import org.eclipse.nebula.widgets.nattable.core.graphics.GraphicsContext |
| import org.eclipse.nebula.widgets.nattable.core.graphics.PainterFactory |
| import org.eclipse.nebula.widgets.nattable.core.layer.LayerPainter |
| |
| import static extension org.eclipse.nebula.widgets.nattable.core.layer.LayerInvariants.* |
| |
| class CompositeLayerPainter implements LayerPainter<CompositeLayer> { |
| |
| @Inject extension PainterFactory |
| |
| override paintLayer(CompositeLayer compositeLayer, GraphicsContext gc) { |
| var yOffset = 0 |
| for (row : compositeLayer.rows) { |
| var xOffset = 0 |
| |
| for (childLayer : row.childLayers) { |
| gc.pushState |
| gc.translate(xOffset, yOffset) |
| if (childLayer.pixelWidth <= 0 || childLayer.pixelHeight <= 0) |
| println("oh no!") |
| gc.clipBounds = new PixelRectangle(0, 0, childLayer.pixelWidth, childLayer.pixelHeight) |
| childLayer.layerPainter.paintLayer(childLayer, gc) |
| gc.popState |
| |
| xOffset = xOffset + childLayer.pixelWidth |
| } |
| |
| yOffset = yOffset + row.childLayers.get(0).pixelHeight |
| } |
| } |
| |
| } |