]> gitweb.fperrin.net Git - GpsPrune.git/blobdiff - tim/prune/gui/AboutScreen.java
Version 3, August 2007
[GpsPrune.git] / tim / prune / gui / AboutScreen.java
index 09ce454ab056bafdb6b8bc04b4097226a5600d55..1e4f4f5bf5f98f04693f6657d5f460b29999fcc2 100644 (file)
@@ -1,9 +1,15 @@
 package tim.prune.gui;
 
+import java.awt.BorderLayout;
 import java.awt.Component;
+import java.awt.FlowLayout;
 import java.awt.Font;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
+import java.awt.event.KeyEvent;
+import java.awt.event.KeyListener;
 
 import javax.swing.BorderFactory;
 import javax.swing.BoxLayout;
@@ -13,15 +19,19 @@ import javax.swing.JEditorPane;
 import javax.swing.JFrame;
 import javax.swing.JLabel;
 import javax.swing.JPanel;
+import javax.swing.JTabbedPane;
 
+import tim.prune.ExternalTools;
 import tim.prune.GpsPruner;
 import tim.prune.I18nManager;
+import tim.prune.threedee.WindowFactory;
 
 /**
  * Class to represent the "About" popup window
  */
 public class AboutScreen extends JDialog
 {
+       JButton _okButton = null;
 
        /**
         * Constructor
@@ -39,19 +49,25 @@ public class AboutScreen extends JDialog
        private Component makeContents()
        {
                JPanel mainPanel = new JPanel();
-               mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS));
-               mainPanel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
+               mainPanel.setLayout(new BorderLayout());
+
+               JTabbedPane tabPane = new JTabbedPane();
+               mainPanel.add(tabPane, BorderLayout.CENTER);
+
+               JPanel aboutPanel = new JPanel();
+               aboutPanel.setLayout(new BoxLayout(aboutPanel, BoxLayout.Y_AXIS));
+               aboutPanel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
                JLabel titleLabel = new JLabel("Prune");
                titleLabel.setFont(new Font("SansSerif", Font.BOLD, 24));
                titleLabel.setAlignmentX(JLabel.CENTER_ALIGNMENT);
-               mainPanel.add(titleLabel);
+               aboutPanel.add(titleLabel);
                JLabel versionLabel = new JLabel(I18nManager.getText("dialog.about.version") + ": " + GpsPruner.VERSION_NUMBER);
                versionLabel.setAlignmentX(JLabel.CENTER_ALIGNMENT);
-               mainPanel.add(versionLabel);
+               aboutPanel.add(versionLabel);
                JLabel buildLabel = new JLabel(I18nManager.getText("dialog.about.build") + ": " + GpsPruner.BUILD_NUMBER);
                buildLabel.setAlignmentX(JLabel.CENTER_ALIGNMENT);
-               mainPanel.add(buildLabel);
-               mainPanel.add(new JLabel(" "));
+               aboutPanel.add(buildLabel);
+               aboutPanel.add(new JLabel(" "));
                StringBuffer descBuffer = new StringBuffer();
                descBuffer.append("<p>").append(I18nManager.getText("dialog.about.summarytext1")).append("</p>");
                descBuffer.append("<p>").append(I18nManager.getText("dialog.about.summarytext2")).append("</p>");
@@ -63,21 +79,147 @@ public class AboutScreen extends JDialog
                descPane.setOpaque(false);
                descPane.setAlignmentX(JEditorPane.CENTER_ALIGNMENT);
 
-               mainPanel.add(descPane);
-               mainPanel.add(new JLabel(" "));
-               JButton okButton = new JButton(I18nManager.getText("button.ok"));
-               okButton.addActionListener(new ActionListener()
+               aboutPanel.add(descPane);
+               aboutPanel.add(new JLabel(" "));
+               tabPane.add(I18nManager.getText("dialog.about.title"), aboutPanel);
+
+               // Second pane for system info
+               JPanel sysInfoPanel = new JPanel();
+               GridBagLayout gridBag = new GridBagLayout();
+               sysInfoPanel.setLayout(gridBag);
+               GridBagConstraints constraints = new GridBagConstraints();
+               constraints.weightx = 0.0; constraints.weighty = 0.0;
+               addToGridBagPanel(sysInfoPanel, gridBag, constraints,
+                       new JLabel(I18nManager.getText("dialog.about.systeminfo.os") + " : "),
+                       0, 0);
+               addToGridBagPanel(sysInfoPanel, gridBag, constraints,
+                       new JLabel(System.getProperty("os.name")),
+                       1, 0);
+               addToGridBagPanel(sysInfoPanel, gridBag, constraints,
+                       new JLabel(I18nManager.getText("dialog.about.systeminfo.java") + " : "),
+                       0, 1);
+               addToGridBagPanel(sysInfoPanel, gridBag, constraints,
+                       new JLabel(System.getProperty("java.runtime.version")),
+                       1, 1);
+               addToGridBagPanel(sysInfoPanel, gridBag, constraints,
+                       new JLabel(I18nManager.getText("dialog.about.systeminfo.java3d") + " : "),
+                       0, 2);
+               addToGridBagPanel(sysInfoPanel, gridBag, constraints,
+                       new JLabel(I18nManager.getText(WindowFactory.isJava3dEnabled()?"dialog.about.yes":"dialog.about.no")),
+                       1, 2);
+               addToGridBagPanel(sysInfoPanel, gridBag, constraints,
+                       new JLabel(I18nManager.getText("dialog.about.systeminfo.povray") + " : "),
+                       0, 3);
+               addToGridBagPanel(sysInfoPanel, gridBag, constraints,
+                       new JLabel(I18nManager.getText(ExternalTools.isPovrayInstalled()?"dialog.about.yes":"dialog.about.no")),
+                       1, 3);
+               addToGridBagPanel(sysInfoPanel, gridBag, constraints,
+                       new JLabel(I18nManager.getText("dialog.about.systeminfo.exiftool") + " : "),
+                       0, 4);
+               addToGridBagPanel(sysInfoPanel, gridBag, constraints,
+                       new JLabel(I18nManager.getText(ExternalTools.isExiftoolInstalled()?"dialog.about.yes":"dialog.about.no")),
+                       1, 4);
+               tabPane.add(I18nManager.getText("dialog.about.systeminfo"), sysInfoPanel);
+
+               // Third pane for credits
+               JPanel creditsPanel = new JPanel();
+               gridBag = new GridBagLayout();
+               creditsPanel.setLayout(gridBag);
+               constraints = new GridBagConstraints();
+               constraints.weightx = 0.0; constraints.weighty = 0.0;
+
+               addToGridBagPanel(creditsPanel, gridBag, constraints,
+                       new JLabel(I18nManager.getText("dialog.about.credits.code") + " : "),
+                       0, 0);
+               addToGridBagPanel(creditsPanel, gridBag, constraints,
+                       new JLabel("activityworkshop.net"),
+                       1, 0);
+               addToGridBagPanel(creditsPanel, gridBag, constraints,
+                       new JLabel(I18nManager.getText("dialog.about.credits.exifcode") + " : "),
+                       0, 1);
+               addToGridBagPanel(creditsPanel, gridBag, constraints,
+                       new JLabel("Drew Noakes"),
+                       1, 1);
+               addToGridBagPanel(creditsPanel, gridBag, constraints,
+                       new JLabel(I18nManager.getText("dialog.about.credits.icons") + " : "),
+                       0, 2);
+               addToGridBagPanel(creditsPanel, gridBag, constraints,
+                       new JLabel("Eclipse"),
+                       1, 2);
+               addToGridBagPanel(creditsPanel, gridBag, constraints,
+                       new JLabel(I18nManager.getText("dialog.about.credits.translations") + " : "),
+                       0, 3);
+               addToGridBagPanel(creditsPanel, gridBag, constraints,
+                       new JLabel("Open Office, Gpsdrive, Babelfish, Leo"),
+                       1, 3);
+               addToGridBagPanel(creditsPanel, gridBag, constraints,
+                       new JLabel(I18nManager.getText("dialog.about.credits.devtools") + " : "),
+                       0, 4);
+               addToGridBagPanel(creditsPanel, gridBag, constraints,
+                       new JLabel("Mandriva Linux, Sun Java, Eclipse, Svn, Gimp"),
+                       1, 4);
+               addToGridBagPanel(creditsPanel, gridBag, constraints,
+                       new JLabel(I18nManager.getText("dialog.about.credits.othertools") + " : "),
+                       0, 5);
+               addToGridBagPanel(creditsPanel, gridBag, constraints,
+                       new JLabel("Garble, Kate, Povray, Inkscape, Google Earth"),
+                       1, 5);
+               addToGridBagPanel(creditsPanel, gridBag, constraints,
+                       new JLabel(I18nManager.getText("dialog.about.credits.thanks") + " : "),
+                       0, 6);
+               addToGridBagPanel(creditsPanel, gridBag, constraints,
+                       new JLabel("Friends and loved ones, for encouragement and support"),
+                       1, 6);
+               tabPane.add(I18nManager.getText("dialog.about.credits"), creditsPanel);
+
+               // OK button at the bottom
+               JPanel okPanel = new JPanel();
+               okPanel.setLayout(new FlowLayout(FlowLayout.CENTER));
+               _okButton = new JButton(I18nManager.getText("button.ok"));
+               _okButton.addActionListener(new ActionListener()
                {
                        public void actionPerformed(ActionEvent e)
                        {
                                dispose();
                        }
                });
-               okButton.setAlignmentX(JButton.CENTER_ALIGNMENT);
-               mainPanel.add(okButton);
+               _okButton.addKeyListener(new KeyListener() {
+                       public void keyPressed(KeyEvent e)
+                       {
+                               if (e.getKeyCode() == KeyEvent.VK_ESCAPE) {dispose();}
+                       }
+                       public void keyTyped(KeyEvent e) {}
+                       public void keyReleased(KeyEvent e) {}
+               });
+               okPanel.add(_okButton);
+               mainPanel.add(okPanel, BorderLayout.SOUTH);
                return mainPanel;
        }
 
+       /**
+        * Helper function to reduce complexity of gui making code
+        * when adding labels to a GridBagLayout
+        * @param inPanel panel to add to
+        * @param inLayout GridBagLayout object
+        * @param inConstraints GridBagConstraints object
+        * @param inLabel label to add
+        * @param inX grid x
+        * @param inY grid y
+        */
+       private static void addToGridBagPanel(JPanel inPanel, GridBagLayout inLayout, GridBagConstraints inConstraints,
+               JLabel inLabel, int inX, int inY)
+       {
+               // set x and y in constraints
+               inConstraints.gridx = inX;
+               inConstraints.gridy = inY;
+               // set anchor
+               inConstraints.anchor = (inX == 0?GridBagConstraints.EAST:GridBagConstraints.WEST);
+               // set constraints to label
+               inLayout.setConstraints(inLabel, inConstraints);
+               // add label to panel
+               inPanel.add(inLabel);
+       }
+
 
        /**
         * Show window
@@ -87,5 +229,6 @@ public class AboutScreen extends JDialog
                pack();
                // setSize(300,200);
                super.show();
+               _okButton.requestFocus();
        }
 }