X-Git-Url: http://gitweb.fperrin.net/?p=GpsPrune.git;a=blobdiff_plain;f=tim%2Fprune%2Fgui%2FAboutScreen.java;h=1e4f4f5bf5f98f04693f6657d5f460b29999fcc2;hp=09ce454ab056bafdb6b8bc04b4097226a5600d55;hb=5625a1abadb5f2ca5f017fe7dbda1d5141cb637b;hpb=23959e65a6a0d581e657b07186d18b7a1ac5afeb diff --git a/tim/prune/gui/AboutScreen.java b/tim/prune/gui/AboutScreen.java index 09ce454..1e4f4f5 100644 --- a/tim/prune/gui/AboutScreen.java +++ b/tim/prune/gui/AboutScreen.java @@ -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("

").append(I18nManager.getText("dialog.about.summarytext1")).append("

"); descBuffer.append("

").append(I18nManager.getText("dialog.about.summarytext2")).append("

"); @@ -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(); } }