diff --git a/src/com/annimon/turrets/HelpPanel.java b/src/com/annimon/turrets/HelpPanel.java index 7698f88..0401c84 100644 --- a/src/com/annimon/turrets/HelpPanel.java +++ b/src/com/annimon/turrets/HelpPanel.java @@ -2,15 +2,21 @@ package com.annimon.turrets; import static com.annimon.turrets.Constants.MENU_FONT_NAME; import static com.annimon.turrets.Constants.SCREEN_DIMENSION; +import com.annimon.turrets.util.ExceptionHandler; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Font; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.io.IOException; +import javax.swing.JButton; +import javax.swing.JEditorPane; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.SwingConstants; import javax.swing.border.EmptyBorder; +import javax.swing.event.HyperlinkEvent; +import javax.swing.event.HyperlinkListener; /** * @@ -22,23 +28,74 @@ public final class HelpPanel extends JPanel { setPreferredSize(SCREEN_DIMENSION); setBackground(Color.BLACK); setLayout(new BorderLayout()); - addMouseListener(new MouseAdapter() { - @Override - public void mousePressed(MouseEvent e) { - Main.getInstance().switchToMainMenu(); - } - }); final JLabel titleLabel = new JLabel("Turrets Online"); titleLabel.setForeground(Color.GRAY); titleLabel.setHorizontalAlignment(SwingConstants.CENTER); titleLabel.setFont(new Font(MENU_FONT_NAME, 1, 38)); - titleLabel.setBorder(new EmptyBorder(50, 0, 50, 0)); + titleLabel.setBorder(new EmptyBorder(100, 0, 50, 0)); add(titleLabel, BorderLayout.NORTH); - final JLabel infoLabel = new JLabel(); - infoLabel.setForeground(Color.WHITE); - infoLabel.setHorizontalAlignment(SwingConstants.CENTER); - add(infoLabel, BorderLayout.CENTER); + final JEditorPane infoPane = new JEditorPane(); + infoPane.setContentType("text/html"); + infoPane.setEditable(false); + infoPane.setOpaque(false); + infoPane.setText("" + + "" + + "

Turrets Online is peer-to-peer network game.
" + + "The goal of the game is to hit enemy with turret's missile.

" + + "

Author: Victor aNNiMON Melnik
"+ + "Source code available at BitBucket or " + + "GitHub

" + + "

Ukraine, Donetsk 2014

" + + ""); + infoPane.addHyperlinkListener(new HyperlinkListener() { + + @Override + public void hyperlinkUpdate(HyperlinkEvent hle) { + if (HyperlinkEvent.EventType.ACTIVATED.equals(hle.getEventType())) { + openBrowser(hle.getURL().toString()); + } + } + }); + add(infoPane, BorderLayout.CENTER); + + final JButton backButton = new JButton("Back"); + backButton.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + Main.getInstance().switchToMainMenu(); + } + }); + backButton.setForeground(Color.GRAY); + backButton.setFont(new Font(MENU_FONT_NAME, 1, 30)); + backButton.setBorderPainted(false); + backButton.setFocusPainted(false); + backButton.setContentAreaFilled(false); + backButton.setBorder(new EmptyBorder(0, 0, 75, 0)); + add(backButton, BorderLayout.SOUTH); + } + + private void openBrowser(String url) { + final String osName = System.getProperty("os.name"); + try { + if (osName.startsWith("Windows")) { + Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + url); + } else { + final String[] browsers = {"firefox", "opera", "konqueror", + "epiphany", "mozilla", "netscape", "chrome"}; + String browser = null; + for (int count = 0; count < browsers.length && browser == null; count++) { + if (Runtime.getRuntime().exec( + new String[]{"which", browsers[count]}) + .waitFor() == 0) + browser = browsers[count]; + } + Runtime.getRuntime().exec(new String[]{browser, url}); + } + } catch (IOException | InterruptedException ex) { + ExceptionHandler.handle(ex); + } } };