Class CascadingStylesheet
- java.lang.Object
-
- ej.mwt.stylesheet.cascading.CascadingStylesheet
-
- All Implemented Interfaces:
Stylesheet
public class CascadingStylesheet extends java.lang.Object implements Stylesheet
Cascading stylesheet implementation strongly inspired by CSS.This stylesheet contains:
- a default style that defines all the attributes,
- a set of rules with a selector and a partial style.
The style of a widget is determined following these steps:
- create an empty result style (no attributes set),
- merge widget with matching selectors rules (set by
getSelectorStyle(Selector)), - recursively merge with inherited attributes of parents (repeat previous step for parent recursively) (see
Widget.getParent()), - merge global style (set by
getDefaultStyle()).
Style). The result style is complete at the end of the resolution.The implementation assumes that the style of the parent is resolved prior to the resolution of its children. It simplifies the cascading resolution because it avoids recursive resolution upward. In other words, that means that the resolution of the styles in a hierarchy must be done from top to bottom. That is the case for the widgets since
Widget.updateStyle()is recursive (seeContainer.updateStyle()).
-
-
Field Summary
Fields Modifier and Type Field Description static intBACKGROUND_INDEXBackground field position in the array of selectors.static intBORDER_INDEXBorder field position in the array of selectors.static intCOLOR_INDEXColor field position in the array of selectors.static java.lang.StringDEBUG_CASCADINGSTYLE_ENABLED_CONSTANTBON boolean constantto enable/disable the cascading stylesheet debug.static intDIMENSION_INDEXDimension field position in the array of selectors.static intEXTRA_FIELD_1_INDEXFirst extra field position in the array of selectors.static intEXTRA_FIELD_2_INDEXSecond extra field position in the array of selectors.static intEXTRA_FIELD_3_INDEXThird extra field position in the array of selectors.static intEXTRA_FIELD_4_INDEXFourth extra field position in the array of selectors.static intEXTRA_FIELD_5_INDEXFifth extra field position in the array of selectors.static intEXTRA_FIELD_6_INDEXSixth extra field position in the array of selectors.static intEXTRA_FIELD_7_INDEXSeventh extra field position in the array of selectors.static intFONT_INDEXFont field position in the array of selectors.static intHORIZONTAL_ALIGNMENT_INDEXHorizontal alignment field position in the array of selectors.static intMARGIN_INDEXMargin field position in the array of selectors.static intPADDING_INDEXPadding field position in the array of selectors.static intVERTICAL_ALIGNMENT_INDEXVertical alignment field position in the array of selectors.
-
Constructor Summary
Constructors Constructor Description CascadingStylesheet()Creates a new cascading stylesheet.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description EditableStylegetDefaultStyle()Gets the default style.EditableStylegetSelectorStyle(Selector selector)Gets the style for a selector.StylegetStyle(Widget widget)Gets the style for a widget.static Selector[]getStyleSources(Style style)Gets the selectors used to create the given style.voidreset()Resets the stylesheet to its initial state.voidresetDefaultStyle()Resets the default style attributes to their initial value.voidresetSelectorStyle(Selector selector)Resets the style attributes for a selector.
-
-
-
Field Detail
-
DIMENSION_INDEX
public static final int DIMENSION_INDEX
Dimension field position in the array of selectors.- See Also:
getStyleSources(Style), Constant Field Values
-
HORIZONTAL_ALIGNMENT_INDEX
public static final int HORIZONTAL_ALIGNMENT_INDEX
Horizontal alignment field position in the array of selectors.- See Also:
getStyleSources(Style), Constant Field Values
-
VERTICAL_ALIGNMENT_INDEX
public static final int VERTICAL_ALIGNMENT_INDEX
Vertical alignment field position in the array of selectors.- See Also:
getStyleSources(Style), Constant Field Values
-
MARGIN_INDEX
public static final int MARGIN_INDEX
Margin field position in the array of selectors.- See Also:
getStyleSources(Style), Constant Field Values
-
BORDER_INDEX
public static final int BORDER_INDEX
Border field position in the array of selectors.- See Also:
getStyleSources(Style), Constant Field Values
-
PADDING_INDEX
public static final int PADDING_INDEX
Padding field position in the array of selectors.- See Also:
getStyleSources(Style), Constant Field Values
-
BACKGROUND_INDEX
public static final int BACKGROUND_INDEX
Background field position in the array of selectors.- See Also:
getStyleSources(Style), Constant Field Values
-
COLOR_INDEX
public static final int COLOR_INDEX
Color field position in the array of selectors.- See Also:
getStyleSources(Style), Constant Field Values
-
FONT_INDEX
public static final int FONT_INDEX
Font field position in the array of selectors.- See Also:
getStyleSources(Style), Constant Field Values
-
EXTRA_FIELD_1_INDEX
public static final int EXTRA_FIELD_1_INDEX
First extra field position in the array of selectors.- See Also:
getStyleSources(Style), Constant Field Values
-
EXTRA_FIELD_2_INDEX
public static final int EXTRA_FIELD_2_INDEX
Second extra field position in the array of selectors.- See Also:
getStyleSources(Style), Constant Field Values
-
EXTRA_FIELD_3_INDEX
public static final int EXTRA_FIELD_3_INDEX
Third extra field position in the array of selectors.- See Also:
getStyleSources(Style), Constant Field Values
-
EXTRA_FIELD_4_INDEX
public static final int EXTRA_FIELD_4_INDEX
Fourth extra field position in the array of selectors.- See Also:
getStyleSources(Style), Constant Field Values
-
EXTRA_FIELD_5_INDEX
public static final int EXTRA_FIELD_5_INDEX
Fifth extra field position in the array of selectors.- See Also:
getStyleSources(Style), Constant Field Values
-
EXTRA_FIELD_6_INDEX
public static final int EXTRA_FIELD_6_INDEX
Sixth extra field position in the array of selectors.- See Also:
getStyleSources(Style), Constant Field Values
-
EXTRA_FIELD_7_INDEX
public static final int EXTRA_FIELD_7_INDEX
Seventh extra field position in the array of selectors.- See Also:
getStyleSources(Style), Constant Field Values
-
DEBUG_CASCADINGSTYLE_ENABLED_CONSTANT
public static final java.lang.String DEBUG_CASCADINGSTYLE_ENABLED_CONSTANT
BON boolean constantto enable/disable the cascading stylesheet debug.If enabled, "ej.mwt.debug.cascadingstyle.enabled" must also be set.
- See Also:
- Constant Field Values
-
-
Method Detail
-
getStyle
public Style getStyle(Widget widget)
Description copied from interface:StylesheetGets the style for a widget.- Specified by:
getStylein interfaceStylesheet- Parameters:
widget- the widget to get the style for.- Returns:
- the style applied to the widget.
-
getDefaultStyle
public EditableStyle getDefaultStyle()
Gets the default style. The style can be modified.This style is used as the root style of the cascading resolution. Its initial attributes are equal to the values defined in
DefaultStyle.- Returns:
- the editable default style.
-
resetDefaultStyle
public void resetDefaultStyle()
Resets the default style attributes to their initial value.
-
getSelectorStyle
public EditableStyle getSelectorStyle(Selector selector)
Gets the style for a selector. The style can be modified.This style is applied to the widgets matching the selector.
- Parameters:
selector- the selector.- Returns:
- the editable style for the given selector.
-
resetSelectorStyle
public void resetSelectorStyle(Selector selector)
Resets the style attributes for a selector.- Parameters:
selector- the selector.
-
reset
public void reset()
Resets the stylesheet to its initial state.
-
getStyleSources
@Nullable public static Selector[] getStyleSources(Style style)
Gets the selectors used to create the given style.The returned array contains 16 entries: one for each parameter of the style. For each entry, the selector belongs to the rule selected to fill the matching parameter. A
nullentry means that the parameter is from the default style.The BON boolean constant
DEBUG_CASCADINGSTYLE_ENABLED_CONSTANTmust be set totruefor this method to work. Beware that enabling that feature may downgrade the performances (more time to compute a style and more Java heap used).- Parameters:
style- the style to get the sources for- Returns:
- the array of selectors
- Throws:
java.lang.IllegalArgumentException- if the given style does not come from aCascadingStylesheet
-
-