74600503fe8f998e1fcdf388b7f495ed264d2471
[debian/openrocket] / core / src / net / sf / openrocket / gui / dialogs / AboutDialog.java
1 package net.sf.openrocket.gui.dialogs;
2
3 import java.awt.event.ActionEvent;
4 import java.awt.event.ActionListener;
5
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;
11
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;
23
24 public class AboutDialog extends JDialog {
25         
26         public static final String OPENROCKET_URL = "http://openrocket.sourceforge.net/";
27         private static final Translator trans = Application.getTranslator();
28         
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                         "Kevin Ruland (Android version)<br>" +
34                         "Boris du Reau (internationalization, translation lead)<br>" +
35                         "Richard Graham (geodetic computations)<br><br>" +
36                         "<b>Translations by:</b><br><br>" +
37                         "Tripoli France (French)<br>" +
38                         "Stefan Lobas / ERIG e.V. (German)<br>" +
39                         "Tripoli Spain (Spanish)<br>" +
40                         "Sky Dart Team (Russian)<br>" +
41                         "Mauro Biasutti (Italian)<br><br>" +
42                         "<b>OpenRocket utilizes the following libraries:</b><br><br>" +
43                         "MiG Layout (http://www.miglayout.com/)<br>" +
44                         "JFreeChart (http://www.jfree.org/jfreechart/)<br>" +
45                         "iText (http://www.itextpdf.com/)";
46         
47         
48         public AboutDialog(JFrame parent) {
49                 super(parent, true);
50                 
51                 final String version = BuildProperties.getVersion();
52                 
53                 JPanel panel = new JPanel(new MigLayout("fill"));
54                 JPanel sub;
55                 
56                 
57                 // OpenRocket logo
58                 panel.add(new JLabel(Icons.loadImageIcon("pix/icon/icon-about.png", "OpenRocket")), "top");
59                 
60                 
61                 // OpenRocket version info + copyright
62                 sub = new JPanel(new MigLayout("fill"));
63                 
64                 sub.add(new StyledLabel("OpenRocket", 20), "ax 50%, growy, wrap para");
65                 sub.add(new StyledLabel(trans.get("lbl.version").trim() + " " + version, 3), "ax 50%, growy, wrap rel");
66                 sub.add(new StyledLabel("Copyright " + Chars.COPY + " 2007-2012 Sampo Niskanen and others"), "ax 50%, growy, wrap para");
67                 
68                 sub.add(new URLLabel(OPENROCKET_URL), "ax 50%, growy, wrap para");
69                 panel.add(sub, "grow");
70                 
71                 
72                 // Translation information (if present)
73                 String translation = trans.get("lbl.translation").trim();
74                 String translator = trans.get("lbl.translator").trim();
75                 String translatorWebsite = trans.get("lbl.translatorWebsite").trim();
76                 String translatorIcon = trans.get("lbl.translatorIcon").trim();
77                 
78                 if (translator.length() > 0 || translatorWebsite.length() > 0 || translatorIcon.length() > 0) {
79                         sub = new JPanel(new MigLayout("fill"));
80                         
81                         sub.add(new StyledLabel(translation, Style.BOLD), "ax 50%, growy, wrap para");
82                         
83                         if (translatorIcon.length() > 0) {
84                                 sub.add(new JLabel(Icons.loadImageIcon("pix/translators/" + translatorIcon, translator)),
85                                                 "ax 50%, growy, wrap para");
86                         }
87                         if (translator.length() > 0) {
88                                 sub.add(new JLabel(translator), "ax 50%, growy, wrap rel");
89                         }
90                         if (translatorWebsite.length() > 0) {
91                                 sub.add(new URLLabel(translatorWebsite), "ax 50%, growy, wrap para");
92                         }
93                         
94                         panel.add(sub);
95                 }
96                 
97                 
98                 DescriptionArea info = new DescriptionArea(5);
99                 info.setText(CREDITS);
100                 panel.add(info, "newline, width 10px, height 150lp, grow, spanx, wrap para");
101                 
102                 //              JTextArea area = new JTextArea(CREATORS);
103                 //              area.setEditable(false);
104                 //              area.setLineWrap(true);
105                 //              area.setWrapStyleWord(true);
106                 //              panel.add(new JScrollPane(area), "width 10px, height 100lp, grow, spanx, wrap para");
107                 
108                 
109                 //Close button
110                 JButton close = new JButton(trans.get("button.close"));
111                 close.addActionListener(new ActionListener() {
112                         @Override
113                         public void actionPerformed(ActionEvent e) {
114                                 AboutDialog.this.dispose();
115                         }
116                 });
117                 panel.add(close, "spanx, right");
118                 
119                 this.add(panel);
120                 this.setTitle("OpenRocket " + version);
121                 this.pack();
122                 this.setResizable(false);
123                 this.setLocationRelativeTo(parent);
124                 
125                 GUIUtil.setDisposableDialogOptions(this, close);
126         }
127         
128 }