All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.w3c.css.properties.css21.CssBackgroundCSS21 Maven / Gradle / Ivy

The newest version!
// $Id: CssBackgroundCSS21.java,v 1.6 2010-01-05 13:49:48 ylafon Exp $
// Author: Jean-Guilhem Rouel
// Revised by: Yves Lafon
// (c) COPYRIGHT MIT, ERCIM and Keio, 2005-2008.
// Please first read the full copyright statement in file COPYRIGHT.html
package org.w3c.css.properties.css21;

import org.w3c.css.properties.css2.CssBackgroundAttachmentCSS2;
import org.w3c.css.properties.css2.CssBackgroundCSS2;
import org.w3c.css.properties.css2.CssBackgroundImageCSS2;
import org.w3c.css.properties.css2.CssBackgroundRepeatCSS2;
import org.w3c.css.util.ApplContext;
import org.w3c.css.util.InvalidParamException;
import org.w3c.css.values.CssExpression;
import org.w3c.css.values.CssIdent;
import org.w3c.css.values.CssValue;
import org.w3c.css.values.CssTypes;

/**
 * CssBackgroundCSS21
* Created: Aug 31, 2005 2:03:41 PM
*/ public class CssBackgroundCSS21 extends CssBackgroundCSS2 { /** * Create a new CssBackgroundCSS2 */ public CssBackgroundCSS21() { super(); } /** * Set the value of the property * * @param expression The expression for this property * @throws InvalidParamException The expression is incorrect */ public CssBackgroundCSS21(ApplContext ac, CssExpression expression, boolean check) throws InvalidParamException { CssValue val; char op = SPACE; boolean find = true; CssExpression background_position_expression = null; // too many values if (check && expression.getCount() > 6) { throw new InvalidParamException("unrecognize", ac); } setByUser(); boolean manyValues = (expression.getCount() > 1); while (find) { val = expression.getValue(); if (val == null) { break; } op = expression.getOperator(); // if there are many values, we can't have inherit as one of them if (manyValues && val.equals(inherit)) { throw new InvalidParamException("unrecognize", null, null, ac); } switch (val.getType()) { case CssTypes.CSS_STRING: if (check) { throw new InvalidParamException("unrecognize", ac); } find = false; break; case CssTypes.CSS_URL: if (getImage() == null) { setImage(new CssBackgroundImageCSS2(ac, expression)); continue; } find = false; break; case CssTypes.CSS_COLOR: if (getColor2() == null) { setColor(new CssBackgroundColorCSS21(ac, expression)); continue; } find = false; break; case CssTypes.CSS_NUMBER: case CssTypes.CSS_PERCENTAGE: case CssTypes.CSS_LENGTH: if (background_position_expression == null) { background_position_expression = new CssExpression(); } background_position_expression.addValue(val); expression.next(); find = true; break; case CssTypes.CSS_IDENT: // the hard part, as ident can be from different subproperties find = false; CssIdent identval = (CssIdent) val; // check background-image ident if (CssBackgroundImageCSS2.checkMatchingIdent(identval)) { if (getImage() == null) { setImage(new CssBackgroundImageCSS2(ac, expression)); find = true; } break; } // check background-repeat ident if (CssBackgroundRepeatCSS2.checkMatchingIdent(identval)) { if (getRepeat() == null) { setRepeat(new CssBackgroundRepeatCSS2(ac, expression)); find = true; } break; } // check background-attachment ident if (CssBackgroundAttachmentCSS2.checkMatchingIdent(identval)) { if (getAttachment() == null) { setAttachment(new CssBackgroundAttachmentCSS2(ac, expression)); find = true; } break; } // check backgorund-position ident if (CssBackgroundPositionCSS21.checkMatchingIdent(identval)) { if (background_position_expression == null) { background_position_expression = new CssExpression(); } background_position_expression.addValue(val); expression.next(); find = true; break; } if (getColor2() == null) { try { setColor(new CssBackgroundColorCSS21(ac, expression)); find = true; break; } catch (InvalidParamException e) { // nothing to do, image will test this value } } default: if (check) { throw new InvalidParamException("unrecognize", ac); } find = false; } if (check && !find) { throw new InvalidParamException("unrecognize", ac); } if (op != SPACE) { throw new InvalidParamException("operator", Character.toString(op), ac); } } if (background_position_expression != null) { setPosition(new CssBackgroundPositionCSS21(ac, background_position_expression, check)); } } public CssBackgroundCSS21(ApplContext ac, CssExpression expression) throws InvalidParamException { this(ac, expression, false); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy