Mega Code Archive

 
Categories / Java / Tiny Application
 

Tabbed Web browser

import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; import java.util.List; import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.JButton; import javax.swing.JEditorPane; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTabbedPane; import javax.swing.JTextField; import javax.swing.JToolBar; import javax.swing.event.HyperlinkEvent; import javax.swing.event.HyperlinkListener; public class TabbedPaneWebBrowser extends JFrame {   private JTabbedPane tabbedPane = new JTabbedPane();   public TabbedPaneWebBrowser() {     super("JTabbedPane Web Browser");     createNewTab();     getContentPane().add(tabbedPane);     JMenu fileMenu = new JMenu("File");     fileMenu.add(new NewTabAction());     fileMenu.addSeparator();     fileMenu.add(new ExitAction());     fileMenu.setMnemonic('F');     JMenuBar menuBar = new JMenuBar();     menuBar.add(fileMenu);     setJMenuBar(menuBar);   }   private void createNewTab() {     JPanel panel = new JPanel(new BorderLayout());     WebBrowserPane browserPane = new WebBrowserPane();     WebToolBar toolBar = new WebToolBar(browserPane);     panel.add(toolBar, BorderLayout.NORTH);     panel.add(new JScrollPane(browserPane), BorderLayout.CENTER);     tabbedPane.addTab("Browser " + tabbedPane.getTabCount(), panel);   }   private class NewTabAction extends AbstractAction {     public NewTabAction() {       putValue(Action.NAME, "New Browser Tab");       putValue(Action.SHORT_DESCRIPTION, "Create New Web Browser Tab");       putValue(Action.MNEMONIC_KEY, new Integer('N'));     }     public void actionPerformed(ActionEvent event) {       createNewTab();     }   }   private class ExitAction extends AbstractAction {     public ExitAction() {       putValue(Action.NAME, "Exit");       putValue(Action.SHORT_DESCRIPTION, "Exit Application");       putValue(Action.MNEMONIC_KEY, new Integer('x'));     }     public void actionPerformed(ActionEvent event) {       System.exit(0);     }   }   public static void main(String args[]) {     TabbedPaneWebBrowser browser = new TabbedPaneWebBrowser();     browser.setDefaultCloseOperation(EXIT_ON_CLOSE);     browser.setSize(640, 480);     browser.setVisible(true);   } } class WebBrowserPane extends JEditorPane {   private List history = new ArrayList();   private int historyIndex;   public WebBrowserPane() {     setEditable(false);   }   public void goToURL(URL url) {     displayPage(url);     history.add(url);     historyIndex = history.size() - 1;   }   public URL forward() {     historyIndex++;     if (historyIndex >= history.size())       historyIndex = history.size() - 1;     URL url = (URL) history.get(historyIndex);     displayPage(url);     return url;   }   public URL back() {     historyIndex--;     if (historyIndex < 0)       historyIndex = 0;     URL url = (URL) history.get(historyIndex);     displayPage(url);     return url;   }   private void displayPage(URL pageURL) {     try {       setPage(pageURL);     } catch (IOException ioException) {       ioException.printStackTrace();     }   } } class WebToolBar extends JToolBar implements HyperlinkListener {   private WebBrowserPane webBrowserPane;   private JButton backButton;   private JButton forwardButton;   private JTextField urlTextField;   public WebToolBar(WebBrowserPane browser) {     super("Web Navigation");     // register for HyperlinkEvents     webBrowserPane = browser;     webBrowserPane.addHyperlinkListener(this);     urlTextField = new JTextField(25);     urlTextField.addActionListener(new ActionListener() {       // navigate webBrowser to user-entered URL       public void actionPerformed(ActionEvent event) {         try {           URL url = new URL(urlTextField.getText());           webBrowserPane.goToURL(url);         }         catch (MalformedURLException urlException) {           urlException.printStackTrace();         }       }     });     backButton = new JButton("back");     backButton.addActionListener(new ActionListener() {       public void actionPerformed(ActionEvent event) {         URL url = webBrowserPane.back();         urlTextField.setText(url.toString());       }     });     forwardButton = new JButton("forward");     forwardButton.addActionListener(new ActionListener() {       public void actionPerformed(ActionEvent event) {         URL url = webBrowserPane.forward();         urlTextField.setText(url.toString());       }     });     add(backButton);     add(forwardButton);     add(urlTextField);   }   public void hyperlinkUpdate(HyperlinkEvent event) {     if (event.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {       URL url = event.getURL();       webBrowserPane.goToURL(url);       urlTextField.setText(url.toString());     }   } }