> # Tab Stop Policy > > Andy Goryachev > > <andy.goryac...@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...
Andy Goryachev has updated the pull request incrementally with one additional commit since the last revision: review comments ------------- Changes: - all: https://git.openjdk.org/jfx/pull/1744/files - new: https://git.openjdk.org/jfx/pull/1744/files/7acc55db..ef38166a Webrevs: - full: https://webrevs.openjdk.org/?repo=jfx&pr=1744&range=02 - incr: https://webrevs.openjdk.org/?repo=jfx&pr=1744&range=01-02 Stats: 9 lines in 3 files changed: 2 ins; 1 del; 6 mod Patch: https://git.openjdk.org/jfx/pull/1744.diff Fetch: git fetch https://git.openjdk.org/jfx.git pull/1744/head:pull/1744 PR: https://git.openjdk.org/jfx/pull/1744