CVS 2002/css-validator/org/w3c/css/properties/css21

Update of /sources/public/2002/css-validator/org/w3c/css/properties/css21
In directory roscoe:/tmp/cvs-serv1535/css21

Modified Files:
	CssElevation.java 
Log Message:
elevation revamped

--- /sources/public/2002/css-validator/org/w3c/css/properties/css21/CssElevation.java	2011/09/11 20:38:54	1.2
+++ /sources/public/2002/css-validator/org/w3c/css/properties/css21/CssElevation.java	2012/12/18 19:32:30	1.3
@@ -1,12 +1,11 @@
 //
-// $Id: CssElevation.java,v 1.2 2011/09/11 20:38:54 ylafon Exp $
+// $Id: CssElevation.java,v 1.3 2012/12/18 19:32:30 ylafon Exp $
 //
 // (c) COPYRIGHT MIT, ERCIM and Keio University 2011
 // Please first read the full copyright statement in file COPYRIGHT.html
 
 package org.w3c.css.properties.css21;
 
-import org.w3c.css.properties.css.CssProperty;
 import org.w3c.css.util.ApplContext;
 import org.w3c.css.util.InvalidParamException;
 import org.w3c.css.values.CssAngle;
@@ -15,159 +14,84 @@
 import org.w3c.css.values.CssTypes;
 import org.w3c.css.values.CssValue;
 
-
 /**
  * @spec http://www.w3.org/TR/2011/REC-CSS2-20110607/aural.html#propdef-elevation
- *
- * @version $Revision: 1.2 $
  */
 public class CssElevation extends org.w3c.css.properties.css.CssElevation {
+	public static final CssIdent[] allowed_values;
 
-    CssIdent identValue;
-    CssAngle angleValue;
-
-    private static int[] hash_values;
-    private static CssIdent defaultValue;
-    private static String[] elValues = {"below", "level", "above",
-            "higher", "lower"};
-
-
-    static {
-        defaultValue = new CssIdent("level");
-        hash_values = new int[elValues.length];
-        for (int i = 0; i < elValues.length; i++)
-            hash_values[i] = elValues[i].hashCode();
-    }
-
-    /**
-     * Create a new ACssElevation
-     */
-    public CssElevation() {
-    }
-
-    // check that the ident is a valid one
-    private boolean checkIdent(CssIdent ident) {
-        int hash = ident.hashCode();
-        for (int h : hash_values) {
-            if (h == hash) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    /**
-     * Creates a new ACssElevation
-     *
-     * @param expression The expression for this property
-     * @throws org.w3c.css.util.InvalidParamException
-     *          Values are incorrect
-     */
-    public CssElevation(ApplContext ac, CssExpression expression,
-                        boolean check) throws InvalidParamException {
-        if (check && expression.getCount() > 1) {
-            throw new InvalidParamException("unrecognize", ac);
-        }
-
-        CssValue val = expression.getValue();
-        //int index;
-        setByUser();
-
-        switch (val.getType()) {
-            case CssTypes.CSS_IDENT:
-                CssIdent ident = (CssIdent) val;
-                if (inherit.equals(ident)) {
-                    identValue = inherit;
-                    expression.next();
-                    return;
-                }
-                if (checkIdent(ident)) {
-                    identValue = ident;
-                    expression.next();
-                    return;
-                }
-                throw new InvalidParamException("unrecognize", ac);
-            case CssTypes.CSS_ANGLE:
-                angleValue = (CssAngle) val;
-                float v = angleValue.getDegree();
-                if (v > 90 && v < 270) {
-                    throw new InvalidParamException("elevation.range", ac);
-                }
-                expression.next();
-                return;
-        }
-
-        throw new InvalidParamException("value",
-                expression.getValue().toString(),
-                getPropertyName(), ac);
-    }
-
-    public CssElevation(ApplContext ac, CssExpression expression)
-            throws InvalidParamException {
-        this(ac, expression, false);
-    }
-
-    /**
-     * Returns the value of this property
-     */
-    public Object get() {
-        if (identValue != null) {
-            return identValue;
-        }
-        return angleValue;
-    }
-
-    /**
-     * Returns true if this property is "softly" inherited
-     * e.g. his value is equals to inherit
-     */
-    public boolean isSoftlyInherited() {
-        return inherit.equals(identValue);
-    }
-
-    /**
-     * Returns a string representation of the object.
-     */
-    public String toString() {
-        if (identValue != null) {
-            return identValue.toString();
-        }
-        return angleValue.toString();
-    }
-
-
-    /**
-     * Compares two properties for equality.
-     *
-     * @param property The other property.
-     */
-    public boolean equals(CssProperty property) {
-        CssElevation other;
-        try {
-            other = (CssElevation) property;
-        } catch (ClassCastException cc) {
-            return false;
-        }
-        if (identValue != null) {
-            return ((angleValue == null) && (other.angleValue == null) &&
-                    (identValue.equals(other.identValue)));
-        }
-        return ((other.identValue == null) &&
-                (angleValue.equals(other.angleValue)));
-    }
-
-
-    private CssIdent checkIdent(ApplContext ac, CssIdent ident)
-            throws InvalidParamException {
-        int hash = ident.hashCode();
-        for (int i = 0; i < elValues.length; i++) {
-            if (hash_values[i] == hash) {
-                return ident;
-            }
-        }
-
-        throw new InvalidParamException("value", ident.toString(),
-                getPropertyName(), ac);
-    }
+	static {
+		String[] _allowed_values = {"below", "level", "above",
+				"higher", "lower"};
+		int i = 0;
+		allowed_values = new CssIdent[_allowed_values.length];
+		for (String s : _allowed_values) {
+			allowed_values[i++] = CssIdent.getIdent(s);
+		}
+	}
+
+	public static final CssIdent getAllowedIdent(CssIdent ident) {
+		for (CssIdent id : allowed_values) {
+			if (id.equals(ident)) {
+				return id;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Create a new CssElevation
+	 */
+	public CssElevation() {
+	}
+
+	/**
+	 * Creates a new ACssElevation
+	 *
+	 * @param expression The expression for this property
+	 * @throws org.w3c.css.util.InvalidParamException
+	 *          Values are incorrect
+	 */
+	public CssElevation(ApplContext ac, CssExpression expression,
+						boolean check) throws InvalidParamException {
+		if (check && expression.getCount() > 1) {
+			throw new InvalidParamException("unrecognize", ac);
+		}
+
+		CssValue val = expression.getValue();
+		setByUser();
+
+		switch (val.getType()) {
+			case CssTypes.CSS_ANGLE:
+				// TODO getAngle()
+				CssAngle a = (CssAngle) value;
+				float v = a.getDegree();
+				if (v > 90 && v < 270) {
+					throw new InvalidParamException("elevation.range", ac);
+				}
+				value = val;
+				break;
+			case CssTypes.CSS_IDENT:
+				CssIdent ident = (CssIdent) val;
+				if (inherit.equals(ident)) {
+					value = inherit;
+					break;
+				}
+				value = getAllowedIdent(ident);
+				if (value != null) {
+					break;
+				}
+			default:
+				throw new InvalidParamException("value",
+						val.toString(),
+						getPropertyName(), ac);
+		}
+		expression.next();
+	}
+
+	public CssElevation(ApplContext ac, CssExpression expression)
+			throws InvalidParamException {
+		this(ac, expression, false);
+	}
 }
 

Received on Tuesday, 18 December 2012 19:32:31 UTC