001    package org.util.xml;
002    
003    import java.awt.*;
004    import java.awt.event.*;
005    import java.awt.geom.*;
006    import java.io.*;
007    import java.net.*;
008    import javax.swing.*;
009    import javax.swing.event.*;
010    
011    import org.util.xml.element.*;
012    import org.util.xml.parse.*;
013    import org.util.xml.parse.policy.*;
014    import org.util.xml.renderer.html.*;
015    
016    
017    /**
018     *
019     * @author masaru
020     */
021    public class Main4 {
022    
023            public static void main(String[] args) throws Exception {
024                    new Main4();
025            }
026    
027            public Main4() throws Exception {
028                    String text = "<img src=\"http://www.google.com/intl/en_ALL/images/logo.gif\"/><div>aaabbbccc</div>";
029    //              ElementParser parser = new ElementParser(new StringReader(text));
030    //              ElementParser parser = new ElementParser(new URL("http://sakura.meijo-u.ac.jp/index.html").openStream());
031                    URL url = new URL("http://www.google.com/index.html");
032    //              URL url = new URL("http://video.google.com/?hl=ja&tab=wv");
033                    ElementParser parser = new ElementParser(url.openStream());
034                    parser.setDocumentBase(url.toURI());
035                    
036                    final HTMLObject htmlo = new HTMLObject();
037                    parser.setPolicy(htmlo);
038                    parser.parse();
039                    
040                    final JComponent comp = new JComponent() {
041                            public void paint(Graphics g) {
042                                    htmlo.paint(g);
043                            }
044                    };
045                    comp.addMouseListener(new MouseListener(){
046                            public void mousePressed(MouseEvent e) {
047                                    if(htmlo.hit(e.getX(), e.getY()))
048                                            htmlo.mousePressed(e);
049                            }
050                            public void mouseReleased(MouseEvent e) {
051                                    if(htmlo.hit(e.getX(), e.getY()))
052                                            htmlo.mouseReleased(e);
053                            }
054                            public void mouseClicked(MouseEvent e) {
055                                    if(htmlo.hit(e.getX(), e.getY()))
056                                            htmlo.mouseClicked(e);
057                            }
058                            public void mouseEntered(MouseEvent e) {
059                                    if(htmlo.hit(e.getX(), e.getY()))
060                                            htmlo.mouseEntered(e);
061                            }
062                            public void mouseExited(MouseEvent e) {
063                                    if(htmlo.hit(e.getX(), e.getY()))
064                                            htmlo.mouseExited(e);
065                            }
066                    });
067                    comp.addMouseMotionListener(new MouseMotionListener(){
068                            public void mouseMoved(MouseEvent e) {
069                                    if(htmlo.hit(e.getX(), e.getY())) {
070                                            htmlo.mouseMoved(e);
071                                            if(!htmlo.is_mouse_over_) {
072                                                    htmlo.is_mouse_over_ = true;
073                                                    htmlo.mouseEntered(e);
074                                            }
075                                    } else {
076                                            if(htmlo.is_mouse_over_) {
077                                                    htmlo.is_mouse_over_ = false;
078                                                    htmlo.mouseExited(e);
079                                            }
080                                    }
081                            }
082                            public void mouseDragged(MouseEvent e) {
083                                    if(htmlo.hit(e.getX(), e.getY()))
084                                            htmlo.mouseDragged(e);
085                            }
086                    });
087                    comp.addMouseWheelListener(new MouseWheelListener(){
088                            public void mouseWheelMoved(MouseWheelEvent e) {
089                                    htmlo.mouseWheelMoved(e);
090                            }
091                    });
092    
093                    htmlo.addChangeListener(new ChangeListener(){
094                            public void stateChanged(ChangeEvent e) {
095                                    comp.repaint();
096                            }
097                    });
098    
099                    JPanel panel = new JPanel(new BorderLayout());
100                    panel.add(comp, BorderLayout.CENTER);
101                    
102                    JFrame frame = new JFrame();
103                    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
104                    frame.setContentPane(panel);
105                    frame.pack();
106                    frame.setBounds(100,100, 500, 500);
107                    frame.setVisible(true);
108                    
109            }
110    }