/******************************************************************************* * Copyright (c) 2014 Jeff Martin. * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html * * Contributors: * Jeff Martin - initial API and implementation ******************************************************************************/ package cuchaz.enigma.gui; import java.awt.Color; import java.awt.Container; import java.awt.Cursor; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.IOException; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.WindowConstants; import cuchaz.enigma.Constants; import cuchaz.enigma.Util; public class AboutDialog { public static void show(JFrame parent) { // init frame final JFrame frame = new JFrame(Constants.Name + " - About"); final Container pane = frame.getContentPane(); pane.setLayout(new FlowLayout()); // load the content try { String html = Util.readResourceToString("/about.html"); html = String.format(html, Constants.Name, Constants.Version); JLabel label = new JLabel(html); label.setHorizontalAlignment(JLabel.CENTER); pane.add(label); } catch (IOException ex) { throw new Error(ex); } // show the link String html = "%s"; html = String.format(html, Constants.Url, Constants.Url); JButton link = new JButton(html); link.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent event) { Util.openUrl(Constants.Url); } }); link.setBorderPainted(false); link.setOpaque(false); link.setBackground(Color.WHITE); link.setCursor(new Cursor(Cursor.HAND_CURSOR)); link.setFocusable(false); JPanel linkPanel = new JPanel(); linkPanel.add(link); pane.add(linkPanel); // show ok button JButton okButton = new JButton("Ok"); pane.add(okButton); okButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { frame.dispose(); } }); // show the frame pane.doLayout(); frame.setSize(400, 220); frame.setResizable(false); frame.setLocationRelativeTo(parent); frame.setVisible(true); frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); } }