class ColumnRule extends AbstractCssProperty<ColumnRule> implements StateChangeInformer<CssProperty> {

    public ColumnRule setColumnRuleWidth(
            final ColumnRuleWidth columnRuleWidth) {

        final StringBuilder cssValueBuilder = new StringBuilder();

        if (columnRuleWidth != null) {
            cssValueBuilder.append(columnRuleWidth.getCssValue());
            cssValueBuilder.append(' ');
        }

        if (columnRuleStyle != null) {
            cssValueBuilder.append(columnRuleStyle.getCssValue()).append(' ');
        }

        if (columnRuleColor != null) {
            cssValueBuilder.append(columnRuleColor.getCssValue());
        }

        final String trimmedCssValue = StringBuilderUtil
                .getTrimmedString(cssValueBuilder).toString();
        cssValue = trimmedCssValue.isEmpty() ? INHERIT : trimmedCssValue;

        if (this.columnRuleWidth != null) {
            this.columnRuleWidth.setAlreadyInUse(false);
        }

        this.columnRuleWidth = columnRuleWidth;

        if (this.columnRuleWidth != null) {
            this.columnRuleWidth.setStateChangeInformer(this);
            this.columnRuleWidth.setAlreadyInUse(true);
        }

        if (getStateChangeInformer() != null) {
            getStateChangeInformer().stateChanged(this);
        }

        return this;
    }

    public  ColumnRule();
    public  ColumnRule(final String cssValue);
    public  ColumnRule(final ColumnRule columnRule);

}