| package org.eclipse.nebula.widgets.nattable.renderer.javafx |
| |
| import com.google.inject.Guice |
| import com.google.inject.Injector |
| 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.DefaultPainterFactory |
| 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 { |
| |
| extension Injector |
| @Inject extension PainterFactory |
| |
| val Layer layer |
| |
| new(Layer layer) { |
| this.layer = layer |
| |
| _injector = Guice::createInjector.createChildInjector([ binder | |
| binder.bind(typeof(PainterFactory)).toInstance(new DefaultPainterFactory) |
| ]) |
| this.injectMembers |
| |
| 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) |
| } |
| |
| } |