/*
* Copyright 2013 Guidewire Software, Inc.
*/
package gw.internal.xml;
import gw.xml.XmlElement;
import gw.xml.XmlSerializationOptions;
import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class XmlWatcher extends Thread {
private final XmlElement _element;
public XmlWatcher( XmlElement element ) {
_element = element;
}
public void run() {
JFrame f = new JFrame();
f.addWindowListener( new WindowAdapter() {
@Override
public void windowClosed( WindowEvent e ) {
interrupt();
}
} );
try {
JTextArea area = new JTextArea();
area.setLineWrap( true );
area.setWrapStyleWord( true );
area.setEditable( false );
area.setFont( area.getFont().deriveFont( Font.BOLD, 16.0f ) );
f.add( new JScrollPane( area ), BorderLayout.CENTER );
f.setSize( 300, 300 );
f.setLocationByPlatform( true );
f.setAlwaysOnTop( true );
f.setVisible( true );
while ( true ) {
Thread.sleep( 250 );
area.setText( _element.asUTFString( XmlSerializationOptions.debug() ) );
}
}
catch ( InterruptedException ex ) {
// ignore
}
finally {
f.dispose();
}
}
}