- From: Yves Lafon via cvs-syncmail <cvsmail@w3.org>
- Date: Fri, 21 Oct 2011 01:49:09 +0000
- To: www-validator-cvs@w3.org
Update of /sources/public/2002/css-validator/org/w3c/css/media/css2 In directory hutz:/tmp/cvs-serv28700/org/w3c/css/media/css2 Added Files: AtRuleMedia.java Log Message: redone the Media Features of media queries, up to date per http://www.w3.org/TR/2010/CR-css3-mediaqueries-20100727/, todo, parsing of media in HTML form --- NEW FILE: AtRuleMedia.java --- // $Id: AtRuleMedia.java,v 1.1 2011/10/21 01:49:07 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.media.css2; import org.w3c.css.media.Media; import org.w3c.css.media.MediaFeature; import org.w3c.css.parser.AtRule; import org.w3c.css.util.ApplContext; import org.w3c.css.util.InvalidParamException; import java.util.ArrayList; /** * @spec http://www.w3.org/TR/2008/REC-CSS2-20080411/media.html#media-types * @since CSS2 */ public class AtRuleMedia extends org.w3c.css.media.AtRuleMedia { static final String[] mediaCSS2 = { "all", "aural", "braille", "embossed", "handheld", "print", "projection", "screen", "tty", "tv" }; /** * Adds a medium. * * @throws InvalidParamException the medium doesn't exist */ public org.w3c.css.media.AtRuleMedia addMedia(String restrictor, String medium, ApplContext ac) throws InvalidParamException { if (restrictor != null) { // media restrictor not supported in CSS2 throw new InvalidParamException("nomediarestrictor", restrictor, ac); } medium = medium.toLowerCase(); for (String s : mediaCSS2) { if (medium.equals(s)) { allMedia.add(new Media(s)); return this; } } // FIXME we can check if media exists in other CSS versions throw new InvalidParamException("media", medium, ac); } /** * Mediafeatures are not supported in CSS2 * * @param feature * @param ac * @throws InvalidParamException */ public void addMediaFeature(MediaFeature feature, ApplContext ac) throws InvalidParamException { throw new InvalidParamException("nomediafeature", feature.toString(), ac); } /** * The second must be exactly the same as this one * so we check that each one match each other */ public boolean canApply(AtRule atRule) { try { org.w3c.css.media.AtRuleMedia second = (org.w3c.css.media.AtRuleMedia) atRule; return (canMatch(second) && second.canMatch(this)); } catch (ClassCastException cce) { return false; } } /** * The second must only match this one */ public boolean canMatch(AtRule atRule) { try { org.w3c.css.media.AtRuleMedia second = (org.w3c.css.media.AtRuleMedia) atRule; ArrayList<Media> otherMediaList = second.getMediaList(); for (Media m : otherMediaList) { if (!allMedia.contains(m)) { return false; } } return true; } catch (ClassCastException cce) { return false; } } public String getValueString() { StringBuilder sb = new StringBuilder(); boolean first = true; for (Media m : allMedia) { if (first) { first = false; } else { sb.append(", "); } sb.append(m.toString()); } return sb.toString(); } /** * Returns a string representation of the object. */ public String toString() { StringBuilder sb = new StringBuilder(); sb.append('@').append(keyword()).append(' '); sb.append(getValueString()); return sb.toString(); } }
Received on Friday, 21 October 2011 01:49:15 UTC