| package org.eclipse.nebula.widgets.nattable.renderer.javafx |
| |
| import java.util.HashMap |
| import javafx.beans.value.ObservableValue |
| import javafx.scene.canvas.Canvas |
| import org.eclipse.nebula.widgets.nattable.core.layer.Layer |
| |
| class JavaFXNatTable extends Canvas { |
| |
| val static defaultLayerRenderer = new DefaultLayerRenderer |
| |
| val Layer layer |
| val layerRenderers = new HashMap<String, JavaFXLayerRenderer> |
| |
| new(Layer layer, int width, int height) { |
| super(width, height) |
| this.layer = layer |
| |
| renderLayer |
| |
| boundsInLocalProperty.addListener([ ObservableValue<?> observable, Object oldValue, Object newValue | |
| renderLayer |
| ]) |
| } |
| |
| private def renderLayer() { |
| layer.layerRenderer.renderLayer(graphicsContext2D, boundsInLocal, layer) |
| } |
| |
| private def JavaFXLayerRenderer getLayerRenderer(Layer layer) { |
| var layerRenderer = layerRenderers.get(layer.class.canonicalName) |
| |
| if (layerRenderer === null) { |
| // find it! |
| layer.class.name + "Renderer" |
| |
| // can't find it? use default renderer |
| layerRenderer = defaultLayerRenderer |
| |
| layerRenderers.put(layer.class.canonicalName, layerRenderer) |
| } |
| |
| layerRenderer |
| } |
| |
| } |