package com.kokakiwi.mclauncher.ui.simple.components; import java.awt.BorderLayout; import java.awt.Color; import java.io.IOException; import javax.swing.JScrollPane; import javax.swing.JTextPane; import javax.swing.border.MatteBorder; import javax.swing.event.HyperlinkEvent; import javax.swing.event.HyperlinkEvent.EventType; import javax.swing.event.HyperlinkListener; import com.kokakiwi.mclauncher.api.LauncherAPI; import com.kokakiwi.mclauncher.utils.lang.Translater; public class NavigatorPanel extends TexturedPanel { private static final long serialVersionUID = -2791605062203929957L; private final LauncherAPI api; private final String url; private final JTextPane editorPane; private final JScrollPane scrollPane; public NavigatorPanel(LauncherAPI api, String url) throws Exception { super(api.getConfig().has("news.background") ? api.getConfig() .getString("news.background") : "res/stone.png"); this.api = api; this.url = url; editorPane = new JTextPane(); editorPane.setContentType("text/html"); editorPane .setText("<html><body><font color=\"#808080\"><br><br><br><br><br><br><br><center>" + Translater.getString("news.defaultText") + "</center></font></body></html>"); editorPane.addHyperlinkListener(new HyperlinkListener() { public void hyperlinkUpdate(HyperlinkEvent he) { if (he.getEventType() == EventType.ACTIVATED) { try { editorPane.setPage(he.getURL()); } catch (final IOException e) { e.printStackTrace(); } } } }); editorPane.setBackground(Color.DARK_GRAY); editorPane.setEditable(false); editorPane.setMargin(null); scrollPane = new JScrollPane(editorPane); scrollPane.setBorder(new MatteBorder(0, 0, 2, 0, Color.BLACK)); setLayout(new BorderLayout()); add(scrollPane, "Center"); final Thread t = new Thread(new BrowserLoader()); t.setDaemon(true); t.start(); } public LauncherAPI getApi() { return api; } public String getUrl() { return url; } public JTextPane getEditorPane() { return editorPane; } public JScrollPane getScrollPane() { return scrollPane; } private class BrowserLoader implements Runnable { public void run() { try { editorPane.setPage(url); } catch (final IOException e) { editorPane .setText("<html><body>Error during loading page. :(</body></html>"); e.printStackTrace(); } } } }