ScrollIncrementSupplier.java
- package swingtree.api;
- import swingtree.UI;
- import swingtree.layout.Bounds;
- import javax.swing.JScrollBar;
- import java.awt.Rectangle;
- /**
- * A supplier of scrollable increments for a {@link javax.swing.JScrollPane}.
- * which can be passed to the scroll pane configurator API
- * at {@link UI#scrollPane(Configurator)} using
- * {@link swingtree.ScrollableComponentDelegate#blockIncrement(ScrollIncrementSupplier)}
- * or {@link swingtree.ScrollableComponentDelegate#unitIncrement(ScrollIncrementSupplier)}.
- */
- @FunctionalInterface
- public interface ScrollIncrementSupplier
- {
- static ScrollIncrementSupplier none() {
- return Constants.SCROLLABLE_INCREMENT_SUPPLIER_NONE;
- }
- /**
- * Returns the scroll increment for the given view rectangle, orientation and direction.
- * This scroll increment may either be a unit increment or a block increment,
- * see {@link javax.swing.Scrollable#getScrollableUnitIncrement(Rectangle, int, int)}
- * and {@link javax.swing.Scrollable#getScrollableBlockIncrement(Rectangle, int, int)}
- * for more information about the parameters. <br>
- * <b>
- * This method is not designed to be used anywhere else than in the
- * {@link swingtree.ScrollableComponentDelegate#blockIncrement(ScrollIncrementSupplier)}
- * or {@link swingtree.ScrollableComponentDelegate#unitIncrement(ScrollIncrementSupplier)}.
- * </b>
- * <br>
- * Components that display logical rows or columns should compute
- * the scroll increment that will completely expose one new row
- * or column, depending on the value of orientation. Ideally,
- * components should handle a partially exposed row or column by
- * returning the distance required to completely expose the item.
- * <p>
- * Scrolling containers, like JScrollPane, will use this method
- * each time the user requests a unit scroll.
- *
- * @param visibleRectangle The view area visible within the viewport
- * @param orientation Either UI.VERTICAL or UI.HORIZONTAL.
- * @param direction Less than zero to scroll up/left, greater than zero for down/right.
- * @return The "unit" or "block" increment for scrolling in the specified direction.
- * This value should always be positive.
- * @see JScrollBar#setUnitIncrement
- * @see JScrollBar#setBlockIncrement
- */
- int get(
- Bounds visibleRectangle,
- UI.Align orientation,
- int direction
- );
- }