package husacct.control.presentation.util;
import husacct.ServiceProvider;
import husacct.common.Resource;
import husacct.common.locale.ILocaleService;
import husacct.control.task.MainController;
import java.awt.Desktop;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.net.URI;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class AboutDialog extends JDialog{
private static final long serialVersionUID = 1L;
private Image img = null;
private JPanel textPanel, gitForkPanel;
private JLabel forkLabel,pictureLabel, husacctLabel, versionLabel, versionNumberLabel;
private JButton okButton, creditsButton;
private String versionNumber = "5.3.2";
private String copyRightText = "\u00a9 2017 HUSACCT (GNU General Public License)";
private MainController mainController;
private JPanel forkLabelPanel;
private ILocaleService localeService = ServiceProvider.getInstance().getLocaleService();
public AboutDialog(MainController mainController) {
super(mainController.getMainGui(), true);
this.mainController = mainController;
setTitle(localeService.getTranslatedString("About"));
setup();
addComponents();
setListeners();
this.setVisible(true);
}
private void setup(){
this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
this.setSize(new Dimension(420, 380));
this.setLayout(new FlowLayout(0,0,0));
this.setResizable(false);
DialogUtils.alignCenter(this);
}
private void addComponents(){
int i = 1+ (int)(Math.random() * 4);
switch(i) {
case 1:
img = Toolkit.getDefaultToolkit().getImage(Resource.get(Resource.GIT_FORK_1));
break;
case 2:
img = Toolkit.getDefaultToolkit().getImage(Resource.get(Resource.GIT_FORK_2));
break;
case 3:
img = Toolkit.getDefaultToolkit().getImage(Resource.get(Resource.GIT_FORK_3));
break;
case 4:
img = Toolkit.getDefaultToolkit().getImage(Resource.get(Resource.GIT_FORK_4));
break;
default:
img = Toolkit.getDefaultToolkit().getImage(Resource.get(Resource.GIT_FORK_1));
break;
}
gitForkPanel = new JPanel();
gitForkPanel.setLayout(new FlowLayout(0,0,0));
gitForkPanel.setPreferredSize(new Dimension(420,256));
gitForkPanel.setBounds(0,0,420,300);
gitForkPanel.setLocation(0,0);
forkLabelPanel = new JPanel();
forkLabelPanel.setLayout(new FlowLayout(0,0,0));
forkLabelPanel.setPreferredSize(new Dimension(150,256));
forkLabel = new JLabel(new ImageIcon (img));
forkLabel.setBounds(0,0,150,150);
forkLabelPanel.add(forkLabel);
JPanel logoLabelPanel = new JPanel();
logoLabelPanel.setLayout(new FlowLayout(0,0,0));
logoLabelPanel.setPreferredSize(new Dimension(256,256));
Image logo = Toolkit.getDefaultToolkit().getImage(Resource.get(Resource.HUSACCT_LOGO));
pictureLabel = new JLabel(new ImageIcon(logo));
pictureLabel.setBounds(0,0,256,256);
logoLabelPanel.add(pictureLabel);
gitForkPanel.add(forkLabelPanel);
gitForkPanel.add(logoLabelPanel);
textPanel = new JPanel();
husacctLabel = new JLabel(copyRightText);
versionLabel = new JLabel(localeService.getTranslatedString("VersionLabel"));
versionNumberLabel = new JLabel(versionNumber);
JPanel buttonPanel = new JPanel();
buttonPanel.setPreferredSize(new Dimension(420,70));
okButton = new JButton(localeService.getTranslatedString("Close"));
creditsButton = new JButton(localeService.getTranslatedString("Credits"));
getRootPane().setDefaultButton(okButton);
getRootPane().add(creditsButton);
buttonPanel.add(okButton);
buttonPanel.add(creditsButton);
textPanel.add(husacctLabel);//, getConstraint(0, 0));
textPanel.add(versionLabel);//, getConstraint(0, 1));
textPanel.add(versionNumberLabel);//, getConstraint(1, 1));
add(gitForkPanel);
add(buttonPanel);
add(textPanel);
}
private void setListeners(){
okButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
dispose();
}
});
creditsButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
new CreditsDialog(mainController);
}
});
forkLabelPanel.addMouseListener(new MouseListener() {
@Override
public void mouseClicked(MouseEvent e) {
try {
if(e.getX() + e.getY() > 90 && e.getX() + e.getY() < 140) {
Desktop.getDesktop().browse(new URI("https://github.com/HUSACCT/HUSACCT"));
}
}
catch (Exception ex) {
ex.printStackTrace();
}
}
@Override
public void mouseEntered(MouseEvent e) {}
@Override
public void mouseExited(MouseEvent e) {}
@Override
public void mousePressed(MouseEvent e) {}
@Override
public void mouseReleased(MouseEvent e) {}
});
}
}