< prev index next >

modules/graphics/src/main/java/com/sun/javafx/scene/layout/RegionHelper.java

Print this page

        

*** 23,35 **** --- 23,40 ---- * questions. */ package com.sun.javafx.scene.layout; + import com.sun.javafx.geom.BaseBounds; + import com.sun.javafx.geom.PickRay; + import com.sun.javafx.geom.transform.BaseTransform; import com.sun.javafx.scene.ParentHelper; + import com.sun.javafx.scene.input.PickResultChooser; import com.sun.javafx.sg.prism.NGNode; import com.sun.javafx.util.Utils; + import javafx.geometry.Bounds; import javafx.scene.Node; import javafx.scene.layout.Region; /** * Used to access internal methods of Region.
*** 61,70 **** --- 66,105 ---- protected void updatePeerImpl(Node node) { super.updatePeerImpl(node); regionAccessor.doUpdatePeer(node); } + @Override + protected Bounds computeLayoutBoundsImpl(Node node) { + return regionAccessor.doComputeLayoutBounds(node); + } + + @Override + protected BaseBounds computeGeomBoundsImpl(Node node, BaseBounds bounds, + BaseTransform tx) { + regionAccessor.doComputeGeomBounds(node, bounds, tx); + // NOTE: Okay to call computeGeomBoundsImpl with tx even in the 3D case + // since Parent's computeGeomBoundsImpl does handle 3D correctly. + BaseBounds cb = super.computeGeomBoundsImpl(node, bounds, tx); + return regionAccessor.doComputeGeomBounds2(cb, node, bounds, tx); + } + + @Override + protected boolean computeContainsImpl(Node node, double localX, double localY) { + return regionAccessor.doComputeContains(node, localX, localY); + } + + @Override + protected void notifyLayoutBoundsChangedImpl(Node node) { + regionAccessor.doNotifyLayoutBoundsChanged(node); + } + @Override + protected void pickNodeLocalImpl(Node node, PickRay localPickRay, + PickResultChooser result) { + regionAccessor.doPickNodeLocal(node, localPickRay, result); + } + public static void setRegionAccessor(final RegionAccessor newAccessor) { if (regionAccessor != null) { throw new IllegalStateException(); }
*** 72,79 **** --- 107,121 ---- } public interface RegionAccessor { void doUpdatePeer(Node node); NGNode doCreatePeer(Node node); + Bounds doComputeLayoutBounds(Node node); + BaseBounds doComputeGeomBounds(Node node, BaseBounds bounds, BaseTransform tx); + BaseBounds doComputeGeomBounds2(BaseBounds cb, Node node, BaseBounds bounds, BaseTransform tx); + boolean doComputeContains(Node node, double localX, double localY); + void doNotifyLayoutBoundsChanged(Node node); + void doPickNodeLocal(Node node, PickRay localPickRay, + PickResultChooser result); } }
< prev index next >