| /******************************************************************************* |
| * Copyright (c) 2001, 2006 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 |
| * Jens Lukowski/Innoopract - initial renaming/restructuring |
| * |
| *******************************************************************************/ |
| package org.eclipse.jst.jsp.ui.tests.other; |
| |
| import java.io.PrintStream; |
| |
| import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion; |
| import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode; |
| import org.w3c.dom.Document; |
| import org.w3c.dom.Node; |
| import org.w3c.dom.NodeList; |
| |
| |
| public class DebugDocument { |
| |
| public static void dump(Document document) { |
| if (document == null) |
| return; |
| System.out.println("Dump of DOM"); //$NON-NLS-1$ |
| |
| dump(document, System.out); |
| |
| // |
| System.out.println(); |
| System.out.println("= = = = = ="); //$NON-NLS-1$ |
| System.out.println(); |
| |
| } |
| |
| public static void dump(Document document, PrintStream out) { |
| Node node = document.getFirstChild(); |
| while (node != null) { |
| dump(node, out); |
| node = node.getNextSibling(); |
| } |
| |
| } |
| |
| public static void dump(Node topNode) { |
| dump(topNode, System.out); |
| } |
| |
| public static void dump(Node topNode, PrintStream out) { |
| if (topNode == null) |
| return; |
| // print out this node |
| // |
| printNode(topNode, out); |
| |
| // now print out its children |
| //NodeList nodes = topNode.getChildNodes(); |
| //int len = nodes.getLength(); |
| //for (int i = 0; i < len; i++) { |
| |
| //Node node = nodes.item(i); |
| //dump(node, out); |
| //} |
| } |
| |
| public static void printNode(Node topNode) { |
| printNode(topNode, System.out); |
| |
| } |
| |
| public static void printNode(Node topNode, PrintStream out) { |
| // print out this node |
| // |
| IStructuredDocumentRegion firstStructuredDocumentRegion = ((IDOMNode) topNode).getFirstStructuredDocumentRegion(); |
| IStructuredDocumentRegion lastStructuredDocumentRegion = ((IDOMNode) topNode).getLastStructuredDocumentRegion(); |
| if ((firstStructuredDocumentRegion == null) || (lastStructuredDocumentRegion == null)) { |
| // no text to output |
| } else { |
| int start = firstStructuredDocumentRegion.getStart(); |
| int end = lastStructuredDocumentRegion.getEnd(); |
| |
| String outString = topNode.toString(); |
| outString = org.eclipse.wst.sse.core.utils.StringUtils.escape(outString); |
| out.println("[" + start + ", " + end + "]" + outString); //$NON-NLS-3$//$NON-NLS-2$//$NON-NLS-1$ |
| } |
| // now do its children |
| NodeList nodes = topNode.getChildNodes(); |
| int len = nodes.getLength(); |
| for (int i = 0; i < len; i++) { |
| Node childNode = nodes.item(i); |
| printNode(childNode, out); |
| } |
| |
| } |
| |
| public DebugDocument() { |
| super(); |
| } |
| |
| } |