package file_manager; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Cursor; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.net.MalformedURLException; import java.net.URL; import javax.swing.JButton; import javax.swing.JEditorPane; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextField; import javax.swing.event.HyperlinkEvent; import javax.swing.event.HyperlinkListener; public class WebBrowser extends JFrame implements HyperlinkListener { private static final long serialVersionUID = 1L; //panel pro URL adresu private JTextField urlpanel; //JEditorPane pro zobrazeni stranky private JEditorPane editor; //statovy radek pro informace private JLabel status; //naposled pouzita url adresa private String LastUrl = null; //tlacitko zpet public JButton back = new JButton("Back"); public WebBrowser() { //zakladni nastaveni grafickeho rozhrani - JFrame setTitle("Web Browser"); setSize(600, 300); //close operation setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //vytvoreni menu JMenuBar topmenu = new JMenuBar(); JMenu file = new JMenu("File"); JMenuItem exit = new JMenuItem("Exit"); topmenu.add(file); file.add(exit); this.setJMenuBar(topmenu); exit.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { System.exit(1); } }); //horni panel s ovladanim JPanel toppanel = new JPanel(); //textove pole pro URL adresu urlpanel = new JTextField(""); urlpanel.setPreferredSize(new Dimension(20, 20)); urlpanel.setPreferredSize(new Dimension(getSize().width - 200, 20)); back.setEnabled(false); back.addActionListener(new ActionListener(){ public void actionPerformed( ActionEvent arg0 ){ LoadHtmlPage(LastUrl); } }); //tlacitko pro odeslani formulare JButton go = new JButton("Go"); //action listener pro odeslani formualre go.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { //prejde na stranku LoadHtmlPage(urlpanel.getText()); } }); toppanel.add( back ); toppanel.add(urlpanel); toppanel.add(go); add(toppanel); //stavovy radek JPanel statusBar = new JPanel(); //nastaveni defaultniho textu status = new JLabel("Insert URL"); statusBar.add(status); statusBar.setBackground(Color.WHITE); //vytvoreni JEditorPane editor = new JEditorPane(); //content type pro html editor.setContentType("text/html"); //muzete si nastavit true :-) editor.setEditable(false); //vytvoříme hyperlink listener editor.addHyperlinkListener(this); //content pane getContentPane().setLayout(new BorderLayout()); getContentPane().add(toppanel, BorderLayout.NORTH); getContentPane().add(new JScrollPane(editor), BorderLayout.CENTER); this.add(statusBar, BorderLayout.SOUTH); setVisible(true); } //funkce zkontroluje zadanou URL adresu //v pripade ze souhlasi, vytvori promennou typu URL a vola funkci pro nacteni public void LoadHtmlPage( String ur) { //nastaveni statusu status.setText("Loading..."); //nastaveni posledni URL adresy this.LastUrl = this.urlpanel.getText().trim(); //aktivace tlacitka zpet back.setEnabled(true); //kontrola, zda existuje URL adresa if (ur.trim().length() == 0) { status.setText("URL is empty"); return; } //kontrola, zda url adresa zacina http:// if (ur.startsWith("http://") == false) { ur = "http://" + ur; } try { //vytvoreni nove URL URL url = new URL(ur); GoToPage(url); } catch (MalformedURLException e) { e.printStackTrace(); } } //funkce nacita obsah URL adresy do promenne editor, do ktere ji zobrazi jako HTML public void GoToPage(URL url) { //zmena kurzoru na Wait setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); try { @SuppressWarnings("unused") URL currentUrl = editor.getPage(); //zobrazeni stranky editor.setPage(url); URL newUrl = editor.getPage(); //nastaveni titulku okna this.setTitle(newUrl.getHost()); //nastaveni url adresy v panelu urlpanel.setText(newUrl.toString()); } catch (Exception e) { //doplneni statusu status.setText("Load Failed"); } finally { //zmena statusu status.setText("Compete..."); //vraceni puvodniho kurzoru setCursor(Cursor.getDefaultCursor()); } } //funkce volana pomoci Hyperlink Listeneru public void hyperlinkUpdate(HyperlinkEvent event) { //zjistime EventType HyperlinkEvent.EventType eventType = event.getEventType(); //pokud je Activated (klik levym tlacitkem mysi: ) if (eventType == HyperlinkEvent.EventType.ACTIVATED) { //prejdeme na stranku LoadHtmlPage(event.getURL().toString()); } } public static void main(String[] args) { new WebBrowser(); } }