001 package jgb.examples;
002
003 import jgb.builder.WindowContext;
004
005 import javax.swing.*;
006 import javax.swing.event.HyperlinkEvent;
007 import java.io.IOException;
008 import java.net.URL;
009 import java.util.EventObject;
010
011 public class WebBrowserEventManager {
012 private JEditorPane view;
013 private JTextField urlField;
014
015 public void windowOpened(EventObject event, WindowContext context) {
016 updateContext(context);
017 urlField.setText((view.getPage().toExternalForm()));
018 }
019
020 public void go(EventObject event, WindowContext context) {
021 updateContext(context);
022 SwingUtilities.invokeLater(new Runnable() {
023 public void run() {
024 try {
025 view.setPage(urlField.getText());
026 } catch (final IOException e) {
027 SwingUtilities.invokeLater(new Runnable() {
028 public void run() {
029 JOptionPane.showMessageDialog(
030 view, e, "Error retrieving URL",
031 JOptionPane.ERROR_MESSAGE);
032 }
033 });
034 }
035 }
036 });
037 }
038
039 public void hyperlinkUpdate(EventObject event, WindowContext context) {
040 updateContext(context);
041
042 HyperlinkEvent hEvent = (HyperlinkEvent)event;
043 if (hEvent.getEventType().equals(HyperlinkEvent.EventType.ACTIVATED)) {
044 URL newUrl = hEvent.getURL();
045 urlField.setText(newUrl.toExternalForm());
046 go(event, context);
047 }
048 }
049
050 public void quit(EventObject event, WindowContext context) {
051 System.exit(1);
052 }
053
054 private void updateContext(WindowContext context) {
055 view = (JEditorPane)context.getObject("view");
056 urlField = (JTextField)context.getObject("url");
057 }
058 }