Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package org.fxmisc.richtext;

import javafx.css.CssMetaData;
import javafx.css.StyleConverter;
import javafx.css.Styleable;
import javafx.css.StyleableObjectProperty;
import javafx.css.StyleableProperty;

import java.util.function.Function;

public class CustomCssMetaData<S extends Styleable, V> extends CssMetaData<S, V> {

private final Function<S, StyleableObjectProperty<V>> property;

CustomCssMetaData(String property, StyleConverter<?, V> converter, V initialValue,
Function<S, StyleableObjectProperty<V>> getStyleableProperty) {
super(property, converter, initialValue);
this.property = getStyleableProperty;
}

@Override
public boolean isSettable(S styleable) {
return property.apply(styleable).isBound();
}

@Override
public StyleableProperty<V> getStyleableProperty(S styleable) {
return property.apply(styleable);
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -1356,47 +1356,18 @@ ParagraphBox.CaretOffsetX getTargetCaretOffset() {
* *
* ********************************************************************** */

private static final CssMetaData<GenericStyledArea<?, ?, ?>, Paint> HIGHLIGHT_FILL
= new CssMetaData<GenericStyledArea<?, ?, ?>, Paint>("-fx-highlight-fill", StyleConverter.getPaintConverter(), Color.DODGERBLUE
) {
@Override
public boolean isSettable(GenericStyledArea<?, ?, ?> styleable) {
return !styleable.highlightFill.isBound();
}

@Override
public StyleableProperty<Paint> getStyleableProperty(GenericStyledArea<?, ?, ?> styleable) {
return styleable.highlightFill;
}
};

private static final CssMetaData<GenericStyledArea<?, ?, ?>, Paint> HIGHLIGHT_TEXT_FILL
= new CssMetaData<GenericStyledArea<?, ?, ?>, Paint>("-fx-highlight-text-fill", StyleConverter.getPaintConverter(), Color.WHITE
) {
@Override
public boolean isSettable(GenericStyledArea<?, ?, ?> styleable) {
return !styleable.highlightTextFill.isBound();
}
private static final CssMetaData<GenericStyledArea<?, ?, ?>, Paint> HIGHLIGHT_FILL = new CustomCssMetaData<>(
"-fx-highlight-fill", StyleConverter.getPaintConverter(), Color.DODGERBLUE, s -> s.highlightFill
);

@Override
public StyleableProperty<Paint> getStyleableProperty(GenericStyledArea<?, ?, ?> styleable) {
return styleable.highlightTextFill;
}
};
private static final CssMetaData<GenericStyledArea<?, ?, ?>, Paint> HIGHLIGHT_TEXT_FILL = new CustomCssMetaData<>(
"-fx-highlight-text-fill", StyleConverter.getPaintConverter(), Color.WHITE, s -> s.highlightTextFill
);

private static final CssMetaData<GenericStyledArea<?, ?, ?>, javafx.util.Duration> CARET_BLINK_RATE
= new CssMetaData<GenericStyledArea<?, ?, ?>, javafx.util.Duration>("-fx-caret-blink-rate", StyleConverter.getDurationConverter(), javafx.util.Duration.millis(500)
) {
@Override
public boolean isSettable(GenericStyledArea<?, ?, ?> styleable) {
return !styleable.caretBlinkRate.isBound();
}

@Override
public StyleableProperty<javafx.util.Duration> getStyleableProperty(GenericStyledArea<?, ?, ?> styleable) {
return styleable.caretBlinkRate;
}
};
= new CustomCssMetaData<>("-fx-caret-blink-rate", StyleConverter.getDurationConverter(),
javafx.util.Duration.millis(500), s -> s.caretBlinkRate
);

private static final List<CssMetaData<? extends Styleable, ?>> CSS_META_DATA_LIST;

Expand Down
102 changes: 24 additions & 78 deletions richtextfx/src/main/java/org/fxmisc/richtext/TextExt.java
Original file line number Diff line number Diff line change
Expand Up @@ -176,83 +176,29 @@ public ObjectProperty<Paint> backgroundColorProperty() {

private static class StyleableProperties {

private static final CssMetaData<TextExt, Paint> BACKGROUND_COLOR = new CssMetaData<TextExt, Paint>(
"-rtfx-background-color",
StyleConverter.getPaintConverter(),
Color.TRANSPARENT) {
@Override
public boolean isSettable(TextExt node) {
return !node.backgroundColor.isBound();
}

@Override
public StyleableProperty<Paint> getStyleableProperty(TextExt node) {
return node.backgroundColor;
}
};


private static final CssMetaData<TextExt, Paint> UNDERLINE_COLOR = new CssMetaData<TextExt, Paint>(
"-rtfx-underline-color",
StyleConverter.getPaintConverter(),
Color.TRANSPARENT) {
@Override
public boolean isSettable(TextExt node) {
return !node.underlineColor.isBound();
}

@Override
public StyleableProperty<Paint> getStyleableProperty(TextExt node) {
return node.underlineColor;
}
};

private static final CssMetaData<TextExt, Number> UNDERLINE_WIDTH = new CssMetaData<TextExt, Number>(
"-rtfx-underline-width",
StyleConverter.getSizeConverter(),
0) {

@Override
public boolean isSettable(TextExt node) {
return !node.underlineWidth.isBound();
}

@Override
public StyleableProperty<Number> getStyleableProperty(TextExt node) {
return node.underlineWidth;
}
};

private static final CssMetaData<TextExt, Number[]> UNDERLINE_DASH_ARRAY = new CssMetaData<TextExt, Number[]>(
"-rtfx-underline-dash-array",
SizeConverter.SequenceConverter.getInstance(),
new Double[0]) {

@Override
public boolean isSettable(TextExt node) {
return !node.underlineDashArray.isBound();
}

@Override
public StyleableProperty<Number[]> getStyleableProperty(TextExt node) {
return node.underlineDashArray;
}
};

private static final CssMetaData<TextExt, StrokeLineCap> UNDERLINE_CAP = new CssMetaData<TextExt, StrokeLineCap>(
"-rtfx-underline-cap",
new EnumConverter<StrokeLineCap>(StrokeLineCap.class),
StrokeLineCap.SQUARE) {

@Override
public boolean isSettable(TextExt node) {
return !node.underlineCap.isBound();
}

@Override
public StyleableProperty<StrokeLineCap> getStyleableProperty(TextExt node) {
return node.underlineCap;
}
};
private static final CssMetaData<TextExt, Paint> BACKGROUND_COLOR = new CustomCssMetaData<>(
"-rtfx-background-color", StyleConverter.getPaintConverter(),
Color.TRANSPARENT, n -> n.backgroundColor
);

private static final CssMetaData<TextExt, Paint> UNDERLINE_COLOR = new CustomCssMetaData<>(
"-rtfx-underline-color", StyleConverter.getPaintConverter(),
Color.TRANSPARENT, n -> n.underlineColor
);

private static final CssMetaData<TextExt, Number> UNDERLINE_WIDTH = new CustomCssMetaData<>(
"-rtfx-underline-width", StyleConverter.getSizeConverter(),
0, n -> n.underlineWidth
);

private static final CssMetaData<TextExt, Number[]> UNDERLINE_DASH_ARRAY = new CustomCssMetaData<>(
"-rtfx-underline-dash-array", SizeConverter.SequenceConverter.getInstance(),
new Double[0], n -> n.underlineDashArray
);

private static final CssMetaData<TextExt, StrokeLineCap> UNDERLINE_CAP = new CustomCssMetaData<>(
"-rtfx-underline-cap", new EnumConverter<StrokeLineCap>(StrokeLineCap.class),
StrokeLineCap.SQUARE, n -> n.underlineCap
);
}
}