diff options
Diffstat (limited to 'bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/util/AbstractCssTraverser.java')
-rw-r--r-- | bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/util/AbstractCssTraverser.java | 181 |
1 files changed, 0 insertions, 181 deletions
diff --git a/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/util/AbstractCssTraverser.java b/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/util/AbstractCssTraverser.java deleted file mode 100644 index c611b586a2..0000000000 --- a/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/util/AbstractCssTraverser.java +++ /dev/null @@ -1,181 +0,0 @@ -/******************************************************************************* - * 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.util; - -import java.util.ArrayList; -import java.util.Stack; -import java.util.Vector; - -import org.eclipse.wst.css.core.internal.provisional.document.ICSSImportRule; -import org.eclipse.wst.css.core.internal.provisional.document.ICSSModel; -import org.eclipse.wst.css.core.internal.provisional.document.ICSSNode; -import org.eclipse.wst.css.core.internal.provisional.document.ICSSStyleSheet; - - - -/** - * - */ -public abstract class AbstractCssTraverser { - - public static short TRAV_CONT = 0; - public static short TRAV_PRUNE = 1; - public static short TRAV_STOP = 2; - protected java.util.Stack travStack; - private boolean fTraverseImported = false; - private boolean fTraverseImportFirst = false; - private java.util.Vector traversedSheets; - - /** - * CssPropCMNode constructor comment. - */ - public AbstractCssTraverser() { - super(); - } - - /** - * @param model - * org.eclipse.wst.css.core.model.interfaces.ICSSModel - */ - public final void apply(ICSSModel model) { - apply(model.getDocument()); - } - - public final void apply(ICSSNode root) { - travStack = new Stack(); - if (fTraverseImported) { - traversedSheets = new Vector(); - if (root != null && root.getOwnerDocument() != null && root.getOwnerDocument().getNodeType() == ICSSNode.STYLESHEET_NODE) { - traversedSheets.add(root.getOwnerDocument()); - } - } - - // first call begin() - begin(root); - - // traverse - traverse(root); - - // last call end() - end(root); - } - - - protected void begin(ICSSNode node) { - } - - - protected void end(ICSSNode node) { - } - - /** - * @return boolean - */ - public final boolean isTraverseImported() { - return fTraverseImported; - } - - - protected short postNode(ICSSNode node) { - return (short) 0; - } - - - protected short preNode(ICSSNode node) { - return (short) 0; - } - - /** - * @param newTraverseImported - * boolean - */ - public final void setTraverseImported(boolean newTraverseImported) { - fTraverseImported = newTraverseImported; - } - - /** - * @param newTraverseImportFirst - * boolean - */ - public final void setTraverseImportFirst(boolean newTraverseImportFirst) { - fTraverseImportFirst = newTraverseImportFirst; - } - - - private final short traverse(ICSSNode node) { - if (node == null) - return TRAV_CONT; - - travStack.push(node); - - // pre-action - short ret = preNode(node); - - if (ret == TRAV_CONT) { - if (fTraverseImported && (node.getNodeType() == ICSSNode.IMPORTRULE_NODE)) { - ICSSImportRule rule = (ICSSImportRule) node; - // traverse external style-sheet - ICSSStyleSheet sheet = (ICSSStyleSheet) rule.getStyleSheet(); - if (sheet != null && !traversedSheets.contains(sheet)) { // prevent - // loop - traversedSheets.add(sheet); - short retExt = traverse(sheet); - if (retExt == TRAV_STOP) { - travStack.pop(); - return retExt; - } - } - } - - // collect children - ArrayList children = new ArrayList(); - ICSSNode child = node.getFirstChild(); - if (fTraverseImportFirst) { - ArrayList others = new ArrayList(); - - while (child != null) { - if (child.getNodeType() == ICSSNode.IMPORTRULE_NODE) - children.add(child); - else - others.add(child); - child = child.getNextSibling(); - } - children.addAll(others); - } - else { - while (child != null) { - children.add(child); - child = child.getNextSibling(); - } - } - - // traverse children - for (int i = 0; i < children.size(); i++) { - child = (ICSSNode) children.get(i); - short retChild = traverse(child); - if (retChild == TRAV_STOP) { - travStack.pop(); - return retChild; - } - } - } - else if (ret == TRAV_STOP) { - travStack.pop(); - return ret; - } - - // post-action - ret = postNode(node); - - travStack.pop(); - return (ret == TRAV_PRUNE) ? TRAV_CONT : ret; - } -} |