RFR: 8301121: RichTextArea Control (Incubator) [v7]
Andy Goryachev
angorya at openjdk.org
Tue Oct 1 15:12:44 UTC 2024
On Mon, 30 Sep 2024 21:33:39 GMT, Kevin Rushforth <kcr at openjdk.org> wrote:
> You mean `StyleAttributeMap.Builder`, right? Question then: how do I now create a StyleAttributeMap from a CSS style?
No, these methods are in `RichParagraph.Builder`.
CSS styles in StyleAttributeMap are a special case, the attribute itself is not public (`com.sun.jfx.incubator.scene.control.richtext.CssStyles.CSS`). I've added additional explanations to the `StyledTextModel` class:
* <h2>Creating a Paragraph</h2>
* The model presents its content to the view(s) via immutable {@link RichParagraph}.
* There are two ways of adding styles to the model:
* <ul>
* <li>Using the style names in the stylesheet or inline styles (example: {@code "-fx-font-size:200%;"}), or
* <li>Using attributes defined in {@link StyleAttributeMap}, such as bold typeface, italic, and so on.
* In this case, the resulting paragraph appearance is decoupled from the stylesheet and will look the same
* regardless of the active stylesheet.
* </ul>
* The latter method is intended for applications where an editable control is needed, such as general purpose
* rich text editor, the former is designed for view-only informational controls that must follow the application
* theme and therefore are coupled to the stylesheet.
*
So, to answer your question, the user creates rich paragraph coupled to the CSS stylesheet like so:
@Override
public RichParagraph getParagraph(int index) {
String text = getPlainText(index);
RichParagraph.Builder b = RichParagraph.builder();
// monospaced and underline are the names of CSS styles in the stylesheet
b.withInlineAndExternalStyles(text, "-fx-fill:darkgreen;", "monospaced", "underline");
return b.build();
}
-------------
PR Comment: https://git.openjdk.org/jfx/pull/1524#issuecomment-2386273314
More information about the openjfx-dev
mailing list