Integrated: 8314482: TextFlow: TabStopPolicy
Andy Goryachev
angorya at openjdk.org
Thu Jul 17 14:43:10 UTC 2025
On Wed, 26 Mar 2025 14:41:51 GMT, Andy Goryachev <angorya at openjdk.org> wrote:
> # Tab Stop Policy
>
> Andy Goryachev
>
> <andy.goryachev at oracle.com>
>
>
> ## Summary
>
> Introduce a `tabStopPolicy` property in the `TextFlow` class which, when set, overrides the existing `tabSize`
> value and provides consistent way of setting tab stops at the paragraph level, regardless of the individual text
> segments font [0].
>
> 
>
>
> ## Goals
>
> The goal of this proposal is to provide a better way for controlling tab stops in the `TextFlow` containing rich text.
>
>
>
> ## Non-Goals
>
> The following are not the goals of this proposal:
>
> - support for tab stop types (BAR, or DECIMAL), or attributes like `alignment`
> - support the `leader` property (symbols to fill the empty space before the tab stop)
> - support for `firstLineIndent` property
> - deprecate the `TextFlow::tabsize` property
>
>
>
> ## Motivation
>
> The existing `tabSize` property in the `TextFlow` is inadequate for representing tab stops when the content
> contains text with different font sizes.
>
> In addition to that, a rich text editor might require support for user-customizable tab stops, similar to that provided
> in RTF or MS Word documents.
>
>
>
>
> ## Description
>
> ### TextFlow
>
>
> /**
> * {@code TabAdvancePolicy} determines the tab stop positions within this {@code TextFlow}.
> * <p>
> * A non-null {@code TabAdvancePolicy} overrides values set by {@link #setTabSize(int)},
> * as well as any values set by {@link Text#setTabSize(int)} in individual {@code Text} instances within
> * this {@code TextFlow}.
> *
> * @defaultValue null
> *
> * @since 999 TODO
> */
> public final ObjectProperty<TabStopPolicy> tabStopPolicyProperty() {
>
> public final TabStopPolicy getTabStopPolicy() {
>
> public final void setTabStopPolicy(TabStopPolicy policy) {
>
> /**
> * The size of a tab stop in spaces.
> * Values less than 1 are treated as 1. This value overrides the
> * {@code tabSize} of contained {@link Text} nodes.
> * <p>
> + * Note that this method should not be used to control the tab placement when multiple {@code Text} nodes
> + * with different fonts are contained within this {@code TextFlow}.
> + * In this case, the {@link #setTabStopPolicy(TabStopPolicy)} should be used instead.
> *
> * @defaultValue 8
> *
> * @since 14
> */
> public final IntegerProperty tabSizeProperty() {
>
>
>
> ### TabStopPolicy
>
>
> /**
> * The TabStopPolicy determines the tab stop pos...
This pull request has now been integrated.
Changeset: 22e43c58
Author: Andy Goryachev <angorya at openjdk.org>
URL: https://git.openjdk.org/jfx/commit/22e43c58af8ca293052b54d86c78818fc32f09d9
Stats: 701 lines in 13 files changed: 671 ins; 5 del; 25 mod
8314482: TextFlow: TabStopPolicy
Reviewed-by: kcr, arapte
-------------
PR: https://git.openjdk.org/jfx/pull/1744
More information about the openjfx-dev
mailing list