* An “about” dialog.
*
* @author David ‘Bombe’ Roden <bombe@freenetproject.org>
- * @version $Id$
*/
public class AboutDialog extends JDialog implements I18nable {
/** A list of all contributors. */
private static final List<Contributor> CONTRIBUTORS = new ArrayList<Contributor>();
+ /** A list of all code usages. */
+ private static final List<CodeUsage> CODE_USAGES = new ArrayList<CodeUsage>();
+
static {
CONTRIBUTORS.add(new Contributor("David ‘Bombe’ Roden", "bombe@freenetproject.org", "Main code"));
+ CODE_USAGES.add(new CodeUsage("Tango Desktop Project", "http://tango.freedesktop.org/", "Creative Commons Attribution-Share Alike 2.5", "Icons"));
}
/** The “okay” button action. */
/** The i18n maintainer’s name label. */
private JLabel i18nMaintainerNameLabel;
+ /** The “other people’s code used” label. */
+ private I18nLabel codeUsageLabel;
+
/** The license header. */
private I18nLabel licenseHeaderLabel;
+ /** The tabbed pane with all the pages. */
+ private JTabbedPane pagesPane;
+
/**
* Creates a new “about” dialog.
*
*/
private void initActions() {
okayAction = new I18nAction("general.button.okay") {
+
/**
* @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
*/
getContentPane().add(contentPane, BorderLayout.CENTER);
contentPane.setBorder(BorderFactory.createEmptyBorder(12, 12, 12, 12));
- JTabbedPane tabbedPane = new JTabbedPane(SwingConstants.TOP, JTabbedPane.SCROLL_TAB_LAYOUT);
- contentPane.add(tabbedPane, BorderLayout.CENTER);
+ pagesPane = new JTabbedPane(SwingConstants.TOP, JTabbedPane.SCROLL_TAB_LAYOUT);
+ contentPane.add(pagesPane, BorderLayout.CENTER);
- tabbedPane.addTab(I18n.get("aboutDialog.page.about.title"), createAboutPage());
- tabbedPane.setToolTipTextAt(0, I18n.get("aboutDialog.page.about.shortDescription"));
- tabbedPane.addTab(I18n.get("aboutDialog.page.license.title"), createLicensePage());
- tabbedPane.setToolTipTextAt(1, I18n.get("aboutDialog.page.license.shortDescription"));
+ pagesPane.addTab(I18n.get("aboutDialog.page.about.title"), createAboutPage());
+ pagesPane.setToolTipTextAt(0, I18n.get("aboutDialog.page.about.shortDescription"));
+ pagesPane.addTab(I18n.get("aboutDialog.page.license.title"), createLicensePage());
+ pagesPane.setToolTipTextAt(1, I18n.get("aboutDialog.page.license.shortDescription"));
JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.TRAILING));
contentPane.add(buttonPanel, BorderLayout.PAGE_END);
i18nMaintainerNameLabel = new JLabel(I18n.get("i18n.maintainer.name") + " <" + I18n.get("i18n.maintainer.email") + ">");
textPanel.add(i18nMaintainerNameLabel);
+ textPanel.add(Box.createVerticalStrut(24));
+
+ codeUsageLabel = new I18nLabel("aboutDialog.page.about.label.codeUsage");
+ codeUsageLabel.setFont(codeUsageLabel.getFont().deriveFont(Font.BOLD));
+ textPanel.add(codeUsageLabel);
+ textPanel.add(Box.createVerticalStrut(12));
+
+ for (CodeUsage codeUsage: CODE_USAGES) {
+ JLabel usageLabel = new JLabel(codeUsage.getName() + " (" + codeUsage.getURL() + ", " + codeUsage.getLicense() + ")");
+ textPanel.add(usageLabel);
+ }
return aboutPanel;
}
JPanel licensePanel = new JPanel(new BorderLayout(12, 12));
licensePanel.setBorder(BorderFactory.createEmptyBorder(12, 12, 12, 12));
+ JPanel licenseHeaderPanel = new JPanel(new FlowLayout());
+ licensePanel.add(licenseHeaderPanel, BorderLayout.PAGE_START);
+
licenseHeaderLabel = new I18nLabel("aboutDialog.page.license.header", Version.getVersion());
- licensePanel.add(licenseHeaderLabel, BorderLayout.PAGE_START);
+ licenseHeaderPanel.add(licenseHeaderLabel);
licenseHeaderLabel.setAlignmentX(0.5f);
String licenseText = loadLicenseText();
contributorsLabel.updateI18n();
licenseHeaderLabel.updateI18n();
i18nMaintainerLabel.updateI18n();
+ codeUsageLabel.updateI18n();
i18nMaintainerNameLabel.setText(I18n.get("i18n.maintainer.name") + " <" + I18n.get("i18n.maintainer.email") + ">");
okayAction.updateI18n();
setTitle(I18n.get("aboutDialog.title"));
+ pagesPane.setTitleAt(0, I18n.get("aboutDialog.page.about.title"));
+ pagesPane.setToolTipTextAt(0, I18n.get("aboutDialog.page.about.shortDescription"));
+ pagesPane.setTitleAt(1, I18n.get("aboutDialog.page.license.title"));
+ pagesPane.setToolTipTextAt(1, I18n.get("aboutDialog.page.license.shortDescription"));
SwingUtils.repackCentered(this);
}
* Container for a contributor.
*
* @author David ‘Bombe’ Roden <bombe@freenetproject.org>
- * @version $Id$
*/
private static class Contributor {
}
+ /**
+ * A code usage object describes code or other resources that have been
+ * taken from other projects.
+ *
+ * @author David ‘Bombe’ Roden <bombe@freenetproject.org>
+ */
+ private static class CodeUsage {
+
+ /** The name of the project. */
+ private final String name;
+
+ /** The URL of the project. */
+ private final String url;
+
+ /** The license of the project. */
+ private final String license;
+
+ /** The part that is used. */
+ private final String part;
+
+ /**
+ * Creates a new code usage object.
+ *
+ * @param name
+ * The name of the project
+ * @param url
+ * The URL of the project
+ * @param license
+ * The license of the used code
+ * @param part
+ * The part that is used
+ */
+ public CodeUsage(String name, String url, String license, String part) {
+ this.name = name;
+ this.url = url;
+ this.license = license;
+ this.part = part;
+ }
+
+ /**
+ * Returns the name of the project.
+ *
+ * @return The name of the project
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * Returns the URL of the project.
+ *
+ * @return The URL of the project
+ */
+ public String getURL() {
+ return url;
+ }
+
+ /**
+ * Returns the license of the used part.
+ *
+ * @return The license of the used part
+ */
+ public String getLicense() {
+ return license;
+ }
+
+ /**
+ * Returns the used part.
+ *
+ * @return The used part
+ */
+ public String getPart() {
+ return part;
+ }
+
+ }
+
}