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 }