001    /*
002     * Copyright (c) 2000 World Wide Web Consortium,
003     * (Massachusetts Institute of Technology, Institut National de
004     * Recherche en Informatique et en Automatique, Keio University). All
005     * Rights Reserved. This program is distributed under the W3C's Software
006     * Intellectual Property License. This program is distributed in the
007     * hope that it will be useful, but WITHOUT ANY WARRANTY; without even
008     * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
009     * PURPOSE.
010     * See W3C License http://www.w3.org/Consortium/Legal/ for more details.
011     */
012    
013    package org.w3c.dom.css;
014    
015    import org.w3c.dom.DOMException;
016    
017    /**
018     *  The <code>CSSRule</code> interface is the abstract base interface for any 
019     * type of CSS statement. This includes both rule sets and at-rules. An 
020     * implementation is expected to preserve all rules specified in a CSS style 
021     * sheet, even if the rule is not recognized by the parser. Unrecognized 
022     * rules are represented using the <code>CSSUnknownRule</code> interface. 
023     * <p>See also the <a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113'>Document Object Model (DOM) Level 2 Style Specification</a>.
024     * @since DOM Level 2
025     */
026    public interface CSSRule {
027        // RuleType
028        /**
029         * The rule is a <code>CSSUnknownRule</code>.
030         */
031        public static final short UNKNOWN_RULE              = 0;
032        /**
033         * The rule is a <code>CSSStyleRule</code>.
034         */
035        public static final short STYLE_RULE                = 1;
036        /**
037         * The rule is a <code>CSSCharsetRule</code>.
038         */
039        public static final short CHARSET_RULE              = 2;
040        /**
041         * The rule is a <code>CSSImportRule</code>.
042         */
043        public static final short IMPORT_RULE               = 3;
044        /**
045         * The rule is a <code>CSSMediaRule</code>.
046         */
047        public static final short MEDIA_RULE                = 4;
048        /**
049         * The rule is a <code>CSSFontFaceRule</code>.
050         */
051        public static final short FONT_FACE_RULE            = 5;
052        /**
053         * The rule is a <code>CSSPageRule</code>.
054         */
055        public static final short PAGE_RULE                 = 6;
056    
057        /**
058         *  The type of the rule, as defined above. The expectation is that 
059         * binding-specific casting methods can be used to cast down from an 
060         * instance of the <code>CSSRule</code> interface to the specific 
061         * derived interface implied by the <code>type</code>. 
062         */
063        public short getType();
064    
065        /**
066         *  The parsable textual representation of the rule. This reflects the 
067         * current state of the rule and not its initial value. 
068         */
069        public String getCssText();
070        /**
071         *  The parsable textual representation of the rule. This reflects the 
072         * current state of the rule and not its initial value. 
073         * @exception DOMException
074         *   SYNTAX_ERR: Raised if the specified CSS string value has a syntax 
075         *   error and is unparsable.
076         *   <br>INVALID_MODIFICATION_ERR: Raised if the specified CSS string 
077         *   value represents a different type of rule than the current one.
078         *   <br>HIERARCHY_REQUEST_ERR: Raised if the rule cannot be inserted at 
079         *   this point in the style sheet.
080         *   <br>NO_MODIFICATION_ALLOWED_ERR: Raised if the rule is readonly.
081         */
082        public void setCssText(String cssText)
083                            throws DOMException;
084    
085        /**
086         *  The style sheet that contains this rule. 
087         */
088        public CSSStyleSheet getParentStyleSheet();
089    
090        /**
091         *  If this rule is contained inside another rule (e.g. a style rule 
092         * inside an @media block), this is the containing rule. If this rule is 
093         * not nested inside any other rules, this returns <code>null</code>. 
094         */
095        public CSSRule getParentRule();
096    
097    }