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 }