Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dom/DOMUtil.java')
-rw-r--r--jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dom/DOMUtil.java236
1 files changed, 0 insertions, 236 deletions
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dom/DOMUtil.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dom/DOMUtil.java
deleted file mode 100644
index c34e38818..000000000
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dom/DOMUtil.java
+++ /dev/null
@@ -1,236 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 Sybase, Inc. 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:
- * Sybase, Inc. - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.pagedesigner.dom;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import org.eclipse.jst.jsf.common.ui.internal.logging.Logger;
-import org.eclipse.jst.pagedesigner.PDPlugin;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMText;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-import org.w3c.dom.Text;
-
-/**
- * @author mengbo
- */
-public class DOMUtil {
- private static Logger _logger = PDPlugin.getLogger(DOMUtil.class);
-
- /**
- * Get a list of ancester nodes starting from the Document till the node.
- *
- * @param node
- * @return
- */
- private static List getAncesters(Node node) {
- List list = new ArrayList();
- while (node != null) {
- list.add(node);
- if (node instanceof Document) {
- break;
- }
- node = node.getParentNode();
- }
- if (node == null) {
- // if part ==null, means we didn't find a DocumentEditPart,
- // something must be wrong.
- return null;
- }
- // reverse to make it starting from the docuemnteditpart node.
- Collections.reverse(list);
- list.add(null); // add an null terminator.
- return list;
- }
-
- /**
- * find the smallest common ancester of two edit part.
- *
- * @param node1
- * @param node2
- * @return the common ancestor
- */
- public static Node findCommonAncester(Node node1, Node node2) {
- List list1 = getAncesters(node1);
- if (list1 == null) {
- return null;
- }
- List list2 = getAncesters(node2);
- if (list2 == null) {
- return null;
- }
- if (list1.get(0) != list2.get(0)) {
- return null;
- }
- Node common = (Node) list1.get(0);
- for (int i = 1;; i++) {
- Node p1 = (Node) list1.get(i);
- Node p2 = (Node) list2.get(i);
- if (p1 == null || p2 == null) {
- return common;
- }
- if (p1 != p2) {
- return common;
- }
- common = p1;
- }
-
- }
-
- /**
- * this method is almost same as <code>cloneNodeDeep()</code>. The
- * difference is that this method will try to ignore all kinds of error.
- *
- * In SSE, if the document model enforce some kinds of validation, then the
- * clone may fail. During some cases, we want to ignore the validation
- * errors.
- *
- * @param destDoc
- * @param sourceNode
- * @return the node
- */
- public static Node cloneNodeDeepIgnoreError(Document destDoc,
- Node sourceNode) {
- switch (sourceNode.getNodeType()) {
- case Node.ELEMENT_NODE:
- Element sourceEle = (Element) sourceNode;
- Element resultEle = destDoc.createElement(sourceEle.getTagName());
- NamedNodeMap attrs = sourceEle.getAttributes();
- for (int i = 0, size = attrs.getLength(); i < size; i++) {
- Attr a = (Attr) attrs.item(i);
- try {
- resultEle.setAttribute(a.getName(), a.getValue());
- } catch (Exception ex) {
- // ignore
- _logger.info("Exception", ex); //$NON-NLS-1$
- }
- }
- NodeList children = sourceEle.getChildNodes();
- for (int i = 0, size = children.getLength(); i < size; i++) {
- Node n = children.item(i);
- Node d = cloneNodeDeepIgnoreError(destDoc, n);
- if (d != null) {
- try {
- resultEle.appendChild(d);
- } catch (Exception ex) {
- // ignore
- _logger.info("Exception", ex); //$NON-NLS-1$
- }
- }
- }
- return resultEle;
- case Node.TEXT_NODE:
- Text txt = destDoc.createTextNode(sourceNode.getNodeValue());
- if (txt instanceof IDOMText && sourceNode instanceof IDOMText) {
- try {
- ((IDOMText) txt).setSource(((IDOMText) sourceNode)
- .getSource());
- } catch (Exception ex) {
- // ignore
- }
- }
- return txt;
- case Node.CDATA_SECTION_NODE:
- return destDoc.createCDATASection(sourceNode.getNodeValue());
- default:
- return null; // not support.
- }
- }
-
- /**
- * @param destDoc
- * @param sourceNode
- * @return the node
- */
- public static Node cloneNodeDeep(Document destDoc, Node sourceNode) {
- switch (sourceNode.getNodeType()) {
- case Node.ELEMENT_NODE:
- Element sourceEle = (Element) sourceNode;
- Element resultEle = destDoc.createElement(sourceEle.getTagName());
- NamedNodeMap attrs = sourceEle.getAttributes();
- for (int i = 0, size = attrs.getLength(); i < size; i++) {
- Attr a = (Attr) attrs.item(i);
- resultEle.setAttribute(a.getName(), a.getValue());
- }
- NodeList children = sourceEle.getChildNodes();
- for (int i = 0, size = children.getLength(); i < size; i++) {
- Node n = children.item(i);
- Node d = cloneNodeDeep(destDoc, n);
- if (d != null) {
- resultEle.appendChild(d);
- }
- }
- return resultEle;
- case Node.TEXT_NODE:
- Text txt = destDoc.createTextNode(sourceNode.getNodeValue());
- if (txt instanceof IDOMText && sourceNode instanceof IDOMText) {
- try {
- ((IDOMText) txt).setSource(((IDOMText) sourceNode)
- .getSource());
- } catch (Exception ex) {
- // ignore
- _logger.info("Exception", ex); //$NON-NLS-1$
- }
- }
- return txt;
- case Node.CDATA_SECTION_NODE:
- return destDoc.createCDATASection(sourceNode.getNodeValue());
- default:
- return null; // not support.
- }
- }
-
- /**
- * check whether the ancester relationship exist for the two nodes.
- *
- * @param ancester
- * @param child
- * @return true if ancester is an ancestor of child
- */
- public static boolean isAncester(Node ancester, Node child) {
- while (child != null) {
- if (child == ancester) {
- return true;
- }
- child = child.getParentNode();
- }
- return false;
- }
-
- /**
- * insert the node at specified position.
- *
- * @param domPosition
- * @param node
- * @return null if fail, otherwise return the inserted node.
- */
- public static Node insertNode(IDOMPosition domPosition, Node node) {
- IDOMPosition position = DOMPositionHelper.splitText(domPosition);
- if (position == null || position.getContainerNode() == null) {
- return null;
- }
- if (position.getNextSiblingNode() == null) {
- position.getContainerNode().appendChild(node);
- } else {
- position.getContainerNode().insertBefore(node,
- position.getNextSiblingNode());
- }
-
- return node;
- }
-}

Back to the top