CssMetaData is the bridge between a value that can be represented
syntactically in a .css file, and a StyleableProperty. There is
a one-to-one correspondence between a CssMetaData and a StyleableProperty.
Typically, the CssMetaData of a Node will include the CssMetaData of its ancestors.
For example, the CssMetaData of a Rectangle includes the CssMetaData of Shape and also of Node.
During CSS processing, the CSS engine iterates over the Node's CssMetaData,
looks up the parsed value of each property,
converts the parsed value, and sets the value on the StyleableProperty.
The method Node#getCssMetaData() is called to obtain the
List<CssMetaData>. This method is called frequently and it is prudent
to return a static list rather than creating the list on each call. By
convention, node classes that have CssMetaData will implement a
static method getClassCssMetaData() and it is customary to have
getCssMetaData() simply return getClassCssMetaData(). The
purpose of getClassCssMetaData() is to allow sub-classes to easily
include the CssMetaData of some ancestor.
The StyleablePropertyFactory
greatly simplifies creating a StyleableProperty and its corresponding CssMetaData.
This example is a typical implementation.
private DoubleProperty gapProperty = new StyleableDoubleProperty(0) {
@Override
public CssMetaData<MyWidget,Number> getCssMetaData() {
return GAP_META_DATA;
}
@Override
public Object getBean() {
return MyWidget.this;
}
@Override
public String getName() {
return "gap";
}
};
private static final CssMetaData GAP_META_DATA =
new CssMetaData<MyWidget,Number>("-my-gap", StyleConverter.getSizeConverter(), 0d) {
@Override
public boolean isSettable(MyWidget node) {
return node.gapProperty == null || !node.gapProperty.isBound();
}
@Override
public StyleableProperty<Number> getStyleableProperty(MyWidget node) {
return (StyleableProperty<Number>)node.gapProperty;
}
};
private static final List<CssMetaData<? extends Node, ?>> cssMetaDataList;
static {
List<CssMetaData<? extends Node, ?>> temp =
new ArrayList<CssMetaData<? extends Node, ?>>(Control.getClassCssMetaData());
temp.add(GAP_META_DATA);
cssMetaDataList = Collections.unmodifiableList(temp);
}
public static List<CssMetaData<? extends Node, ?>> getClassCssMetaData() {
return cssMetaDataList;
}
@Override
public List<CssMetaData<? extends Node, ?>> getCssMetaData() {
return getClassCssMetaData();
}
javafx.css.StyleablePropertyFactory
| Modifier and Type | Field and Description |
|---|---|
| private final StyleConverter | |
| private final boolean | |
| private final V | |
| private final String | |
| private final List |
| Access | Constructor and Description |
|---|---|
| protected | CssMetaData(final String
the CSS property property, final StyleConverter<?, V> the StyleConverter used to convert the CSS parsed value to a Java object. converter, final V The initial or default value of the corresponding StyleableProperty initialValue, boolean true if this property uses CSS inheritance inherits, final List<CssMetaData<? extends Styleable, ?>> the sub-properties of this property. For example,
the -fx-font property has the sub-properties -fx-font-family,
-fx-font-size, -fx-font-weight, and -fx-font-style. subProperties)Construct a CssMetaData with the given parameters and no sub-properties. |
| protected | CssMetaData(final String
the CSS property property, final StyleConverter<?, V> the StyleConverter used to convert the CSS parsed value to a Java object. converter, final V The initial or default value of the corresponding StyleableProperty initialValue, boolean true if this property uses CSS inheritance inherits)Construct a CssMetaData with the given parameters and no sub-properties. |
| protected | CssMetaData(final String
the CSS property property, final StyleConverter<?, V> the StyleConverter used to convert the CSS parsed value to a Java object. converter, final V The initial or default value of the corresponding StyleableProperty initialValue)Construct a CssMetaData with the given parameters, inherit set to false and no sub-properties. |
| protected | CssMetaData(final String
the CSS property property, final StyleConverter<?, V> the StyleConverter used to convert the CSS parsed value to a Java object. converter)Construct a CssMetaData with the given parameters, initialValue is null, inherit is set to false, and no sub-properties. |
| Modifier and Type | Method and Description |
|---|---|
| public boolean | Returns: true if the obj is equaled, false otherwisethe reference object with which to compare. obj)Overrides java. Two CssMetaData objects are considered to be equal if their |
| public final StyleConverter | Returns: the CSS converterGets the CSS converter that handles conversion from a CSS value to a Java Object. |
| public V | Returns: The initial value of the property, possibly nullthe styleable styleable)The initial value of a CssMetaData corresponds to the default value of the StyleableProperty in code. |
| public final String | |
| public abstract StyleableProperty | Returns: The StyleableProperty corresponding to this CssMetaData for the given StyleableThe Styleable for which the property is returned styleable)Return the corresponding |
| public final List | Returns: the list of sub-propertiesThe sub-properties refers to the constituent properties of this property, if any. |
| public int | |
| public final boolean | Returns: false by default unless inherits is trueIf true, the value of this property is the same as the parent's computed value of this property. |
| public abstract boolean | Returns: true if the property can be set.The Styleable on which the property value is being set styleable)Check to see if the corresponding property on the given Node is settable. |
| public void | set(S
The Styleable on which the property value is being set styleable, V The value to which the property is set value, StyleOrigin the origin origin)
Deprecated
since 8. This method is no longer called from CSS code.
Sets the value of the corresponding property on the given Node. |
| public String |
| converter | back to summary |
|---|---|
| private final StyleConverter<?, V> converter | |
| inherits | back to summary |
|---|---|
| private final boolean inherits | |
| initialValue | back to summary |
|---|---|
| private final V initialValue | |
| property | back to summary |
|---|---|
| private final String property | |
| subProperties | back to summary |
|---|---|
| private final List<CssMetaData<? extends Styleable, ?>> subProperties | |
| CssMetaData | back to summary |
|---|---|
| protected CssMetaData(final String property, final StyleConverter<?, V> converter, final V initialValue, boolean inherits, final List<CssMetaData<? extends Styleable, ?>> subProperties) Construct a CssMetaData with the given parameters and no sub-properties.
| |
| CssMetaData | back to summary |
|---|---|
| protected CssMetaData(final String property, final StyleConverter<?, V> converter, final V initialValue, boolean inherits) Construct a CssMetaData with the given parameters and no sub-properties.
| |
| CssMetaData | back to summary |
|---|---|
| protected CssMetaData(final String property, final StyleConverter<?, V> converter, final V initialValue) Construct a CssMetaData with the given parameters, inherit set to false and no sub-properties.
| |
| CssMetaData | back to summary |
|---|---|
| protected CssMetaData(final String property, final StyleConverter<?, V> converter) Construct a CssMetaData with the given parameters, initialValue is null, inherit is set to false, and no sub-properties.
| |
| equals | back to summary |
|---|---|
| public boolean equals(Object obj) Overrides java. Two CssMetaData objects are considered to be equal if their
| |
| getConverter | back to summary |
|---|---|
| public final StyleConverter Gets the CSS converter that handles conversion from a CSS value to a Java Object.
| |
| getInitialValue | back to summary |
|---|---|
| public V getInitialValue(S styleable) The initial value of a CssMetaData corresponds to the default value of the StyleableProperty in code. For example, the default value of Shape.fill is Color.BLACK and the initialValue of Shape.StyleableProperties.FILL is also Color.BLACK. There may be exceptions to this, however. The initialValue may depend on the state of the Node. A ScrollBar has a default orientation of horizontal. If the ScrollBar is vertical, however, this method should return Orientation.VERTICAL. Otherwise, a vertical ScrollBar would be incorrectly set to a horizontal ScrollBar when the initial value is applied.
| |
| getProperty | back to summary |
|---|---|
| public final String getProperty() Gets the CSS property name.
| |
| getStyleableProperty | back to summary |
|---|---|
| public abstract StyleableProperty Return the corresponding
| |
| getSubProperties | back to summary |
|---|---|
| public final List The sub-properties refers to the constituent properties of this property, if any. For example, "-fx-font-weight" is sub-property of "-fx-font".
| |
| hashCode | back to summary |
|---|---|
| public int hashCode() Overrides java. Doc from java. Returns a hash code value for this object. This method is
supported for the benefit of hash tables such as those provided by
The general contract of
| |
| isInherits | back to summary |
|---|---|
| public final boolean isInherits() If true, the value of this property is the same as the parent's computed value of this property.
| |
| isSettable | back to summary |
|---|---|
| public abstract boolean isSettable(S styleable) Check to see if the corresponding property on the given Node is settable. This method is called before any styles are looked up for the given property. It is abstract so that the code can check if the property is settable without expanding the property. Generally, the property is settable if it is not null or is not bound.
| |
| set | back to summary |
|---|---|
| public void set(S styleable, V value, StyleOrigin origin)
Deprecated since 8. This method is no longer called from CSS code.
Use Sets the value of the corresponding property on the given Node.
| |
| toString | back to summary |
|---|---|
| public String toString() Overrides java. Doc from java. Returns a string representation of the object.
Satisfying this method's contract implies a non- | |