/*
* Copyright (c) 1999 World Wide Web Consortium
* (Massachusetts Institute of Technology, Institut National de Recherche
* en Informatique et en Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*
* $Id: DocumentHandler.java 477010 2006-11-20 02:54:38Z mrglavas $
*/
package org.w3c.css.sac;
/**
* This is the main interface that most CSS applications implement: if the
* application needs to be informed of basic parsing events, it implements this
* interface and registers an instance with the CSS parser using the
* setCSSHandler method.
*
* @author Philippe Le Hegaret
* @version $Revision: 477010 $
*/
public interface DocumentHandler {
/**
* Receive notification of the beginning of a style sheet.
*
* The CSS parser will invoke this method only once, before any other
* methods in this interface.
*
* @param source
* The URI of the style sheet. @@TODO can be NULL ! (inline style
* sheet)
* @exception CSSException
* Any CSS exception, possibly wrapping another exception.
*/
public void startDocument(InputSource source) throws CSSException;
/**
* Receive notification of the end of a document.
*
* The CSS parser will invoke this method only once, and it will be the last
* method invoked during the parse. The parser shall not invoke this method
* until it has either abandoned parsing (because of an unrecoverable error)
* or reached the end of input.
*
* @param source
* The URI of the style sheet.
* @exception CSSException
* Any CSS exception, possibly wrapping another exception.
*/
public void endDocument(InputSource source) throws CSSException;
/**
* Receive notification of a comment. If the comment appears in a
* declaration (e.g. color: /* comment * / blue;), the parser notifies the
* comment before the declaration.
*
* @param text
* The comment.
* @exception CSSException
* Any CSS exception, possibly wrapping another exception.
*/
public void comment(String text) throws CSSException;
/**
* Receive notification of an unknown rule t-rule not supported by this
* parser.
*
* @param atRule
* -rule The complete ignored at-rule.
* @exception CSSException
* Any CSS exception, possibly wrapping another exception.
*/
public void ignorableAtRule(String atRule) throws CSSException;
/**
* Receive notification of an unknown rule t-rule not supported by this
* parser.
*
* @param prefix
* <code>null</code> if this is the default namespace
* @param uri
* The URI for this namespace.
* @exception CSSException
* Any CSS exception, possibly wrapping another exception.
*/
public void namespaceDeclaration(String prefix, String uri)
throws CSSException;
/**
* Receive notification of a import statement in the style sheet.
*
* @param uri
* The URI of the imported style sheet.
* @param media
* The intended destination media for style information.
* @param defaultNamespaceURI
* The default namespace URI for the imported style sheet.
* @exception CSSException
* Any CSS exception, possibly wrapping another exception.
*/
public void importStyle(String uri, SACMediaList media,
String defaultNamespaceURI) throws CSSException;
/**
* Receive notification of the beginning of a media statement.
*
* The Parser will invoke this method at the beginning of every media
* statement in the style sheet. there will be a corresponding endMedia()
* event for every startElement() event.
*
* @param media
* The intended destination media for style information.
* @exception CSSException
* Any CSS exception, possibly wrapping another exception.
*/
public void startMedia(SACMediaList media) throws CSSException;
/**
* Receive notification of the end of a media statement.
*
* @param media
* The intended destination media for style information.
* @exception CSSException
* Any CSS exception, possibly wrapping another exception.
*/
public void endMedia(SACMediaList media) throws CSSException;
/**
* Receive notification of the beginning of a page statement.
*
* The Parser will invoke this method at the beginning of every page
* statement in the style sheet. there will be a corresponding endPage()
* event for every startPage() event.
*
* @param name
* the name of the page (if any, null otherwise)
* @param pseudo_page
* the pseudo page (if any, null otherwise)
* @exception CSSException
* Any CSS exception, possibly wrapping another exception.
*/
public void startPage(String name, String pseudo_page) throws CSSException;
/**
* Receive notification of the end of a media statement.
*
* @param name
* The intended destination medium for style information.
* @param pseudo_page
* the pseudo page (if any, null otherwise)
* @exception CSSException
* Any CSS exception, possibly wrapping another exception.
*/
public void endPage(String name, String pseudo_page) throws CSSException;
/**
* Receive notification of the beginning of a font face statement.
*
* The Parser will invoke this method at the beginning of every font face
* statement in the style sheet. there will be a corresponding endFontFace()
* event for every startFontFace() event.
*
* @exception CSSException
* Any CSS exception, possibly wrapping another exception.
*/
public void startFontFace() throws CSSException;
/**
* Receive notification of the end of a font face statement.
*
* @exception CSSException
* Any CSS exception, possibly wrapping another exception.
*/
public void endFontFace() throws CSSException;
/**
* Receive notification of the beginning of a rule statement.
*
* @param selectors
* All intended selectors for all declarations.
* @exception CSSException
* Any CSS exception, possibly wrapping another exception.
*/
public void startSelector(SelectorList selectors) throws CSSException;
/**
* Receive notification of the end of a rule statement.
*
* @param selectors
* All intended selectors for all declarations.
* @exception CSSException
* Any CSS exception, possibly wrapping another exception.
*/
public void endSelector(SelectorList selectors) throws CSSException;
/**
* Receive notification of a declaration.
*
* @param name
* the name of the property.
* @param value
* the value of the property. All whitespace are stripped.
* @param important
* is this property important ?
* @exception CSSException
* Any CSS exception, possibly wrapping another exception.
*/
public void property(String name, LexicalUnit value, boolean important)
throws CSSException;
}