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    
032    //              URL url = new URL("http://www.google.com/index.html");
033    //              URL url = new URL("http://video.google.com/?hl=ja&tab=wv");
034                    URL url = new URL("http://sakura.meijo-u.ac.jp/index.html");
035                    ElementParser parser = new ElementParser(url.openStream());
036                    parser.setDocumentBase(url.toURI());
037                    
038                    final HTMLObject htmlo = new HTMLObject();
039                    parser.setPolicy(htmlo);
040                    parser.parse();
041                    
042                    final JComponent comp = new JComponent() {
043                            public void paint(Graphics g) {
044                                    htmlo.paint(g);
045                            }
046                    };
047                    comp.addMouseListener(new MouseListener(){
048                            public void mousePressed(MouseEvent e) {
049                                    if(htmlo.hit(e.getX(), e.getY()))
050                                            htmlo.mousePressed(e);
051                            }
052                            public void mouseReleased(MouseEvent e) {
053                                    if(htmlo.hit(e.getX(), e.getY()))
054                                            htmlo.mouseReleased(e);
055                            }
056                            public void mouseClicked(MouseEvent e) {
057                                    if(htmlo.hit(e.getX(), e.getY()))
058                                            htmlo.mouseClicked(e);
059                            }
060                            public void mouseEntered(MouseEvent e) {
061                                    if(htmlo.hit(e.getX(), e.getY()))
062                                            htmlo.mouseEntered(e);
063                            }
064                            public void mouseExited(MouseEvent e) {
065                                    if(htmlo.hit(e.getX(), e.getY()))
066                                            htmlo.mouseExited(e);
067                            }
068                    });
069                    comp.addMouseMotionListener(new MouseMotionListener(){
070                            public void mouseMoved(MouseEvent e) {
071                                    if(htmlo.hit(e.getX(), e.getY())) {
072                                            htmlo.mouseMoved(e);
073                                            if(!htmlo.is_mouse_over_) {
074                                                    htmlo.is_mouse_over_ = true;
075                                                    htmlo.mouseEntered(e);
076                                            }
077                                    } else {
078                                            if(htmlo.is_mouse_over_) {
079                                                    htmlo.is_mouse_over_ = false;
080                                                    htmlo.mouseExited(e);
081                                            }
082                                    }
083                            }
084                            public void mouseDragged(MouseEvent e) {
085                                    if(htmlo.hit(e.getX(), e.getY()))
086                                            htmlo.mouseDragged(e);
087                            }
088                    });
089                    comp.addMouseWheelListener(new MouseWheelListener(){
090                            public void mouseWheelMoved(MouseWheelEvent e) {
091                                    htmlo.mouseWheelMoved(e);
092                            }
093                    });
094    
095                    htmlo.addChangeListener(new ChangeListener(){
096                            public void stateChanged(ChangeEvent e) {
097                                    comp.repaint();
098                            }
099                    });
100    
101                    JPanel panel = new JPanel(new BorderLayout());
102                    panel.add(comp, BorderLayout.CENTER);
103                    
104                    JFrame frame = new JFrame();
105                    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
106                    frame.setContentPane(panel);
107                    frame.pack();
108                    frame.setBounds(100,100, 500, 500);
109                    frame.setVisible(true);
110                    
111            }
112    }