158 lines
5.0 KiB
Java
158 lines
5.0 KiB
Java
package jnet.client.gui.dialog;
|
|
|
|
import jnet.client.gui.ServerSettingsPanel;
|
|
import jnet.client.gui.Window;
|
|
import jnet.client.network.NettyClient;
|
|
import java.awt.event.ActionEvent;
|
|
import java.awt.event.ActionListener;
|
|
import java.util.Random;
|
|
import javax.swing.JButton;
|
|
import javax.swing.JCheckBox;
|
|
import javax.swing.JDialog;
|
|
import javax.swing.JLabel;
|
|
import javax.swing.JOptionPane;
|
|
import javax.swing.JPanel;
|
|
import javax.swing.JTextField;
|
|
import jnet.lib.Message;
|
|
import jnet.lib.object.User;
|
|
|
|
public class UserDialog extends JDialog {
|
|
|
|
JTextField userName = new JTextField();
|
|
JLabel userNameLabel = new JLabel("Uživatelské jméno");
|
|
JTextField password = new JTextField();
|
|
JLabel passwordLabel = new JLabel("Heslo");
|
|
JCheckBox setServer = new JCheckBox("Nastavit server");
|
|
JCheckBox addMap = new JCheckBox("Přidat mapu");
|
|
JCheckBox deleteMap = new JCheckBox("Odebrat mapu");
|
|
JCheckBox editMap = new JCheckBox("Upravit mapu");
|
|
JCheckBox addObjekt = new JCheckBox("Přidat objekt");
|
|
JCheckBox deleteObjekt = new JCheckBox("Odebrat objekt");
|
|
JCheckBox editObjekt = new JCheckBox("Upravit objekt");
|
|
|
|
User user;
|
|
|
|
public UserDialog(User user) {
|
|
|
|
this.user = user;
|
|
|
|
if (user == null) {
|
|
setTitle("Přidat uživatele");
|
|
} else {
|
|
setTitle("Upravit uživatele");
|
|
}
|
|
|
|
setSize(400, 600);
|
|
setLocationRelativeTo(null);
|
|
setAlwaysOnTop(false);
|
|
JPanel panel = new JPanel();
|
|
add(panel);
|
|
placeComponents(panel);
|
|
|
|
if (user != null) {
|
|
userName.setText(user.getUsername());
|
|
setServer.setSelected(user.isEditServer());
|
|
addMap.setSelected(user.isAddMap());
|
|
deleteMap.setSelected(user.isRemoveMap());
|
|
editMap.setSelected(user.isEditMap());
|
|
addObjekt.setSelected(user.isAddObject());
|
|
deleteObjekt.setSelected(user.isRemoveObject());
|
|
editObjekt.setSelected(user.isEditObject());
|
|
} else {
|
|
password.setText(generateRandomString(8));
|
|
}
|
|
|
|
}
|
|
|
|
private void placeComponents(JPanel panel) {
|
|
panel.setLayout(null);
|
|
|
|
userName.setBounds(20, 10, 180, 25);
|
|
panel.add(userName);
|
|
|
|
userNameLabel.setBounds(210, 10, 160, 25);
|
|
panel.add(userNameLabel);
|
|
|
|
password.setBounds(20, 60, 180, 25);
|
|
panel.add(password);
|
|
|
|
passwordLabel.setBounds(210, 60, 160, 25);
|
|
panel.add(passwordLabel);
|
|
|
|
setServer.setBounds(20, 110, 300, 25);
|
|
panel.add(setServer);
|
|
|
|
addMap.setBounds(20, 160, 300, 25);
|
|
panel.add(addMap);
|
|
|
|
deleteMap.setBounds(20, 210, 300, 25);
|
|
panel.add(deleteMap);
|
|
|
|
editMap.setBounds(20, 260, 300, 25);
|
|
panel.add(editMap);
|
|
|
|
addObjekt.setBounds(20, 310, 300, 25);
|
|
panel.add(addObjekt);
|
|
|
|
deleteObjekt.setBounds(20, 360, 300, 25);
|
|
panel.add(deleteObjekt);
|
|
|
|
editObjekt.setBounds(20, 410, 300, 25);
|
|
panel.add(editObjekt);
|
|
|
|
JButton button = new JButton();
|
|
if (user == null) {
|
|
button.setText("Přidat");
|
|
} else {
|
|
button.setText("Upravit");
|
|
}
|
|
button.setBounds(20, 460, 90, 25);
|
|
button.addActionListener(new ActionListener() {
|
|
@Override
|
|
public void actionPerformed(ActionEvent e) {
|
|
if (userName.getText().length() > 3) {
|
|
User u = new User(
|
|
0,
|
|
userName.getText(),
|
|
password.getText(),
|
|
addMap.isSelected(),
|
|
deleteMap.isSelected(),
|
|
editMap.isSelected(),
|
|
addObjekt.isSelected(),
|
|
deleteObjekt.isSelected(),
|
|
editObjekt.isSelected(),
|
|
setServer.isSelected());
|
|
|
|
if (user == null) {
|
|
|
|
NettyClient.send(Message.USER, u);
|
|
} else {
|
|
u.setId(user.getId());
|
|
NettyClient.send(Message.USER_EDIT, u);
|
|
}
|
|
Window.showServerSettings(ServerSettingsPanel.TAB_USERS);
|
|
dispose();
|
|
} else {
|
|
JOptionPane.showMessageDialog(null, "Uživatelské jméno musí být delší než 3 znaky", "Chyba", JOptionPane.WARNING_MESSAGE);
|
|
}
|
|
}
|
|
});
|
|
panel.add(button);
|
|
|
|
}
|
|
|
|
public static String generateRandomString(int length) {
|
|
String characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
|
|
StringBuilder sb = new StringBuilder();
|
|
Random random = new Random();
|
|
|
|
for (int i = 0; i < length; i++) {
|
|
int index = random.nextInt(characters.length());
|
|
sb.append(characters.charAt(index));
|
|
}
|
|
|
|
return sb.toString();
|
|
}
|
|
|
|
}
|