/* * Copyright (C) 2010-2016 JPEXS * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package com.jpexs.decompiler.flash.gui; import com.jpexs.decompiler.flash.ApplicationInfo; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Container; import java.awt.FlowLayout; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.List; import java.util.Locale; import java.util.ResourceBundle; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.SwingConstants; /** * * @author JPEXS */ public class AboutDialog extends AppDialog { private static final String[] DEVELOPERS = new String[]{ "JPEXS", "honfika", "others" }; private static final String AUTHOR = "JPEXS"; public AboutDialog() { setDefaultCloseOperation(HIDE_ON_CLOSE); //setSize(new Dimension(300, 320)); setTitle(translate("dialog.title")); DEVELOPERS[DEVELOPERS.length - 1] = translate("developers.others"); // translate "others" text JPanel twoPanes = new JPanel(); twoPanes.setLayout(new BoxLayout(twoPanes, BoxLayout.X_AXIS)); Container cnt = getContentPane(); JPanel cp = new JPanel(); cp.setBorder(BorderFactory.createEmptyBorder(5, 10, 5, 10)); cnt.setLayout(new BorderLayout()); JPanel appNamePanel = new JPanel(new FlowLayout()); JLabel jpLabel = new JLabel("JPEXS"); jpLabel.setAlignmentX(0.5f); jpLabel.setForeground(new Color(0, 0, 160)); jpLabel.setFont(new Font("Tahoma", Font.BOLD, 25)); jpLabel.setHorizontalAlignment(SwingConstants.CENTER); appNamePanel.add(jpLabel); JLabel ffLabel = new JLabel("Free Flash"); ffLabel.setAlignmentX(0.5f); ffLabel.setFont(new Font("Tahoma", Font.BOLD, 25)); ffLabel.setHorizontalAlignment(SwingConstants.CENTER); appNamePanel.add(ffLabel); JLabel decLabel = new JLabel("Decompiler"); decLabel.setAlignmentX(0.5f); decLabel.setForeground(Color.red); decLabel.setFont(new Font("Tahoma", Font.BOLD, 25)); decLabel.setHorizontalAlignment(SwingConstants.CENTER); appNamePanel.add(decLabel); appNamePanel.setAlignmentX(0.5f); cp = new JPanel(); cp.setBorder(BorderFactory.createEmptyBorder(5, 10, 5, 10)); cp.setLayout(new BoxLayout(cp, BoxLayout.Y_AXIS)); cp.add(appNamePanel); JLabel verLabel = new JLabel(translate("version") + " " + ApplicationInfo.version); verLabel.setAlignmentX(0.5f); //verLabel.setPreferredSize(new Dimension(300, 15)); verLabel.setFont(new Font("Tahoma", Font.BOLD, 15)); verLabel.setHorizontalAlignment(SwingConstants.CENTER); cp.add(verLabel); cnt.add(cp, BorderLayout.NORTH); cp = new JPanel(); cp.setBorder(BorderFactory.createEmptyBorder(5, 10, 5, 10)); cp.setLayout(new BoxLayout(cp, BoxLayout.Y_AXIS)); JLabel byLabel = new JLabel(translate("by")); byLabel.setAlignmentX(0.5f); byLabel.setHorizontalAlignment(SwingConstants.CENTER); cp.add(byLabel); JLabel authorLabel = new JLabel(AUTHOR); authorLabel.setAlignmentX(0.5f); authorLabel.setForeground(new Color(0, 0, 160)); authorLabel.setFont(new Font("Tahoma", Font.BOLD, 20)); //jpexsLabel.setPreferredSize(new Dimension(300, 25)); authorLabel.setHorizontalAlignment(SwingConstants.CENTER); cp.add(authorLabel); JLabel dateLabel = new JLabel("2010-2016"); dateLabel.setAlignmentX(0.5f); //dateLabel.setPreferredSize(new Dimension(300, 10)); dateLabel.setHorizontalAlignment(SwingConstants.CENTER); cp.add(dateLabel); LinkLabel wwwLabel = new LinkLabel(ApplicationInfo.PROJECT_PAGE, ApplicationInfo.PROJECT_PAGE + "?utm_source=app&utm_medium=about&utm_campaign=app"); wwwLabel.setAlignmentX(0.5f); wwwLabel.setForeground(Color.blue); //wwwLabel.setPreferredSize(new Dimension(300, 25)); wwwLabel.setHorizontalAlignment(SwingConstants.CENTER); cp.add(wwwLabel); cp.add(Box.createVerticalStrut(20)); JLabel transAuthorLabel = new JLabel(translate("translation.author.label")); transAuthorLabel.setAlignmentX(0.5f); //transAuthorLabel.setPreferredSize(new Dimension(300, 20)); transAuthorLabel.setHorizontalAlignment(SwingConstants.CENTER); JLabel transAuthor = new JLabel(translate("translation.author")); transAuthor.setAlignmentX(0.5f); transAuthor.setHorizontalAlignment(SwingConstants.CENTER); cp.add(transAuthorLabel); cp.add(transAuthor); cp.add(Box.createVerticalStrut(50)); JLabel developersLabel = new JLabel(translate("developers")); developersLabel.setAlignmentX(0.5f); developersLabel.setHorizontalAlignment(SwingConstants.CENTER); developersLabel.setFont(developersLabel.getFont().deriveFont(Font.BOLD)); cp.add(developersLabel); for (String c : DEVELOPERS) { JLabel developerNameLabel = new JLabel(c); developerNameLabel.setAlignmentX(0.5f); developerNameLabel.setHorizontalAlignment(SwingConstants.CENTER); cp.add(developerNameLabel); } cp.setAlignmentY(0); twoPanes.add(cp); cp = new JPanel(); cp.setBorder(BorderFactory.createEmptyBorder(5, 10, 5, 10)); cp.setLayout(new BoxLayout(cp, BoxLayout.Y_AXIS)); JLabel translatorsLabel = new JLabel(translate("translators")); translatorsLabel.setAlignmentX(0.5f); translatorsLabel.setHorizontalAlignment(SwingConstants.CENTER); translatorsLabel.setFont(translatorsLabel.getFont().deriveFont(Font.BOLD)); cp.add(translatorsLabel); List<String> translators = new ArrayList<>(); for (String code : SelectLanguageDialog.languages) { Locale l = Locale.forLanguageTag(code.equals("en") ? "" : code); ResourceBundle b = ResourceBundle.getBundle(AppStrings.getResourcePath(AboutDialog.class), l); translators.add(Locale.forLanguageTag(code).getDisplayName() + " - " + b.getString("translation.author")); } for (String c : translators) { JLabel translatorName = new JLabel(c); translatorName.setAlignmentX(0.5f); translatorName.setHorizontalAlignment(SwingConstants.CENTER); cp.add(translatorName); } cp.add(Box.createVerticalStrut(10)); cp.setAlignmentY(0); twoPanes.add(cp); cnt.add(twoPanes, BorderLayout.CENTER); cp = new JPanel(new FlowLayout()); cnt.add(cp, BorderLayout.SOUTH); JButton okButton = new JButton(translate("button.ok")); okButton.setAlignmentX(0.5f); cp.add(okButton); okButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { setVisible(false); } }); getRootPane().setDefaultButton(okButton); setModal(true); View.setWindowIcon(this); setResizable(false); pack(); View.centerScreen(this); } }