/* * * 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 }