/******************************************************************************* * Copyright (c) 2004, 2005 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.internal.document; import org.eclipse.wst.css.core.internal.provisional.document.ICSSNode; import org.w3c.dom.css.CSSRule; import org.w3c.dom.css.CSSStyleSheet; /** * */ abstract class CSSRuleImpl extends CSSStructuredDocumentRegionContainer implements CSSRule { /** * */ CSSRuleImpl() { super(); } CSSRuleImpl(CSSRuleImpl that) { super(that); } /** * If this rule is contained inside another rule (e.g. a style rule inside * an * * @media block), this is the containing rule. If this rule is not nested * inside any other rules, this returns <code>null</code>. */ public CSSRule getParentRule() { ICSSNode rule = getParentNode(); // parent rule is used only if parent is media rule if (rule instanceof CSSMediaRuleImpl) return (CSSRule) rule; return null; } /** * The style sheet that contains this rule. */ public CSSStyleSheet getParentStyleSheet() { ICSSNode parent = getParentNode(); while (parent != null) { if (parent instanceof CSSStyleSheetImpl) return (CSSStyleSheet) parent; parent = parent.getParentNode(); } return null; } /** * The type of the rule, as defined above. The expectation is that * binding-specific casting methods can be used to cast down from an * instance of the <code>CSSRule</code> interface to the specific * derived interface implied by the <code>type</code>. */ public abstract short getType(); /** * @return boolean */ public boolean hasProperties() { return true; } }