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 }