/*******************************************************************************
 * Copyright (c) 2004 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 * 
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/
package org.eclipse.wst.css.core.document;



import org.w3c.dom.css.CSSFontFaceRule;
import org.w3c.dom.css.CSSRule;
import org.w3c.dom.css.CSSUnknownRule;
import org.w3c.dom.stylesheets.MediaList;

/**
 * 
 */
public interface ICSSDocument extends ICSSNode {

	/**
	 * @return org.w3c.dom.css.CSSCharsetRule
	 */
	ICSSCharsetRule createCSSCharsetRule();

	/**
	 * @return org.w3c.dom.css.CSSFontFaceRule
	 */
	CSSFontFaceRule createCSSFontFaceRule();

	/**
	 * @return org.w3c.dom.css.CSSImportRule
	 */
	ICSSImportRule createCSSImportRule();

	/**
	 * @return org.w3c.dom.css.ICSSMediaRule
	 */
	ICSSMediaRule createCSSMediaRule();

	/**
	 * @return org.w3c.dom.css.CSSPageRule
	 */
	ICSSPageRule createCSSPageRule();

	/**
	 * @return org.w3c.dom.css.CSSPrimitiveValue
	 */
	ICSSPrimitiveValue createCSSPrimitiveValue(short primitiveType);

	/**
	 * @return org.w3c.dom.css.CSSRule
	 * @param rule
	 *            java.lang.String
	 */
	CSSRule createCSSRule(String rule);

	/**
	 * @return org.w3c.dom.css.CSSStyleDeclaration
	 */
	ICSSStyleDeclaration createCSSStyleDeclaration();

	/**
	 * @return com.ibm.sed.treemodel.cei.CSSStyleDeclItem
	 * @param propertyName
	 *            java.lang.String
	 */
	ICSSStyleDeclItem createCSSStyleDeclItem(String propertyName);

	/**
	 * @return org.w3c.dom.css.CSSStyleRule
	 */
	ICSSStyleRule createCSSStyleRule();

	/**
	 * @return org.w3c.dom.css.CSSUnknownRule
	 */
	CSSUnknownRule createCSSUnknownRule();

	/**
	 * @return org.w3c.dom.stylesheets.MediaList
	 */
	MediaList createMediaList();

	/**
	 * @return com.ibm.sed.css.interfaces.ICSSModel
	 */
	ICSSModel getModel();

	/**
	 * @return boolean
	 */
	boolean isDocument();
}