Example usage for org.w3c.dom.css CSSValue setCssText

List of usage examples for org.w3c.dom.css CSSValue setCssText

Introduction

In this page you can find the example usage for org.w3c.dom.css CSSValue setCssText.

Prototype

public void setCssText(String cssText) throws DOMException;

Source Link

Document

A string representation of the current value.

Usage

From source file:com.gargoylesoftware.htmlunit.javascript.host.css.CSSStyleDeclaration.java

/**
 * Gets the CSS property value./* www. ja  va  2s .  c  om*/
 * @param name the name of the property to retrieve
 * @return the value
 */
@JsxFunction(@WebBrowser(FF))
public CSSValue getPropertyCSSValue(final String name) {
    LOG.info("getPropertyCSSValue(" + name + "): getPropertyCSSValue support is experimental");
    // following is a hack, just to have basic support for getPropertyCSSValue
    // TODO: rework the whole CSS processing here! we should *always* parse the style!
    if (styleDeclaration_ == null) {
        final String uri = getDomNodeOrDie().getPage().getWebResponse().getWebRequest().getUrl()
                .toExternalForm();
        final String styleAttribute = jsElement_.getDomNodeOrDie().getAttribute("style");
        final InputSource source = new InputSource(new StringReader(styleAttribute));
        source.setURI(uri);
        final ErrorHandler errorHandler = getWindow().getWebWindow().getWebClient().getCssErrorHandler();
        final CSSOMParser parser = new CSSOMParser(new SACParserCSS3());
        parser.setErrorHandler(errorHandler);
        try {
            styleDeclaration_ = parser.parseStyleDeclaration(source);
        } catch (final IOException e) {
            throw new RuntimeException(e);
        }
    }
    org.w3c.dom.css.CSSValue cssValue = styleDeclaration_.getPropertyCSSValue(name);
    if (cssValue == null) {
        final CSSValueImpl newValue = new CSSValueImpl();
        newValue.setFloatValue(CSSPrimitiveValue.CSS_PX, 0);
        cssValue = newValue;
    }

    // FF has spaces next to ","
    final String cssText = cssValue.getCssText();
    if (cssText.startsWith("rgb(")) {
        final String formatedCssText = StringUtils.replace(cssText, ",", ", ");
        cssValue.setCssText(formatedCssText);
    }

    return new CSSPrimitiveValue(jsElement_, (org.w3c.dom.css.CSSPrimitiveValue) cssValue);
}