1 package net.sf.openrocket.gui.dialogs;
3 import java.awt.event.ActionEvent;
4 import java.awt.event.ActionListener;
6 import javax.swing.JButton;
7 import javax.swing.JDialog;
8 import javax.swing.JFrame;
9 import javax.swing.JLabel;
10 import javax.swing.JPanel;
12 import net.miginfocom.swing.MigLayout;
13 import net.sf.openrocket.gui.components.DescriptionArea;
14 import net.sf.openrocket.gui.components.StyledLabel;
15 import net.sf.openrocket.gui.components.StyledLabel.Style;
16 import net.sf.openrocket.gui.components.URLLabel;
17 import net.sf.openrocket.gui.util.GUIUtil;
18 import net.sf.openrocket.gui.util.Icons;
19 import net.sf.openrocket.l10n.Translator;
20 import net.sf.openrocket.startup.Application;
21 import net.sf.openrocket.util.BuildProperties;
22 import net.sf.openrocket.util.Chars;
24 public class AboutDialog extends JDialog {
26 public static final String OPENROCKET_URL = "http://openrocket.sourceforge.net/";
27 private static final Translator trans = Application.getTranslator();
29 private static final String CREDITS = "<html><center>" +
30 "<font size=\"+1\"><b>OpenRocket has been developed by:</b></font><br><br>" +
31 "Sampo Niskanen (main developer)<br>" +
32 "Doug Pedrick (RockSim file format, printing)<br>" +
33 "Boris du Reau (internationalization, translation lead)<br>" +
34 "Richard Graham (geodetic computations)<br><br>" +
35 "<b>Translations by:</b><br><br>" +
36 "Tripoli France (French)<br>" +
37 "Stefan Lobas / ERIG e.V. (German)<br>" +
38 "Tripoli Spain (Spanish)<br><br>" +
39 "<b>OpenRocket utilizes the following libraries:</b><br><br>" +
40 "MiG Layout (http://www.miglayout.com/)<br>" +
41 "JFreeChart (http://www.jfree.org/jfreechart/)<br>" +
42 "iText (http://www.itextpdf.com/)";
45 public AboutDialog(JFrame parent) {
48 final String version = BuildProperties.getVersion();
50 JPanel panel = new JPanel(new MigLayout("fill"));
55 panel.add(new JLabel(Icons.loadImageIcon("pix/icon/icon-about.png", "OpenRocket")), "top");
58 // OpenRocket version info + copyright
59 sub = new JPanel(new MigLayout("fill"));
61 sub.add(new StyledLabel("OpenRocket", 20), "ax 50%, growy, wrap para");
62 sub.add(new StyledLabel(trans.get("lbl.version").trim() + " " + version, 3), "ax 50%, growy, wrap rel");
63 sub.add(new StyledLabel("Copyright " + Chars.COPY + " 2007-2011 Sampo Niskanen"), "ax 50%, growy, wrap para");
65 sub.add(new URLLabel(OPENROCKET_URL), "ax 50%, growy, wrap para");
66 panel.add(sub, "grow");
69 // Translation information (if present)
70 String translation = trans.get("lbl.translation").trim();
71 String translator = trans.get("lbl.translator").trim();
72 String translatorWebsite = trans.get("lbl.translatorWebsite").trim();
73 String translatorIcon = trans.get("lbl.translatorIcon").trim();
75 if (translator.length() > 0 || translatorWebsite.length() > 0 || translatorIcon.length() > 0) {
76 sub = new JPanel(new MigLayout("fill"));
78 sub.add(new StyledLabel(translation, Style.BOLD), "ax 50%, growy, wrap para");
80 if (translatorIcon.length() > 0) {
81 sub.add(new JLabel(Icons.loadImageIcon("pix/translators/" + translatorIcon, translator)),
82 "ax 50%, growy, wrap para");
84 if (translator.length() > 0) {
85 sub.add(new JLabel(translator), "ax 50%, growy, wrap rel");
87 if (translatorWebsite.length() > 0) {
88 sub.add(new URLLabel(translatorWebsite), "ax 50%, growy, wrap para");
95 DescriptionArea info = new DescriptionArea(5);
96 info.setText(CREDITS);
97 panel.add(info, "newline, width 10px, height 100lp, grow, spanx, wrap para");
99 // JTextArea area = new JTextArea(CREATORS);
100 // area.setEditable(false);
101 // area.setLineWrap(true);
102 // area.setWrapStyleWord(true);
103 // panel.add(new JScrollPane(area), "width 10px, height 100lp, grow, spanx, wrap para");
107 JButton close = new JButton(trans.get("button.close"));
108 close.addActionListener(new ActionListener() {
110 public void actionPerformed(ActionEvent e) {
111 AboutDialog.this.dispose();
114 panel.add(close, "spanx, right");
117 this.setTitle("OpenRocket " + version);
119 this.setResizable(false);
120 this.setLocationRelativeTo(parent);
122 GUIUtil.setDisposableDialogOptions(this, close);