org.fxmisc.richtext.SelectionPath Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of richtextfx Show documentation
Show all versions of richtextfx Show documentation
Rich-text area for JavaFX
The newest version!
package org.fxmisc.richtext;
import javafx.beans.property.ObjectProperty;
import javafx.css.CssMetaData;
import javafx.css.StyleConverter;
import javafx.css.Styleable;
import javafx.css.StyleableObjectProperty;
import javafx.scene.control.IndexRange;
import javafx.scene.paint.Color;
import javafx.scene.paint.Paint;
import javafx.scene.shape.Path;
import org.reactfx.value.Val;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* A Path used to render a portion of a mulit-paragraph selection or all of a single-paragraph selection
* with additional CSS styling; it does not have a style class associated with it.
*/
public class SelectionPath extends Path {
private final StyleableObjectProperty highlightFill
= new CustomStyleableProperty<>(Color.DODGERBLUE, "highlightFill", this, HIGHLIGHT_FILL);
/**
* Background fill for highlighted/selected text. Can be styled using "-fx-highlight-fill".
*/
public final ObjectProperty highlightFillProperty() { return highlightFill; }
public final Paint getHighlightFill() { return highlightFill.get(); }
public final void setHighlightFill(Paint paint) { highlightFill.set(paint); }
private final Val range;
final Val rangeProperty() { return range; }
SelectionPath(Val range) {
setManaged(false);
this.range = range;
highlightFill.addListener( (ob,ov,nv) -> setFill( nv ) );
setFill( getHighlightFill() );
setStrokeWidth( 0.0 );
}
@Override
public String toString() {
return String.format(
"SelectionPath(styleclass=%s path=%s", getStyleClass(), super.toString()
);
}
private static final CssMetaData HIGHLIGHT_FILL = new CustomCssMetaData<>(
"-fx-highlight-fill", StyleConverter.getPaintConverter(), Color.DODGERBLUE, s -> s.highlightFill
);
private static final List> CSS_META_DATA_LIST;
static {
List> styleables = new ArrayList<>(Path.getClassCssMetaData());
styleables.add(HIGHLIGHT_FILL);
CSS_META_DATA_LIST = Collections.unmodifiableList(styleables);
}
@Override
public List> getCssMetaData() {
return CSS_META_DATA_LIST;
}
public static List> getClassCssMetaData() {
return CSS_META_DATA_LIST;
}
}