package org.irmacard.personalisation;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import java.awt.Font;
import javax.swing.JTextField;
import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;
import java.awt.Insets;
import javax.swing.JPasswordField;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.io.IOException;
import java.util.Properties;
import java.util.ResourceBundle;
import javax.swing.JTextArea;
public class ConfigDialog extends JDialog {
private static final long serialVersionUID = 3564813686350167114L;
private static final ResourceBundle BUNDLE = ResourceBundle.getBundle("org.irmacard.personalisation.messages"); //$NON-NLS-1$
public static final String CONFIG_FILENAME = "config.encrypted";
private final JPanel contentPanel = new JPanel();
private JTextField tbFrom;
private JTextField tbSmtp;
private JTextField tbMailSubject;
private JTextField tbDbUrl;
private JTextField tbDbUsername;
private JTextField tbDbPassword;
private JPasswordField passwordField;
private Properties props = null;
private JTextArea tbMailBody;
/**
* Launch the application.
*/
public static void main(String[] args) {
try {
ConfigDialog dialog = new ConfigDialog(null);
dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
dialog.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* Create the dialog.
*/
public ConfigDialog(JDialog owner) {
super(owner, true);
setBounds(100, 100, 633, 417);
getContentPane().setLayout(new BorderLayout());
contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
getContentPane().add(contentPanel, BorderLayout.CENTER);
GridBagLayout gbl_contentPanel = new GridBagLayout();
gbl_contentPanel.columnWidths = new int[]{0, 0, 0};
gbl_contentPanel.rowHeights = new int[]{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
gbl_contentPanel.columnWeights = new double[]{0.0, 1.0, Double.MIN_VALUE};
gbl_contentPanel.rowWeights = new double[]{0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, Double.MIN_VALUE};
contentPanel.setLayout(gbl_contentPanel);
{
JLabel lblMail = new JLabel(BUNDLE.getString("ConfigDialog.lblMail.text")); //$NON-NLS-1$
lblMail.setFont(new Font("Tahoma", Font.BOLD, 11));
GridBagConstraints gbc_lblMail = new GridBagConstraints();
gbc_lblMail.anchor = GridBagConstraints.WEST;
gbc_lblMail.insets = new Insets(0, 0, 5, 5);
gbc_lblMail.gridx = 0;
gbc_lblMail.gridy = 0;
contentPanel.add(lblMail, gbc_lblMail);
}
{
JLabel lblFromAdres = new JLabel(BUNDLE.getString("ConfigDialog.lblFromAdres.text")); //$NON-NLS-1$
GridBagConstraints gbc_lblFromAdres = new GridBagConstraints();
gbc_lblFromAdres.insets = new Insets(0, 0, 5, 5);
gbc_lblFromAdres.anchor = GridBagConstraints.EAST;
gbc_lblFromAdres.gridx = 0;
gbc_lblFromAdres.gridy = 1;
contentPanel.add(lblFromAdres, gbc_lblFromAdres);
}
{
tbFrom = new JTextField();
GridBagConstraints gbc_tbFrom = new GridBagConstraints();
gbc_tbFrom.insets = new Insets(0, 0, 5, 0);
gbc_tbFrom.fill = GridBagConstraints.HORIZONTAL;
gbc_tbFrom.gridx = 1;
gbc_tbFrom.gridy = 1;
contentPanel.add(tbFrom, gbc_tbFrom);
tbFrom.setColumns(10);
}
{
JLabel lblSmtpServer = new JLabel(BUNDLE.getString("ConfigDialog.lblSmtpServer.text")); //$NON-NLS-1$
GridBagConstraints gbc_lblSmtpServer = new GridBagConstraints();
gbc_lblSmtpServer.anchor = GridBagConstraints.EAST;
gbc_lblSmtpServer.insets = new Insets(0, 0, 5, 5);
gbc_lblSmtpServer.gridx = 0;
gbc_lblSmtpServer.gridy = 2;
contentPanel.add(lblSmtpServer, gbc_lblSmtpServer);
}
{
tbSmtp = new JTextField();
GridBagConstraints gbc_tbSmtp = new GridBagConstraints();
gbc_tbSmtp.insets = new Insets(0, 0, 5, 0);
gbc_tbSmtp.anchor = GridBagConstraints.NORTH;
gbc_tbSmtp.fill = GridBagConstraints.HORIZONTAL;
gbc_tbSmtp.gridx = 1;
gbc_tbSmtp.gridy = 2;
contentPanel.add(tbSmtp, gbc_tbSmtp);
tbSmtp.setColumns(10);
}
{
JLabel lblMailSubject = new JLabel(BUNDLE.getString("ConfigDialog.lblMailSubject.text")); //$NON-NLS-1$
GridBagConstraints gbc_lblMailSubject = new GridBagConstraints();
gbc_lblMailSubject.anchor = GridBagConstraints.EAST;
gbc_lblMailSubject.insets = new Insets(0, 0, 5, 5);
gbc_lblMailSubject.gridx = 0;
gbc_lblMailSubject.gridy = 3;
contentPanel.add(lblMailSubject, gbc_lblMailSubject);
}
{
tbMailSubject = new JTextField();
GridBagConstraints gbc_tbMailSubject = new GridBagConstraints();
gbc_tbMailSubject.insets = new Insets(0, 0, 5, 0);
gbc_tbMailSubject.fill = GridBagConstraints.HORIZONTAL;
gbc_tbMailSubject.gridx = 1;
gbc_tbMailSubject.gridy = 3;
contentPanel.add(tbMailSubject, gbc_tbMailSubject);
tbMailSubject.setColumns(10);
}
{
JLabel lblBody = new JLabel(BUNDLE.getString("ConfigDialog.lblBody.text")); //$NON-NLS-1$
GridBagConstraints gbc_lblBody = new GridBagConstraints();
gbc_lblBody.anchor = GridBagConstraints.EAST;
gbc_lblBody.insets = new Insets(0, 0, 5, 5);
gbc_lblBody.gridx = 0;
gbc_lblBody.gridy = 4;
contentPanel.add(lblBody, gbc_lblBody);
}
{
tbMailBody = new JTextArea();
GridBagConstraints gbc_tbMailBody = new GridBagConstraints();
gbc_tbMailBody.gridheight = 2;
gbc_tbMailBody.insets = new Insets(0, 0, 5, 0);
gbc_tbMailBody.fill = GridBagConstraints.BOTH;
gbc_tbMailBody.gridx = 1;
gbc_tbMailBody.gridy = 4;
contentPanel.add(tbMailBody, gbc_tbMailBody);
}
{
JLabel lblDatabase = new JLabel(BUNDLE.getString("ConfigDialog.lblDatabase.text")); //$NON-NLS-1$
lblDatabase.setFont(new Font("Tahoma", Font.BOLD, 11));
GridBagConstraints gbc_lblDatabase = new GridBagConstraints();
gbc_lblDatabase.insets = new Insets(0, 0, 5, 5);
gbc_lblDatabase.gridx = 0;
gbc_lblDatabase.gridy = 6;
contentPanel.add(lblDatabase, gbc_lblDatabase);
}
{
JLabel lblUrl = new JLabel(BUNDLE.getString("ConfigDialog.lblUrl.text")); //$NON-NLS-1$
GridBagConstraints gbc_lblUrl = new GridBagConstraints();
gbc_lblUrl.anchor = GridBagConstraints.EAST;
gbc_lblUrl.insets = new Insets(0, 0, 5, 5);
gbc_lblUrl.gridx = 0;
gbc_lblUrl.gridy = 7;
contentPanel.add(lblUrl, gbc_lblUrl);
}
{
tbDbUrl = new JTextField();
GridBagConstraints gbc_tbDbUrl = new GridBagConstraints();
gbc_tbDbUrl.insets = new Insets(0, 0, 5, 0);
gbc_tbDbUrl.fill = GridBagConstraints.HORIZONTAL;
gbc_tbDbUrl.gridx = 1;
gbc_tbDbUrl.gridy = 7;
contentPanel.add(tbDbUrl, gbc_tbDbUrl);
tbDbUrl.setColumns(10);
}
{
JLabel lblUsername = new JLabel(BUNDLE.getString("ConfigDialog.lblUsername.text")); //$NON-NLS-1$
GridBagConstraints gbc_lblUsername = new GridBagConstraints();
gbc_lblUsername.anchor = GridBagConstraints.EAST;
gbc_lblUsername.insets = new Insets(0, 0, 5, 5);
gbc_lblUsername.gridx = 0;
gbc_lblUsername.gridy = 8;
contentPanel.add(lblUsername, gbc_lblUsername);
}
{
tbDbUsername = new JTextField();
GridBagConstraints gbc_tbDbUsername = new GridBagConstraints();
gbc_tbDbUsername.insets = new Insets(0, 0, 5, 0);
gbc_tbDbUsername.fill = GridBagConstraints.HORIZONTAL;
gbc_tbDbUsername.gridx = 1;
gbc_tbDbUsername.gridy = 8;
contentPanel.add(tbDbUsername, gbc_tbDbUsername);
tbDbUsername.setColumns(10);
}
{
JLabel lblPassword = new JLabel(BUNDLE.getString("ConfigDialog.lblPassword.text")); //$NON-NLS-1$
GridBagConstraints gbc_lblPassword = new GridBagConstraints();
gbc_lblPassword.anchor = GridBagConstraints.EAST;
gbc_lblPassword.insets = new Insets(0, 0, 5, 5);
gbc_lblPassword.gridx = 0;
gbc_lblPassword.gridy = 9;
contentPanel.add(lblPassword, gbc_lblPassword);
}
{
tbDbPassword = new JTextField();
GridBagConstraints gbc_tbDbPassword = new GridBagConstraints();
gbc_tbDbPassword.insets = new Insets(0, 0, 5, 0);
gbc_tbDbPassword.fill = GridBagConstraints.HORIZONTAL;
gbc_tbDbPassword.gridx = 1;
gbc_tbDbPassword.gridy = 9;
contentPanel.add(tbDbPassword, gbc_tbDbPassword);
tbDbPassword.setColumns(10);
}
{
JLabel lblEncryption = new JLabel(BUNDLE.getString("ConfigDialog.lblEncryption.text")); //$NON-NLS-1$
lblEncryption.setFont(new Font("Tahoma", Font.BOLD, 11));
GridBagConstraints gbc_lblEncryption = new GridBagConstraints();
gbc_lblEncryption.anchor = GridBagConstraints.WEST;
gbc_lblEncryption.insets = new Insets(0, 0, 5, 5);
gbc_lblEncryption.gridx = 0;
gbc_lblEncryption.gridy = 11;
contentPanel.add(lblEncryption, gbc_lblEncryption);
}
{
JLabel lblEncPassword = new JLabel(BUNDLE.getString("ConfigDialog.lblPassword_1.text")); //$NON-NLS-1$
GridBagConstraints gbc_lblEncPassword = new GridBagConstraints();
gbc_lblEncPassword.anchor = GridBagConstraints.EAST;
gbc_lblEncPassword.insets = new Insets(0, 0, 5, 5);
gbc_lblEncPassword.gridx = 0;
gbc_lblEncPassword.gridy = 12;
contentPanel.add(lblEncPassword, gbc_lblEncPassword);
}
{
passwordField = new JPasswordField();
GridBagConstraints gbc_passwordField = new GridBagConstraints();
gbc_passwordField.insets = new Insets(0, 0, 5, 0);
gbc_passwordField.fill = GridBagConstraints.HORIZONTAL;
gbc_passwordField.gridx = 1;
gbc_passwordField.gridy = 12;
contentPanel.add(passwordField, gbc_passwordField);
}
{
JPanel buttonPane = new JPanel();
buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT));
getContentPane().add(buttonPane, BorderLayout.SOUTH);
{
JButton okButton = new JButton(BUNDLE.getString("okButton.text")); //$NON-NLS-1$
okButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
Properties config = new Properties();
//Mail:
config.setProperty("fromAdres", tbFrom.getText());
config.setProperty("smtpServer", tbSmtp.getText());
config.setProperty("mailSubject", tbMailSubject.getText());
config.setProperty("mailBody", tbMailBody.getText());
//Database:
config.setProperty("database_url", tbDbUrl.getText());
config.setProperty("database_username", tbDbUsername.getText());
config.setProperty("database_password", tbDbPassword.getText());
props = config;
EncryptedLoader loader = new EncryptedLoader(passwordField.getPassword(), CONFIG_FILENAME);
try {
loader.save(config);
} catch (IOException e) {
Logger.log("Error while writing config", e);
JOptionPane.showMessageDialog(ConfigDialog.this, BUNDLE.getString("ConfigDialog.mbox.writeError"));
e.printStackTrace();
}
setVisible(false);
}
});
okButton.setActionCommand("OK");
buttonPane.add(okButton);
getRootPane().setDefaultButton(okButton);
}
{
JButton cancelButton = new JButton(BUNDLE.getString("cancelButton.text")); //$NON-NLS-1$
cancelButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
setVisible(false);
}
});
cancelButton.setActionCommand("Cancel");
buttonPane.add(cancelButton);
}
}
}
public Properties showDialog() throws IOException {
setVisible(true);
return props;
}
}