- 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
In directory hutz:/tmp/cvs-serv28700/org/w3c/css/media
Added Files:
AtRuleMedia.java Media.java MediaFeature.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: Media.java ---
package org.w3c.css.media;
import java.util.ArrayList;
public class Media {
boolean only;
boolean not;
String media;
ArrayList<MediaFeature> features;
public Media() {
}
public Media(String media) {
this.media = media;
}
public void setOnly(boolean only) {
this.only = only;
}
public boolean getOnly() {
return not;
}
public void setNot(boolean not) {
this.not = not;
}
public boolean getNot() {
return not;
}
public void setMedia(String media) {
this.media = media;
}
public String getMedia() {
return media;
}
public void addFeature(MediaFeature mf) {
if (features == null) {
features = new ArrayList<MediaFeature>();
}
features.add(mf);
}
public String toString() {
// simple case, return the media string
if (!only && !not && features == null) {
return media;
}
StringBuilder sb = new StringBuilder();
boolean printAnd = false;
if (only) {
sb.append("only ");
} else if (not) {
sb.append("not ");
}
// special case "media and (...)" or directly "(...)"
if (media != null) {
sb.append(media);
printAnd = true;
}
if (features != null) {
for (MediaFeature mf : features) {
if (printAnd) {
sb.append(" and");
} else {
printAnd = true;
}
sb.append(" (").append(mf.toString()).append(')');
}
}
return sb.toString();
}
}
--- NEW FILE: AtRuleMedia.java ---
// $Id: AtRuleMedia.java,v 1.1 2011/10/21 01:49:06 ylafon Exp $
//
// (c) COPYRIGHT MIT, ECIM and Keio University, 2011.
// Please first read the full copyright statement in file COPYRIGHT.html
package org.w3c.css.media;
import org.w3c.css.parser.AtRule;
import org.w3c.css.util.ApplContext;
import org.w3c.css.util.CssVersion;
import org.w3c.css.util.InvalidParamException;
import java.util.ArrayList;
public abstract class AtRuleMedia extends AtRule {
public ArrayList<Media> allMedia = new ArrayList<Media>();
/**
* Adds a medium.
*
* @throws InvalidParamException the medium doesn't exist
*/
public abstract AtRuleMedia addMedia(String restrictor, String medium,
ApplContext ac) throws InvalidParamException;
/**
* Add a media feature to the current media, like (color:1)
*
* @param feature, the CssProperty
* @since CSS3
*/
public abstract void addMediaFeature(MediaFeature feature, ApplContext ac)
throws InvalidParamException;
/**
* Returns the at rule keyword
*/
public final String keyword() {
return "media";
}
public boolean isEmpty() {
return allMedia.isEmpty();
}
public ArrayList<Media> getMediaList() {
return allMedia;
}
public String getCurrentMedia() {
if (!allMedia.isEmpty()) {
return allMedia.get(allMedia.size()-1).media;
}
return null;
}
/**
* The second must be exactly the same of this one
*/
public boolean canApply(AtRuleMedia atRule) {
return false;
}
/**
* See if two rules can match (ie: one have thing in common)
*/
public boolean canMatch(AtRuleMedia atRule) {
return false;
}
/**
* Use to display the value part of the @media rule
* used where the value is used, like as an option in @import
*
* @return a String
*/
public abstract String getValueString();
public static final AtRuleMedia getInstance(CssVersion version) {
switch (version) {
case CSS1:
return new org.w3c.css.media.css1.AtRuleMedia();
case CSS2:
return new org.w3c.css.media.css2.AtRuleMedia();
case CSS21:
return new org.w3c.css.media.css21.AtRuleMedia();
case CSS3:
return new org.w3c.css.media.css3.AtRuleMedia();
}
return null;
}
}
--- NEW FILE: MediaFeature.java ---
package org.w3c.css.media;
import org.w3c.css.css.StyleSheetOrigin;
import org.w3c.css.util.ApplContext;
import org.w3c.css.util.InvalidParamException;
import org.w3c.css.values.CssValue;
public abstract class MediaFeature implements StyleSheetOrigin {
public CssValue value;
public String modifier;
/**
* The origin of this property.
* the author's style sheets override the reader's style sheet which
* override the UA's default values. An imported style sheet has the same
* origin as the style sheet from which it is imported.
*
* @see StyleSheetOrigin#BROWSER
* @see StyleSheetOrigin#READER
* @see StyleSheetOrigin#AUTHOR
*/
public int origin;
/**
* the position of the first character of this value.
*/
public int line;
/**
* the origin file.
*/
public String sourceFile;
public abstract boolean equals(MediaFeature other);
public abstract String getFeatureName();
// because of clashes in feature names / modifier, we can't check
// reliably unwanted modifiers, they are noy only unknown media features
public void setModifier(ApplContext ac, String modifier)
throws InvalidParamException {
// if (modifier.equals("min") || modifier.equals("max")) {
this.modifier = modifier;
// } else {
// throw new InvalidParamException("invalidmediafeaturemodifier",
// getFeatureName(), modifier, ac);
// }
}
/**
* Update the source file and the line.
* Overrides this method for a macro
*
* @param line The line number where this property is defined
* @param source The source file where this property is defined
*/
public void setInfo(int line, String source) {
this.line = line;
this.sourceFile = source;
}
/**
* Fix the origin of this property
* Overrides this method for a macro
*
* @param origin, an <EM>int</EM>
* @see #BROWSER
* @see #READER
* @see #AUTHOR
*/
public void setOrigin(int origin) {
this.origin = origin;
}
/**
* Returns the attribute origin
*
* @return the value of the attribute
*/
public int getOrigin() {
return origin;
}
/**
* Returns the source file.
*/
public final String getSourceFile() {
return sourceFile;
}
/**
* Returns the line number in the source file.
*/
public final int getLine() {
return line;
}
/**
* Returns a string representation of the object.
*/
public String toString() {
if (value == null) {
return getFeatureName();
}
StringBuilder sb = new StringBuilder();
if (modifier != null) {
sb.append(modifier).append('-');
}
sb.append(getFeatureName());
sb.append(':').append(value.toString());
return sb.toString();
}
}
Received on Friday, 21 October 2011 01:49:11 UTC