diff --git a/richtextfx-demos/src/main/java/org/fxmisc/richtext/demo/CloneDemo.java b/richtextfx-demos/src/main/java/org/fxmisc/richtext/demo/CloneDemo.java
index f375786a1..b3eb7df3c 100644
--- a/richtextfx-demos/src/main/java/org/fxmisc/richtext/demo/CloneDemo.java
+++ b/richtextfx-demos/src/main/java/org/fxmisc/richtext/demo/CloneDemo.java
@@ -8,7 +8,6 @@
import javafx.scene.layout.GridPane;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
-import org.fxmisc.richtext.AreaFactory;
import org.fxmisc.richtext.InlineCssTextArea;
public class CloneDemo extends Application {
@@ -22,8 +21,8 @@ public void start(Stage primaryStage) {
String selectedText = "selection";
String text = "Edit the top area (original)\nand watch the (clone) bottom area's displayed text change and its " +
"selected text [" + selectedText + "] update itself accordingly.";
- InlineCssTextArea area = AreaFactory.inlineCssTextArea(text);
- InlineCssTextArea clone = AreaFactory.cloneInlineCssTextArea(area);
+ InlineCssTextArea area = new InlineCssTextArea(text);
+ InlineCssTextArea clone = new InlineCssTextArea(area.getContent());
VBox vbox = new VBox(area, clone);
vbox.setSpacing(10);
diff --git a/richtextfx-demos/src/main/java/org/fxmisc/richtext/demo/richtext/RichText.java b/richtextfx-demos/src/main/java/org/fxmisc/richtext/demo/richtext/RichText.java
index 9e1041828..71f775e7a 100644
--- a/richtextfx-demos/src/main/java/org/fxmisc/richtext/demo/richtext/RichText.java
+++ b/richtextfx-demos/src/main/java/org/fxmisc/richtext/demo/richtext/RichText.java
@@ -34,7 +34,6 @@
import javafx.stage.Stage;
import org.fxmisc.flowless.VirtualizedScrollPane;
-import org.fxmisc.richtext.AreaFactory;
import org.fxmisc.richtext.Paragraph;
import org.fxmisc.richtext.StyleSpans;
import org.fxmisc.richtext.StyledTextArea;
@@ -46,10 +45,8 @@ public static void main(String[] args) {
launch(args);
}
- private final StyledTextArea area =
- AreaFactory.styledTextArea(
- ParStyle.EMPTY,
- ( paragraph, style) -> paragraph.setStyle(style.toCss()),
+ private final StyledTextArea area = new StyledTextArea<>(
+ ParStyle.EMPTY, ( paragraph, style) -> paragraph.setStyle(style.toCss()),
TextStyle.EMPTY.updateFontSize(12).updateFontFamily("Serif").updateTextColor(Color.BLACK),
( text, style) -> text.setStyle(style.toCss()));
{
diff --git a/richtextfx/src/main/java/org/fxmisc/richtext/AreaFactory.java b/richtextfx/src/main/java/org/fxmisc/richtext/AreaFactory.java
deleted file mode 100644
index e07fe3f83..000000000
--- a/richtextfx/src/main/java/org/fxmisc/richtext/AreaFactory.java
+++ /dev/null
@@ -1,206 +0,0 @@
-package org.fxmisc.richtext;
-
-import javafx.scene.text.TextFlow;
-import org.fxmisc.flowless.VirtualizedScrollPane;
-
-import java.util.function.BiConsumer;
-
-/**
- * AreaFactory is a convenience class used to create StyledTextArea
- * and any of its subclasses. and optionally embed them
- * into a {@link VirtualizedScrollPane}.
- *
- */
-public class AreaFactory {
-
- /* ********************************************************************** *
- * *
- * StyledTextArea *
- * *
- * ********************************************************************** */
-
- // StyledTextArea 1
- public static StyledTextArea styledTextArea(
- PS initialParagraphStyle, BiConsumer applyParagraphStyle,
- S initialTextStyle, BiConsumer super TextExt, S> applyStyle
- ) {
- return new StyledTextArea<>(
- initialParagraphStyle, applyParagraphStyle,
- initialTextStyle, applyStyle,
- true);
- }
-
- // Embeds StyledTextArea 1
- public static VirtualizedScrollPane> embeddedStyledTextArea(
- PS initialParagraphStyle, BiConsumer applyParagraphStyle,
- S initialTextStyle, BiConsumer super TextExt, S> applyStyle
- ) {
- return new VirtualizedScrollPane<>(styledTextArea(initialParagraphStyle, applyParagraphStyle, initialTextStyle, applyStyle));
- }
-
- // StyledTextArea 2
- public static StyledTextArea styledTextArea(
- PS initialParagraphStyle, BiConsumer applyParagraphStyle,
- S initialTextStyle, BiConsumer super TextExt, S> applyStyle,
- boolean preserveStyle
- ) {
- return new StyledTextArea<>(
- initialParagraphStyle, applyParagraphStyle,
- initialTextStyle, applyStyle,
- preserveStyle);
- }
-
- // Embeds StyledTextArea 2
- public static VirtualizedScrollPane> embeddedStyledTextArea(
- PS initialParagraphStyle, BiConsumer applyParagraphStyle,
- S initialTextStyle, BiConsumer super TextExt, S> applyStyle, boolean preserveStyle
- ) {
- return new VirtualizedScrollPane<>(styledTextArea(initialParagraphStyle, applyParagraphStyle, initialTextStyle, applyStyle, preserveStyle));
- }
-
- // Clones StyledTextArea
- public static StyledTextArea cloneStyleTextArea(StyledTextArea area) {
- return new StyledTextArea<>(area.getInitialParagraphStyle(), area.getApplyParagraphStyle(),
- area.getInitialTextStyle(), area.getApplyStyle(),
- area.getContent(), area.isPreserveStyle());
- }
-
- // Embeds cloned StyledTextArea
- public static VirtualizedScrollPane> embeddedClonedStyledTextArea(StyledTextArea area) {
- return new VirtualizedScrollPane<>(cloneStyleTextArea(area));
- }
-
- // Embeds a cloned StyledTextArea from an embedded StyledTextArea
- public static VirtualizedScrollPane> embeddedClonedStyledTextArea(
- VirtualizedScrollPane> virtualizedScrollPaneWithArea
- ) {
- return embeddedClonedStyledTextArea(virtualizedScrollPaneWithArea.getContent());
- }
-
- /* ********************************************************************** *
- * *
- * StyleClassedTextArea *
- * *
- * ********************************************************************** */
-
- // StyleClassedTextArea 1
- public static StyleClassedTextArea styleClassedTextArea(boolean preserveStyle) {
- return new StyleClassedTextArea(preserveStyle);
- }
-
- // Embeds StyleClassedTextArea 1
- public static VirtualizedScrollPane embeddedStyleClassedTextArea(boolean preserveStyle) {
- return new VirtualizedScrollPane<>(styleClassedTextArea(preserveStyle));
- }
-
- // StyleClassedTextArea 2
- public static StyleClassedTextArea styleClassedTextArea() {
- return styleClassedTextArea(true);
- }
-
- // Embeds StyleClassedTextArea 2
- public static VirtualizedScrollPane embeddedStyleClassedTextArea() {
- return new VirtualizedScrollPane<>(styleClassedTextArea());
- }
-
- // Clones StyleClassedTextArea
- public static StyleClassedTextArea cloneStyleClassedTextArea(StyleClassedTextArea area) {
- return new StyleClassedTextArea(area.getContent(), area.isPreserveStyle());
- }
-
- // Embeds cloned StyleClassedTextArea
- public static VirtualizedScrollPane embeddedClonedStyleClassedTextArea(StyleClassedTextArea area) {
- return new VirtualizedScrollPane<>(cloneStyleClassedTextArea(area));
- }
-
- // Embeds a cloned StyleClassedTextArea from an embedded StyleClassedTextArea
- public static VirtualizedScrollPane embeddedClonedStyleClassedTextArea(
- VirtualizedScrollPane virtualizedScrollPaneWithArea
- ) {
- return embeddedClonedStyleClassedTextArea(virtualizedScrollPaneWithArea.getContent());
- }
-
- /* ********************************************************************** *
- * *
- * CodeArea *
- * *
- * ********************************************************************** */
-
- // CodeArea 1
- public static CodeArea codeArea() {
- return new CodeArea();
- }
-
- // Embeds CodeArea 1
- public static VirtualizedScrollPane embeddedCodeArea() {
- return new VirtualizedScrollPane<>(codeArea());
- }
-
- // CodeArea 2
- public static CodeArea codeArea(String text) {
- return new CodeArea(text);
- }
-
- // Embeds CodeArea 2
- public static VirtualizedScrollPane embeddedCodeArea(String text) {
- return new VirtualizedScrollPane<>(codeArea(text));
- }
-
- // Clones CodeArea
- public static CodeArea cloneCodeArea(CodeArea area) {
- return new CodeArea(area.getContent());
- }
-
- // Embeds a cloned CodeArea
- public static VirtualizedScrollPane embeddedClonedCodeArea(CodeArea area) {
- return new VirtualizedScrollPane<>(cloneCodeArea(area));
- }
-
- // Embeds a cloned CodeArea from an embedded CodeArea
- public static VirtualizedScrollPane embeddedClonedCodeArea(VirtualizedScrollPane virtualizedScrollPaneWithArea) {
- return new VirtualizedScrollPane<>(cloneCodeArea(virtualizedScrollPaneWithArea.getContent()));
- }
-
- /* ********************************************************************** *
- * *
- * InlineCssTextArea *
- * *
- * ********************************************************************** */
-
- // InlineCssTextArea 1
- public static InlineCssTextArea inlineCssTextArea() {
- return new InlineCssTextArea();
- }
-
- // Embeds InlineCssTextArea 1
- public static VirtualizedScrollPane embeddedInlineCssTextArea() {
- return new VirtualizedScrollPane<>(inlineCssTextArea());
- }
-
- // InlineCssTextArea 2
- public static InlineCssTextArea inlineCssTextArea(String text) {
- return new InlineCssTextArea(text);
- }
-
- // Embeds InlineCssTextArea 2
- public static VirtualizedScrollPane embeddedInlineCssTextArea(String text) {
- return new VirtualizedScrollPane<>(inlineCssTextArea(text));
- }
-
- // Clones InlineCssTextArea
- public static InlineCssTextArea cloneInlineCssTextArea(InlineCssTextArea area) {
- return new InlineCssTextArea(area.getContent());
- }
-
- // Embeds a cloned InlineCssTextArea
- public static VirtualizedScrollPane embeddedClonedInlineCssTextArea(InlineCssTextArea area) {
- return new VirtualizedScrollPane<>(cloneInlineCssTextArea(area));
- }
-
- // Embeds a cloned InlineCssTextArea from an embedded InlineCssTextArea
- public static VirtualizedScrollPane embeddedClonedInlineCssTextArea(
- VirtualizedScrollPane virtualizedScrollPaneWithArea
- ) {
- return new VirtualizedScrollPane<>(cloneInlineCssTextArea(virtualizedScrollPaneWithArea.getContent()));
- }
-}
diff --git a/richtextfx/src/main/java/org/fxmisc/richtext/StyledTextArea.java b/richtextfx/src/main/java/org/fxmisc/richtext/StyledTextArea.java
index bb585e94e..7210fa473 100644
--- a/richtextfx/src/main/java/org/fxmisc/richtext/StyledTextArea.java
+++ b/richtextfx/src/main/java/org/fxmisc/richtext/StyledTextArea.java
@@ -73,9 +73,20 @@
* style or style classes.
*
* Note: Scroll bars no longer appear when the content spans outside
- * of the viewport. To add scroll bars, the area needs to be embedded in
- * a {@link VirtualizedScrollPane}. {@link AreaFactory} is provided to make
- * this more convenient.
+ * of the viewport. To add scroll bars, the area needs to be wrapped in
+ * a {@link VirtualizedScrollPane}. For example,
+ *
+ * {@code
+ * // shows area without scroll bars
+ * InlineCssTextArea area = new InlineCssTextArea();
+ *
+ * // add scroll bars that will display as needed
+ * VirtualizedScrollPane vsPane = new VirtualizedScrollPane(area);
+ *
+ * Parent parent = //;
+ * parent.getChildren().add(vsPane)
+ * }
+ *
*
* Overriding keyboard shortcuts
*