package org.xhtmlrenderer.demo.browser;
import java.awt.event.ActionEvent;
import javax.swing.*;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Element;
import org.xhtmlrenderer.simple.XHTMLPanel;
/**
* @author pwright
*/
public class ViewSourceAction extends AbstractAction {
private final XHTMLPanel panel;
public ViewSourceAction(XHTMLPanel panel) {
this.panel = panel;
}
public void actionPerformed(ActionEvent evt) {
TransformerFactory tfactory = TransformerFactory.newInstance();
Transformer serializer;
try {
serializer = tfactory.newTransformer();
//Setup indenting to "pretty print"
serializer.setOutputProperty(OutputKeys.INDENT, "yes");
serializer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
Element document = panel.getRootBox().getElement();
DOMSource source = new DOMSource(document);
StreamResult output = new StreamResult(System.out);
serializer.transform(
source,
output
);
} catch (TransformerException ex) {
// this is fatal, just dump the stack and throw a runtime exception
ex.printStackTrace();
throw new RuntimeException(ex);
}
}
}