/* * This file is part of FTB Launcher. * * Copyright © 2012-2016, FTB Launcher Contributors <https://github.com/Slowpoke101/FTBLaunch/> * FTB Launcher is licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.ftb.gui.dialogs; import java.awt.Container; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JDialog; import javax.swing.JLabel; import javax.swing.JPasswordField; import javax.swing.JTextField; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import net.ftb.data.UserManager; import net.ftb.gui.GuiConstants; import net.ftb.gui.LaunchFrame; import net.ftb.locale.I18N; import net.ftb.util.ErrorUtils; import net.miginfocom.swing.MigLayout; @SuppressWarnings("serial") public class ProfileAdderDialog extends JDialog { private String updatecreds = ""; private JLabel usernameLbl; private JTextField username; private JLabel passwordLbl; private JPasswordField password; private JLabel nameLbl; private JTextField name; private JCheckBox savePassword, saveMojangData; private JButton add; private JLabel messageLbl; public ProfileAdderDialog (LaunchFrame instance, String unlocalizedMessage, boolean modal) { super(instance, modal); setUnlocalizedMessage(unlocalizedMessage); preSetup(); } public ProfileAdderDialog (LaunchFrame instance, boolean modal) { super(instance, modal); preSetup(); } public void preSetup () { setupGui(); getRootPane().setDefaultButton(add); savePassword.setSelected(true); saveMojangData.setSelected(true); username.getDocument().addDocumentListener(new DocumentListener() { @Override public void removeUpdate (DocumentEvent arg0) { name.setText(username.getText()); } @Override public void insertUpdate (DocumentEvent arg0) { name.setText(username.getText()); } @Override public void changedUpdate (DocumentEvent e) {} }); savePassword.addActionListener(new ActionListener() { @Override public void actionPerformed (ActionEvent event) { password.setEnabled(savePassword.isSelected()); } }); add.addActionListener(new ActionListener() { @Override public void actionPerformed (ActionEvent event) { if (savePassword.isSelected()) { if (validate(name.getText(), username.getText(), password.getPassword())) { UserManager.addUser(username.getText(), new String(password.getPassword()), name.getText()); UserManager.setSaveMojangData(username.getText(), saveMojangData.isSelected()); LaunchFrame.writeUsers(name.getText()); setVisible(false); } else { ErrorUtils.tossError(I18N.getLocaleString("PROFILADDER_ERROR")); } } else { if (validate(name.getText(), username.getText())) { UserManager.addUser(username.getText(), "", name.getText()); UserManager.setSaveMojangData(username.getText(), saveMojangData.isSelected()); LaunchFrame.writeUsers(name.getText()); setVisible(false); } else { ErrorUtils.tossError(I18N.getLocaleString("PROFILADDER_ERROR")); } } } }); } public void setUnlocalizedMessage (String editingName) { if (editingName.equals("CHANGEDUUID")) { updatecreds = I18N.getLocaleString(editingName); password.setEnabled(false); savePassword.setSelected(false); } else if (editingName.equals("OLDCREDS")) { updatecreds = I18N.getLocaleString(editingName); password.setEnabled(false); savePassword.setSelected(false); } } private boolean validate (String name, String user, char[] pass) { if (!name.isEmpty() && !user.isEmpty() && pass.length > 1) { if (!UserManager.getNames().contains(name) && !UserManager.getUsernames().contains(user)) { return true; } } return false; } private boolean validate (String name, String user) { if (!name.isEmpty() && !user.isEmpty()) { if (!UserManager.getNames().contains(name) && !UserManager.getUsernames().contains(user)) { return true; } } return false; } private void setupGui () { setIconImage(Toolkit.getDefaultToolkit().getImage(this.getClass().getResource("/image/logo_ftb.png"))); setTitle(I18N.getLocaleString("PROFILEADDER_TITLE")); setResizable(true); Container panel = getContentPane(); MigLayout layout = new MigLayout(); panel.setLayout(layout); usernameLbl = new JLabel(I18N.getLocaleString("PROFILEADDER_USERNAME")); username = new JTextField(16); passwordLbl = new JLabel(I18N.getLocaleString("PROFILEADDER_PASSWORD")); password = new JPasswordField(16); nameLbl = new JLabel(I18N.getLocaleString("PROFILEADDER_NAME")); name = new JTextField(16); savePassword = new JCheckBox(I18N.getLocaleString("PROFILEADDER_SAVEPASSWORD")); saveMojangData = new JCheckBox(I18N.getLocaleString("PROFILEADDER_SAVEMOJANGDATA")); add = new JButton(I18N.getLocaleString("MAIN_ADD")); usernameLbl.setLabelFor(username); passwordLbl.setLabelFor(password); nameLbl.setLabelFor(name); if (!updatecreds.equals("")) { messageLbl = new JLabel(updatecreds); panel.add(messageLbl); } panel.add(usernameLbl); panel.add(username, GuiConstants.WRAP); panel.add(passwordLbl); panel.add(password, GuiConstants.WRAP); panel.add(nameLbl); panel.add(name, GuiConstants.WRAP); panel.add(savePassword, GuiConstants.CENTER_SINGLE_LINE); panel.add(saveMojangData, GuiConstants.CENTER_SINGLE_LINE); panel.add(add, "center, wrap, span"); pack(); setLocationRelativeTo(getOwner()); } }