package org.fxmisc.flowless;

import org.reactfx.value.Val;
import org.reactfx.value.Var;

public interface Virtualized {
    Val<Double> totalWidthEstimateProperty();
    Val<Double> totalHeightEstimateProperty();
    Var<Double> estimatedScrollXProperty();
    Var<Double> estimatedScrollYProperty();

    /**
     * Scroll the content horizontally by the given amount.
     * @param deltaX positive value scrolls right, negative value scrolls left
     */
    void scrollXBy(double deltaX);

    /**
     * Scroll the content vertically by the given amount.
     * @param deltaY positive value scrolls down, negative value scrolls up
     */
    void scrollYBy(double deltaY);

    /**
     * Scroll the content horizontally to the pixel
     * @param pixel - the pixel position to which to scroll
     */
    void scrollXToPixel(double pixel);

    /**
     * Scroll the content vertically to the pixel
     * @param pixel - the pixel position to which to scroll
     */
    void scrollYToPixel(double pixel);
}

@@ -23,16 +23,48 @@
 wless;%0A%0A
+import javafx.geometry.Point2D;%0A
 import o
@@ -348,368 +348,1482 @@
   * 
-Scroll the content horizontally by the given amount.%0A     * @param deltaX positive value scrolls right, negative value scrolls left%0A     */%0A    void scrollXBy(double deltaX);%0A%0A    /**%0A     * Scroll the content vertically by the given amount.%0A     * @param deltaY positive value scrolls down, negative value scrolls up%0A     */%0A    void scrollYBy(double deltaY);
+Convenience method: scroll horizontally by %7B@code deltas.getX()%7D and vertically by %7B@code deltas.getY()%7D%0A     * @param deltas negative values scroll left/up, positive scroll right/down%0A     */%0A    default void scrollBy(Point2D deltas) %7B%0A        scrollXBy(deltas.getX());%0A        scrollYBy(deltas.getY());%0A    %7D%0A%0A    /**%0A     * Convenience method: scroll horizontally by %7B@code deltaX%7D and vertically by %7B@code deltaY%7D%0A     * @param deltaX negative values scroll left, positive scroll right%0A     * @param deltaY negative values scroll up, positive scroll down%0A     */%0A    default void scrollBy(double deltaX, double deltaY) %7B%0A        scrollXBy(deltaX);%0A        scrollYBy(deltaY);%0A    %7D%0A%0A    /**%0A     * Scroll the content horizontally by the given amount.%0A     * @param deltaX positive value scrolls right, negative value scrolls left%0A     */%0A    void scrollXBy(double deltaX);%0A%0A    /**%0A     * Scroll the content vertically by the given amount.%0A     * @param deltaY positive value scrolls down, negative value scrolls up%0A     */%0A    void scrollYBy(double deltaY);%0A%0A    /**%0A     * Convenicen method: scroll the content to the pixel%0A     */%0A    default void scrollToPixel(Point2D pixel) %7B%0A        scrollXToPixel(pixel.getX());%0A        scrollYToPixel(pixel.getY());%0A    %7D%0A%0A    /**%0A     * Convenicen method: scroll the content to the pixel%0A     */%0A    default void scrollToPixel(double xPixel, double yPixel) %7B%0A        scrollXToPixel(xPixel);%0A        scrollYToPixel(yPixel);%0A    %7D
 %0A%0A  

Include convenience methods for scrolling