blob: a43bd0f82e99b287cdfdd86fb3f7e3dd21f38556 [file] [log] [blame]
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)
}
}