/* StyleSheet.java
Purpose:
Description:
History:
Thu Jun 2 12:32:59 2005, Created by tomyeh
Copyright (C) 2005 Potix Corporation. All Rights Reserved.
{{IS_RIGHT
This program is distributed under LGPL Version 3.0 in the hope that
it will be useful, but WITHOUT ANY WARRANTY.
}}IS_RIGHT
*/
package org.zkoss.html;
import org.zkoss.lang.Objects;
/**
* Represents a style sheet.
*
* @author tomyeh
* @since 6.0.0
*/
public class StyleSheet implements java.io.Serializable, Cloneable {
private static final long serialVersionUID = 20100514L;
private final String _href, _type, _content, _media;
/** Creates by specifying the file to contain the style sheets.
*
* @param href URI of the file containing the style sheets.
* @param type the type. If null, "text/css" is assumed.
*/
public StyleSheet(String href, String type) {
this(href, type, null, false);
}
/** Creates by assigning the content (style sheets).
*
* @param content the style content or an URI to an external file.
* @param type the type. If null, "text/css" is assumed.
* @param byContent the content argument is the style content, or
* an URI to an external content
*/
public StyleSheet(String content, String type, boolean byContent) {
this(content, type, null, byContent);
}
/** Creates by assigning the content (style sheets).
*
* @param content the style content or an URI to an external file.
* @param type the type. If null, "text/css" is assumed.
* @param media the media. If null, it is omitted.
* @param byContent the content argument is the style content, or
* an URI to an external content
*/
public StyleSheet(String content, String type, String media, boolean byContent) {
if (content == null)
throw new IllegalArgumentException("null content");
if (byContent) {
_href = null;
_content = content;
} else {
_href = content;
_content = null;
}
_type = type != null && type.length() != 0 ? type: "text/css";
_media = media != null && media.length() != 0 ? media: null;
}
/** Returns the href that contains the style sheets, or null if
* {@link #getContent} is not null.
*/
public String getHref() {
return _href;
}
/** Returns the type. */
public String getType() {
return _type;
}
/** Returns the media, or null if not available.
* <p>Refer to <a href="http://www.w3.org/TR/CSS2/media.html">media-depedent style sheet</a> for details.
*/
public String getMedia() {
return _media;
}
/** Returns the style sheets, or null if {@link #getHref} is not null.
*/
public String getContent() {
return _content;
}
//-- cloneable --//
public Object clone() {
try {
return super.clone();
} catch (CloneNotSupportedException e) {
throw new InternalError();
}
}
//-- Object --//
public String toString() {
return "[href: "+_href+" type="+_type+']';
}
public int hashCode() {
return _href.hashCode() + _type.hashCode();
}
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof StyleSheet))
return false;
final StyleSheet ss = (StyleSheet)o;
return Objects.equals(ss._href, _href)
&& Objects.equals(ss._type, _type)
&& Objects.equals(ss._content, _content)
&& Objects.equals(ss._media, _media);
}
}