/*
*
* Panbox - encryption for cloud storage
* Copyright (C) 2014-2015 by Fraunhofer SIT and Sirrix AG
*
* 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/>.
*
* Additonally, third party code may be provided with notices and open source
* licenses from communities and third parties that govern the use of those
* portions, and any licenses granted hereunder do not alter any rights and
* obligations you may have under such open source licenses, however, the
* disclaimer of warranty and limitation of liability provisions of the GPLv3
* will apply to all the product.
*
*/
package org.panbox.desktop.common.gui;
import org.panbox.Settings;
import javax.swing.*;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Arrays;
import java.util.ResourceBundle;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class SetupWizardDialog extends javax.swing.JDialog {
private static ResourceBundle bundle = ResourceBundle.getBundle(
"org.panbox.desktop.common.gui.Messages", Settings.getInstance()
.getLocale());
private static final long serialVersionUID = -3740729720494856729L;
// Official RFC 2822 regex for valid email addresses
private static final String EMAIL_PATTERN = "(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])";;
private final Pattern pattern;
private int step = 0; // always start in information screen
private String firstname;
private String lastname;
private String email;
private String devicename;
private char[] password;
private boolean protectDeviceKey;
private boolean canceled = true;
private Matcher matcher;
/**
* Creates new form SetupWizardDialog
*
* @param parent
* @param modal
*/
public SetupWizardDialog(java.awt.Frame parent, boolean modal) {
super(parent, modal);
bundle = ResourceBundle.getBundle(
"org.panbox.desktop.common.gui.Messages", Settings
.getInstance().getLocale());
pattern = Pattern.compile(EMAIL_PATTERN);
initComponents();
getRootPane().setDefaultButton(nextFinishButton);
nextFinishButton.requestFocus();
}
private static String getLocalHostname() {
try {
String name = System.getenv("COMPUTERNAME");
if (name == null || name.isEmpty()) {
InetAddress addr = InetAddress.getLocalHost();
return addr.getHostName();
}
return name;
} catch (UnknownHostException ex) {
return bundle.getString("Unknown");
}
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed"
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
personalDataPanel = new javax.swing.JPanel();
personalDataLabel = new javax.swing.JLabel();
firstnameLabel = new javax.swing.JLabel();
firstnameTextField = new javax.swing.JTextField();
emailLabel = new javax.swing.JLabel();
emailTextField = new javax.swing.JTextField();
lastnameLabel = new javax.swing.JLabel();
lastnameTextField = new javax.swing.JTextField();
summaryPanel = new javax.swing.JPanel();
summaryLabel = new javax.swing.JLabel();
nameSummaryLabel = new javax.swing.JLabel();
emailSummaryLabel = new javax.swing.JLabel();
finishedFirstname = new javax.swing.JLabel();
finishedEmail = new javax.swing.JLabel();
lastnameSummaryLabel = new javax.swing.JLabel();
finishedLastname = new javax.swing.JLabel();
devicenameSummaryLabel = new javax.swing.JLabel();
finishedDevicename = new javax.swing.JLabel();
devicenameSummaryLabel1 = new javax.swing.JLabel();
finishedPassword = new javax.swing.JLabel();
passwordPanel = new javax.swing.JPanel();
passwordPanelLabel = new javax.swing.JLabel();
deviceNameLabel1 = new javax.swing.JLabel();
passwordTextField = new javax.swing.JPasswordField();
passwordRepeatTextField = new javax.swing.JPasswordField();
deviceNameLabel2 = new javax.swing.JLabel();
devicePasswordPanel = new javax.swing.JPanel();
deviceNamePasswordLabel = new javax.swing.JLabel();
deviceNameLabel = new javax.swing.JLabel();
deviceNameTextField = new javax.swing.JTextField();
resetDeviceNameButton = new javax.swing.JButton();
protectDeviceKeyPanel = new javax.swing.JPanel();
protectDeviceKeyLabel = new javax.swing.JLabel();
protectDeviceKeyCheckbox = new javax.swing.JCheckBox();
nextFinishButton = new javax.swing.JButton();
abortBackButton = new javax.swing.JButton();
dialogPanel = new javax.swing.JPanel();
informationPanel = new javax.swing.JPanel();
informationLabel = new javax.swing.JLabel();
java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("org/panbox/desktop/common/gui/Messages"); // NOI18N
personalDataLabel.setText(bundle.getString("SetupWizardDialog.personalDataLabel.text")); // NOI18N
firstnameLabel.setText(bundle.getString("SetupWizardDialog.firstnameLabel.text")); // NOI18N
firstnameTextField.setText(bundle.getString("SetupWizardDialog.firstnameTextField.text")); // NOI18N
firstnameTextField.addFocusListener(new java.awt.event.FocusAdapter() {
public void focusGained(java.awt.event.FocusEvent evt) {
firstnameTextFieldFocusGained(evt);
}
});
emailLabel.setText(bundle.getString("SetupWizardDialog.emailLabel.text")); // NOI18N
emailTextField.setText(bundle.getString("SetupWizardDialog.emailTextField.text")); // NOI18N
emailTextField.addFocusListener(new java.awt.event.FocusAdapter() {
public void focusGained(java.awt.event.FocusEvent evt) {
emailTextFieldFocusGained(evt);
}
});
lastnameLabel.setText(bundle.getString("SetupWizardDialog.lastnameLabel.text")); // NOI18N
lastnameTextField.setText(bundle.getString("SetupWizardDialog.lastnameTextField.text")); // NOI18N
lastnameTextField.addFocusListener(new java.awt.event.FocusAdapter() {
public void focusGained(java.awt.event.FocusEvent evt) {
lastnameTextFieldFocusGained(evt);
}
});
javax.swing.GroupLayout personalDataPanelLayout = new javax.swing.GroupLayout(personalDataPanel);
personalDataPanel.setLayout(personalDataPanelLayout);
personalDataPanelLayout.setHorizontalGroup(
personalDataPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(personalDataLabel, javax.swing.GroupLayout.DEFAULT_SIZE, 477, Short.MAX_VALUE)
.addGroup(personalDataPanelLayout.createSequentialGroup()
.addGroup(personalDataPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(emailLabel, javax.swing.GroupLayout.DEFAULT_SIZE, 120, Short.MAX_VALUE)
.addComponent(lastnameLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(firstnameLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(personalDataPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(emailTextField)
.addComponent(firstnameTextField)
.addComponent(lastnameTextField))
.addContainerGap())
);
personalDataPanelLayout.setVerticalGroup(
personalDataPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(personalDataPanelLayout.createSequentialGroup()
.addComponent(personalDataLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addGroup(personalDataPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(firstnameLabel)
.addComponent(firstnameTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(personalDataPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(lastnameLabel)
.addComponent(lastnameTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(personalDataPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(emailLabel)
.addComponent(emailTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(32, Short.MAX_VALUE))
);
summaryLabel.setText(bundle.getString("SetupWizardDialog.summaryLabel.text")); // NOI18N
nameSummaryLabel.setText(bundle.getString("SetupWizardDialog.nameSummaryLabel.text")); // NOI18N
emailSummaryLabel.setText(bundle.getString("SetupWizardDialog.emailSummaryLabel.text")); // NOI18N
finishedFirstname.setText(bundle.getString("SetupWizardDialog.finishedFirstname.text")); // NOI18N
finishedEmail.setText(bundle.getString("SetupWizardDialog.finishedEmail.text")); // NOI18N
lastnameSummaryLabel.setText(bundle.getString("SetupWizardDialog.lastnameSummaryLabel.text")); // NOI18N
finishedLastname.setText(bundle.getString("SetupWizardDialog.finishedLastname.text")); // NOI18N
devicenameSummaryLabel.setText(bundle.getString("SetupWizardDialog.devicenameSummaryLabel.text")); // NOI18N
finishedDevicename.setText(bundle.getString("SetupWizardDialog.finishedDevicename.text")); // NOI18N
devicenameSummaryLabel1.setText(bundle.getString("SetupWizardDialog.devicenameSummaryLabel1.text")); // NOI18N
finishedPassword.setText(bundle.getString("SetupWizardDialog.finishedPassword.text")); // NOI18N
javax.swing.GroupLayout summaryPanelLayout = new javax.swing.GroupLayout(summaryPanel);
summaryPanel.setLayout(summaryPanelLayout);
summaryPanelLayout.setHorizontalGroup(
summaryPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(summaryLabel, javax.swing.GroupLayout.DEFAULT_SIZE, 477, Short.MAX_VALUE)
.addGroup(summaryPanelLayout.createSequentialGroup()
.addGroup(summaryPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(summaryPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
.addComponent(nameSummaryLabel, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(lastnameSummaryLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(devicenameSummaryLabel, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 100, Short.MAX_VALUE)
.addComponent(devicenameSummaryLabel1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 100, Short.MAX_VALUE))
.addComponent(emailSummaryLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(summaryPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(finishedFirstname, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(finishedEmail, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(finishedLastname, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(finishedDevicename, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(finishedPassword, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addContainerGap())
);
summaryPanelLayout.setVerticalGroup(
summaryPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(summaryPanelLayout.createSequentialGroup()
.addComponent(summaryLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addGroup(summaryPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(nameSummaryLabel)
.addComponent(finishedFirstname))
.addGap(18, 18, 18)
.addGroup(summaryPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(lastnameSummaryLabel)
.addComponent(finishedLastname))
.addGap(18, 18, 18)
.addGroup(summaryPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(emailSummaryLabel)
.addComponent(finishedEmail))
.addGap(18, 18, 18)
.addGroup(summaryPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(devicenameSummaryLabel)
.addComponent(finishedDevicename))
.addGap(18, 18, 18)
.addGroup(summaryPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(devicenameSummaryLabel1)
.addComponent(finishedPassword))
.addContainerGap(14, Short.MAX_VALUE))
);
passwordPanelLabel.setText(bundle.getString("SetupWizardDialog.passwordPanelLabel.text")); // NOI18N
deviceNameLabel1.setText(bundle.getString("SetupWizardDialog.deviceNameLabel1.text")); // NOI18N
deviceNameLabel2.setText(bundle.getString("SetupWizardDialog.deviceNameLabel2.text")); // NOI18N
javax.swing.GroupLayout passwordPanelLayout = new javax.swing.GroupLayout(passwordPanel);
passwordPanel.setLayout(passwordPanelLayout);
passwordPanelLayout.setHorizontalGroup(
passwordPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(passwordPanelLabel, javax.swing.GroupLayout.DEFAULT_SIZE, 477, Short.MAX_VALUE)
.addGroup(passwordPanelLayout.createSequentialGroup()
.addGroup(passwordPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(deviceNameLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(deviceNameLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(passwordPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(passwordRepeatTextField)
.addComponent(passwordTextField))
.addContainerGap())
);
passwordPanelLayout.setVerticalGroup(
passwordPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(passwordPanelLayout.createSequentialGroup()
.addComponent(passwordPanelLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addGroup(passwordPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(deviceNameLabel1)
.addComponent(passwordTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(passwordPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(passwordRepeatTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(deviceNameLabel2))
.addContainerGap(95, Short.MAX_VALUE))
);
deviceNamePasswordLabel.setText(bundle.getString("SetupWizardDialog.deviceNamePasswordLabel.text")); // NOI18N
deviceNameLabel.setText(bundle.getString("SetupWizardDialog.deviceNameLabel.text")); // NOI18N
deviceNameTextField.setText(getLocalHostname());
resetDeviceNameButton.setText(bundle.getString("SetupWizardDialog.resetDeviceNameButton.text")); // NOI18N
resetDeviceNameButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
resetDeviceNameButtonActionPerformed(evt);
}
});
javax.swing.GroupLayout devicePasswordPanelLayout = new javax.swing.GroupLayout(devicePasswordPanel);
devicePasswordPanel.setLayout(devicePasswordPanelLayout);
devicePasswordPanelLayout.setHorizontalGroup(
devicePasswordPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(deviceNamePasswordLabel, javax.swing.GroupLayout.DEFAULT_SIZE, 477, Short.MAX_VALUE)
.addGroup(devicePasswordPanelLayout.createSequentialGroup()
.addComponent(deviceNameLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(deviceNameTextField)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(resetDeviceNameButton)
.addContainerGap())
);
devicePasswordPanelLayout.setVerticalGroup(
devicePasswordPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(devicePasswordPanelLayout.createSequentialGroup()
.addComponent(deviceNamePasswordLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addGroup(devicePasswordPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(deviceNameLabel)
.addComponent(deviceNameTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(resetDeviceNameButton))
.addContainerGap(130, Short.MAX_VALUE))
);
protectDeviceKeyLabel.setText(bundle.getString("SetupWizardDialog.protectDeviceKeyLabel.text")); // NOI18N
protectDeviceKeyCheckbox.setText(bundle.getString("SetupWizardDialog.protectDeviceKeyCheckbox.text")); // NOI18N
javax.swing.GroupLayout protectDeviceKeyPanelLayout = new javax.swing.GroupLayout(protectDeviceKeyPanel);
protectDeviceKeyPanel.setLayout(protectDeviceKeyPanelLayout);
protectDeviceKeyPanelLayout.setHorizontalGroup(
protectDeviceKeyPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(protectDeviceKeyLabel, javax.swing.GroupLayout.DEFAULT_SIZE, 477, Short.MAX_VALUE)
.addGroup(protectDeviceKeyPanelLayout.createSequentialGroup()
.addContainerGap()
.addComponent(protectDeviceKeyCheckbox, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
protectDeviceKeyPanelLayout.setVerticalGroup(
protectDeviceKeyPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(protectDeviceKeyPanelLayout.createSequentialGroup()
.addComponent(protectDeviceKeyLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(protectDeviceKeyCheckbox)
.addContainerGap(127, Short.MAX_VALUE))
);
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle(bundle.getString("SetupWizardDialog.title")); // NOI18N
setResizable(false);
nextFinishButton.setText(bundle.getString("SetupWizardDialog.nextFinishButton.text")); // NOI18N
nextFinishButton.setMaximumSize(new java.awt.Dimension(150, 23));
nextFinishButton.setMinimumSize(new java.awt.Dimension(130, 23));
nextFinishButton.setPreferredSize(new java.awt.Dimension(130, 23));
nextFinishButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
nextFinishButtonActionPerformed(evt);
}
});
abortBackButton.setText(bundle.getString("SetupWizardDialog.abortBackButton.text")); // NOI18N
abortBackButton.setMaximumSize(new java.awt.Dimension(100, 23));
abortBackButton.setMinimumSize(new java.awt.Dimension(100, 23));
abortBackButton.setPreferredSize(new java.awt.Dimension(100, 23));
abortBackButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
abortBackButtonActionPerformed(evt);
}
});
informationLabel.setText(bundle.getString("SetupWizardDialog.informationLabel.text")); // NOI18N
javax.swing.GroupLayout informationPanelLayout = new javax.swing.GroupLayout(informationPanel);
informationPanel.setLayout(informationPanelLayout);
informationPanelLayout.setHorizontalGroup(
informationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(informationLabel, javax.swing.GroupLayout.DEFAULT_SIZE, 477, Short.MAX_VALUE)
);
informationPanelLayout.setVerticalGroup(
informationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(informationPanelLayout.createSequentialGroup()
.addComponent(informationLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 163, Short.MAX_VALUE))
);
javax.swing.GroupLayout dialogPanelLayout = new javax.swing.GroupLayout(dialogPanel);
dialogPanel.setLayout(dialogPanelLayout);
dialogPanelLayout.setHorizontalGroup(
dialogPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(dialogPanelLayout.createSequentialGroup()
.addContainerGap()
.addComponent(informationPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
dialogPanelLayout.setVerticalGroup(
dialogPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(dialogPanelLayout.createSequentialGroup()
.addContainerGap()
.addComponent(informationPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(abortBackButton, javax.swing.GroupLayout.PREFERRED_SIZE, 121, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(nextFinishButton, javax.swing.GroupLayout.PREFERRED_SIZE, 130, javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(dialogPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(16, 16, 16)
.addComponent(dialogPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(abortBackButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(nextFinishButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap())
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void changedStep() {
JPanel panel = null;
switch (step) {
case 0:
abortBackButton.setText(bundle.getString("Abort"));
panel = informationPanel;
break;
case 1:
abortBackButton.setText(bundle.getString("Back"));
panel = personalDataPanel;
break;
case 2:
panel = devicePasswordPanel;
break;
case 3:
nextFinishButton.setText(bundle.getString("Next"));
panel = passwordPanel;
break;
case 4:
// panel = protectDeviceKeyPanel;
// break;
case 5:
firstname = firstnameTextField.getText();
finishedFirstname.setText(firstname);
lastname = lastnameTextField.getText();
finishedLastname.setText(lastname);
email = emailTextField.getText();
finishedEmail.setText(email);
devicename = deviceNameTextField.getText();
finishedDevicename.setText(devicename);
password = passwordTextField.getPassword();
protectDeviceKey = protectDeviceKeyCheckbox.isSelected();
char[] displayPass = new char[password.length];
Arrays.fill(displayPass, '*');
finishedPassword.setText(new String(displayPass));
nextFinishButton.setText(bundle.getString("Finish"));
panel = summaryPanel;
break;
}
dialogPanel.removeAll();
javax.swing.GroupLayout dialogPanelLayout = new javax.swing.GroupLayout(
dialogPanel);
dialogPanel.setLayout(dialogPanelLayout);
dialogPanelLayout.setHorizontalGroup(dialogPanelLayout
.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(
dialogPanelLayout
.createSequentialGroup()
.addContainerGap()
.addComponent(panel,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE).addContainerGap()));
dialogPanelLayout.setVerticalGroup(dialogPanelLayout
.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(
dialogPanelLayout
.createSequentialGroup()
.addContainerGap()
.addComponent(panel,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE).addContainerGap()));
nextFinishButton.requestFocus();
invalidate();
}
private void abortBackButtonActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_abortBackButtonActionPerformed
if (step == 0) {
// abort
dispose();
} else {
--step;
changedStep();
}
}// GEN-LAST:event_abortBackButtonActionPerformed
private void nextFinishButtonActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_nextFinishButtonActionPerformed
if (step == 5 || step == 4) { //this is for device key protection in the future!
// finish
canceled = false;
dispose();
} else if (step == 1) {
matcher = pattern.matcher(emailTextField.getText().toLowerCase());
if (firstnameTextField.getText().equals(
bundle.getString("FirstNameInput"))
|| firstnameTextField.getText().isEmpty()
|| lastnameTextField.getText().equals(
bundle.getString("LastNameInput"))
|| lastnameTextField.getText().isEmpty()) {
JOptionPane.showMessageDialog(this,
bundle.getObject("SpecifyFirstLastName"),
bundle.getString("InvalidInput"),
JOptionPane.ERROR_MESSAGE);
} else if (!matcher.matches()) {
JOptionPane.showMessageDialog(this,
bundle.getObject("SpecifyEmailAddress"),
bundle.getString("InvalidInput"),
JOptionPane.ERROR_MESSAGE);
} else {
++step;
changedStep();
}
} else if (step == 2) {
if (deviceNameTextField.getText().isEmpty()) {
JOptionPane.showMessageDialog(this,
bundle.getObject("SpecifyDeviceName"),
bundle.getString("InvalidInput"),
JOptionPane.ERROR_MESSAGE);
} else {
++step;
changedStep();
}
} else if (step == 3) {
if ((passwordTextField.getPassword() == null)
|| (passwordTextField.getPassword().length == 0)) {
JOptionPane.showMessageDialog(this,
bundle.getObject("SpecifyPassword"),
bundle.getString("InvalidInput"),
JOptionPane.ERROR_MESSAGE);
} else if (!Arrays.equals(passwordTextField.getPassword(),
passwordRepeatTextField.getPassword())) {
JOptionPane.showMessageDialog(this,
bundle.getObject("PasswordDoNotMatch"),
bundle.getString("InvalidInput"),
JOptionPane.ERROR_MESSAGE);
} else if (passwordTextField.getPassword().length < 8) {
JOptionPane.showMessageDialog(this,
bundle.getObject("PasswordPolicyNotMatched"),
bundle.getString("InvalidInput"),
JOptionPane.ERROR_MESSAGE);
} else {
++step;
changedStep();
}
} else {
++step;
changedStep();
}
}// GEN-LAST:event_nextFinishButtonActionPerformed
private void firstnameTextFieldFocusGained(java.awt.event.FocusEvent evt) {// GEN-FIRST:event_firstnameTextFieldFocusGained
if (firstnameTextField.getText().equals(
bundle.getString("SetupWizardDialog.firstnameTextField.text"))) {
firstnameTextField.setText("");
}
}// GEN-LAST:event_firstnameTextFieldFocusGained
private void emailTextFieldFocusGained(java.awt.event.FocusEvent evt) {// GEN-FIRST:event_emailTextFieldFocusGained
if (emailTextField.getText().equals(
bundle.getString("SetupWizardDialog.emailTextField.text"))) {
emailTextField.setText("");
}
}// GEN-LAST:event_emailTextFieldFocusGained
private void lastnameTextFieldFocusGained(java.awt.event.FocusEvent evt) {// GEN-FIRST:event_lastnameTextFieldFocusGained
if (lastnameTextField.getText().equals(
bundle.getString("SetupWizardDialog.lastnameTextField.text"))) {
lastnameTextField.setText("");
}
}// GEN-LAST:event_lastnameTextFieldFocusGained
private void resetDeviceNameButtonActionPerformed(
java.awt.event.ActionEvent evt) {// GEN-FIRST:event_resetDeviceNameButtonActionPerformed
deviceNameTextField.setText(getLocalHostname());
}// GEN-LAST:event_resetDeviceNameButtonActionPerformed
public String getEmail() {
return email;
}
public String getFirstname() {
return firstname;
}
public String getLastname() {
return lastname;
}
public String getDevicename() {
return devicename;
}
public char[] getPassword() {
return password;
}
public boolean wasCanceled() {
return canceled;
}
public boolean isProtectDeviceKey() {
return protectDeviceKey;
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton abortBackButton;
private javax.swing.JLabel deviceNameLabel;
private javax.swing.JLabel deviceNameLabel1;
private javax.swing.JLabel deviceNameLabel2;
private javax.swing.JLabel deviceNamePasswordLabel;
private javax.swing.JTextField deviceNameTextField;
private javax.swing.JPanel devicePasswordPanel;
private javax.swing.JLabel devicenameSummaryLabel;
private javax.swing.JLabel devicenameSummaryLabel1;
private javax.swing.JPanel dialogPanel;
private javax.swing.JLabel emailLabel;
private javax.swing.JLabel emailSummaryLabel;
private javax.swing.JTextField emailTextField;
private javax.swing.JLabel finishedDevicename;
private javax.swing.JLabel finishedEmail;
private javax.swing.JLabel finishedFirstname;
private javax.swing.JLabel finishedLastname;
private javax.swing.JLabel finishedPassword;
private javax.swing.JLabel firstnameLabel;
private javax.swing.JTextField firstnameTextField;
private javax.swing.JLabel informationLabel;
private javax.swing.JPanel informationPanel;
private javax.swing.JLabel lastnameLabel;
private javax.swing.JLabel lastnameSummaryLabel;
private javax.swing.JTextField lastnameTextField;
private javax.swing.JLabel nameSummaryLabel;
private javax.swing.JButton nextFinishButton;
private javax.swing.JPanel passwordPanel;
private javax.swing.JLabel passwordPanelLabel;
private javax.swing.JPasswordField passwordRepeatTextField;
private javax.swing.JPasswordField passwordTextField;
private javax.swing.JLabel personalDataLabel;
private javax.swing.JPanel personalDataPanel;
private javax.swing.JCheckBox protectDeviceKeyCheckbox;
private javax.swing.JLabel protectDeviceKeyLabel;
private javax.swing.JPanel protectDeviceKeyPanel;
private javax.swing.JButton resetDeviceNameButton;
private javax.swing.JLabel summaryLabel;
private javax.swing.JPanel summaryPanel;
// End of variables declaration//GEN-END:variables
}