// $Id: CssListStyleCSS21.java,v 1.2 2005/09/14 15:14:58 ylafon Exp $
// Author: Jean-Guilhem Rouel
// (c) COPYRIGHT MIT, ERCIM and Keio, 2005.
// Please first read the full copyright statement in file COPYRIGHT.html
package org.w3c.css.properties.css21;
import org.w3c.css.properties.css1.CssListStyleCSS2;
import org.w3c.css.properties.css1.CssListStyleImageCSS2;
import org.w3c.css.properties.css1.CssListStylePositionCSS2;
import org.w3c.css.util.ApplContext;
import org.w3c.css.util.InvalidParamException;
import org.w3c.css.values.CssExpression;
import org.w3c.css.values.CssValue;
/**
* CssListStyleCSS21
* Created: Aug 31, 2005 12:09:48 PM
*/
public class CssListStyleCSS21 extends CssListStyleCSS2 {
/**
* Create a new CssListStyleCSS2
*/
public CssListStyleCSS21() {
// nothing to do
}
/**
* Create a new CssListStyleCSS2
*
* @param expression The expression for this property
* @exception InvalidParamException Values are incorrect
*/
public CssListStyleCSS21(ApplContext ac, CssExpression expression,
boolean check) throws InvalidParamException {
int exprLength = expression.getCount();
if(check && exprLength > 3) {
throw new InvalidParamException("unrecognize", ac);
}
CssValue val = expression.getValue();
char op = SPACE;
boolean find = true;
setByUser();
if (val.equals(inherit)) {
if(exprLength > 1) {
throw new InvalidParamException("unrecognize", ac);
}
setInheritedValue(true);
expression.next();
return;
}
while (find) {
find = false;
val = expression.getValue();
op = expression.getOperator();
if(val != null && val.equals(inherit)) {
throw new InvalidParamException("unrecognize", ac);
}
if ((getListStyleType() == null) && (val != null)) {
try {
setListStyleType(new CssListStyleTypeCSS21(ac, expression));
find = true;
} catch (InvalidParamException e) {
}
}
if (!find && (getListStyleImage() == null) && (val != null)) {
try {
setListStyleImage(new CssListStyleImageCSS2(ac, expression));
find = true;
} catch (InvalidParamException e) {
}
}
if (!find && (val != null) && (getListStylePosition() == null)) {
setListStylePosition(new CssListStylePositionCSS2(ac, expression));
find = true;
}
if(val != null && !find) {
throw new InvalidParamException("unrecognize", ac);
}
if (op != SPACE) {
throw new InvalidParamException("operator",
((new Character(op)).toString()),
ac);
}
}
}
public CssListStyleCSS21(ApplContext ac, CssExpression expression)
throws InvalidParamException {
this(ac, expression, false);
}
}