| package org.eclipse.nebula.widgets.nattable.renderer.javafx |
| |
| import javafx.beans.value.ObservableValue |
| import javafx.scene.canvas.Canvas |
| import javax.inject.Inject |
| import org.eclipse.nebula.widgets.nattable.core.geometry.PixelArea |
| import org.eclipse.nebula.widgets.nattable.core.graphics.PainterFactory |
| import org.eclipse.nebula.widgets.nattable.core.layer.Layer |
| import org.eclipse.nebula.widgets.nattable.renderer.javafx.graphics.JavaFXGraphicsContext |
| |
| /** |
| * A JavaFX component that renders a NatTable Layer. |
| */ |
| class JavaFXNatTable extends Canvas { |
| |
| @Inject extension PainterFactory |
| |
| Layer layer |
| |
| def Layer getLayer() { layer } |
| |
| def void setLayer(Layer layer) { |
| this.layer = layer |
| |
| paintLayer |
| |
| boundsInLocalProperty.addListener([ ObservableValue<?> observable, Object oldValue, Object newValue | |
| paintLayer |
| ]) |
| } |
| |
| def private paintLayer() { |
| val paintArea = new PixelArea(boundsInLocal.width, boundsInLocal.height) |
| val gc = new JavaFXGraphicsContext(this.graphicsContext2D) |
| layer?.layerPainter?.paintLayer(layer, paintArea, gc) |
| } |
| |
| } |