Mega Code Archive

 
Categories / Java / Swing JFC
 

Show HTML Document

/* Core SWING Advanced Programming  By Kim Topley ISBN: 0 13 083292 8        Publisher: Prentice Hall   */ import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.PrintStream; import java.util.Enumeration; import javax.swing.JEditorPane; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.UIManager; import javax.swing.text.AttributeSet; import javax.swing.text.BadLocationException; import javax.swing.text.Document; import javax.swing.text.Element; import javax.swing.text.JTextComponent; public class ShowHTMLDocument {   public static void main(String[] args) {     try {         UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");     } catch (Exception evt) {}        try {       JFrame f = new JFrame("HTMLDocument Structure");       final JEditorPane ep = new JEditorPane("links1.html");       ep.setEditable(false);       f.getContentPane().add(new JScrollPane(ep));       f.setSize(400, 300);       f.setVisible(true);       ep.addPropertyChangeListener(new PropertyChangeListener() {         public void propertyChange(PropertyChangeEvent evt) {           if (evt.getPropertyName().equals("page")) {             HTMLDocDisplay.displayModel(ep, System.out);           }         }       });     } catch (Exception e) {       System.out.println(e);       System.exit(1);     }   } } class HTMLDocDisplay {   public static void displayAttributes(AttributeSet a, int indent,       PrintStream out) {     if (a == null)       return;     a = a.copyAttributes();     Enumeration x = a.getAttributeNames();     for (int i = 0; i < indent; i++) {       out.print("  ");     }     if (x != null) {       out.println("ATTRIBUTES:");       while (x.hasMoreElements()) {         for (int i = 0; i < indent; i++) {           out.print("  ");         }         Object attr = x.nextElement();         out.println(" (" + attr + ", " + a.getAttribute(attr) + ")"             + " [" + getShortClassName(attr.getClass()) + "/"             + getShortClassName(a.getAttribute(attr).getClass())             + "] ");       }     } else {       out.println("No attributes");     }     if (a.getResolveParent() != null) {       displayAttributes(a.getResolveParent().copyAttributes(),           indent + 1, out);     }   }   public static void displayModel(JTextComponent comp, PrintStream out) {     Document doc = comp.getDocument();     Element e = doc.getDefaultRootElement();     displayElement(doc, e, 0, out);   }   public static void displayElement(Document doc, Element e, int indent,       PrintStream out) {     for (int i = 0; i < indent; i++) {       out.print("  ");     }     out.println("===== Element Class: " + getShortClassName(e.getClass()));     for (int i = 0; i < indent; i++) {       out.print("  ");     }     int startOffset = e.getStartOffset();     int endOffset = e.getEndOffset();     out.println("Offsets [" + startOffset + ", " + endOffset + "]");     AttributeSet a = e.getAttributes();     Enumeration x = a.getAttributeNames();     for (int i = 0; i < indent; i++) {       out.print("  ");     }     out.println("ATTRIBUTES:");     while (x.hasMoreElements()) {       for (int i = 0; i < indent; i++) {         out.print("  ");       }       Object attr = x.nextElement();       out           .println(" ("               + attr               + ", "               + a.getAttribute(attr)               + ")"               + " ["               + getShortClassName(attr.getClass())               + "/"               + getShortClassName(a.getAttribute(attr).getClass())               + "] ");     }     // Display the text for a leaf element     if (e.isLeaf()) {       try {         String str = doc.getText(startOffset, endOffset - startOffset);         if (str.length() > 40) {           str = str.substring(0, 40);         }         if (str.length() > 0) {           for (int i = 0; i < indent; i++) {             out.print("  ");           }           out.println("[" + str + "]");         }       } catch (BadLocationException ex) {       }     }     // Display child elements     int count = e.getElementCount();     for (int i = 0; i < count; i++) {       displayElement(doc, e.getElement(i), indent + 1, out);     }   }   public static String getShortClassName(Class clazz) {     String className = clazz.getName();     return className.substring(className.lastIndexOf(".") + 1);   } }