summaryrefslogtreecommitdiffstats
path: root/src/jrummikub/view/impl/LoginPanel.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/jrummikub/view/impl/LoginPanel.java')
-rw-r--r--src/jrummikub/view/impl/LoginPanel.java73
1 files changed, 59 insertions, 14 deletions
diff --git a/src/jrummikub/view/impl/LoginPanel.java b/src/jrummikub/view/impl/LoginPanel.java
index 43c7550..1ea49da 100644
--- a/src/jrummikub/view/impl/LoginPanel.java
+++ b/src/jrummikub/view/impl/LoginPanel.java
@@ -1,6 +1,7 @@
package jrummikub.view.impl;
import java.awt.Color;
+import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
@@ -27,11 +28,13 @@ import jrummikub.view.ILoginPanel;
class LoginPanel extends JPanel implements ILoginPanel {
private Event1<LoginData> loginEvent = new Event1<LoginData>();
private Event cancelEvent = new Event();
+ private Event1<String> useDedicatedServer = new Event1<String>();
private JTextField userNameField;
private JTextField serverNameField;
private JTextField passwordField;
private JTextField channelNameField;
-
+ private JButton startDedicatedServerButton;
+
LoginPanel() {
setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
@@ -40,21 +43,18 @@ class LoginPanel extends JPanel implements ILoginPanel {
c.weightx = 1;
c.weighty = 1;
- ActionListener loginAction = new ActionListener() {
+ ActionListener loginAction = createInputFields();
+
+ c.weighty = 0;
+ add(startDedicatedServerButton, c);
+ startDedicatedServerButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
- login();
+ useDedicatedServer.emit(passwordField.getText());
}
- };
-
- userNameField = addInputRow("Benutzername:", new JTextField());
- userNameField.addActionListener(loginAction);
- serverNameField = addInputRow("Server:", new JTextField());
- serverNameField.addActionListener(loginAction);
- passwordField = addInputRow("Passwort:", new JPasswordField());
- passwordField.addActionListener(loginAction);
- channelNameField = addInputRow("Channel:", new JTextField());
- channelNameField.addActionListener(loginAction);
+ });
+
+ c.weighty = 1;
add(Box.createVerticalGlue(), c);
c.gridwidth = 1;
@@ -81,7 +81,30 @@ class LoginPanel extends JPanel implements ILoginPanel {
10, 10, 10, 10)));
}
+ private ActionListener createInputFields() {
+ ActionListener loginAction = new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent arg0) {
+ login();
+ }
+ };
+
+ userNameField = addInputRow("Benutzername:", new JTextField());
+ userNameField.addActionListener(loginAction);
+ serverNameField = addInputRow("Server:", new JTextField());
+ serverNameField.addActionListener(loginAction);
+ passwordField = addInputRow("Passwort:", new JPasswordField());
+ passwordField.addActionListener(loginAction);
+ channelNameField = addInputRow("Channel:", new JTextField());
+ channelNameField.addActionListener(loginAction);
+ startDedicatedServerButton = new JButton("Dedizierten Server starten");
+ // this fixes some strange layouting bug
+ startDedicatedServerButton.setPreferredSize(new Dimension(500,10));
+ return loginAction;
+ }
+
void resetLoginPanel() {
+ // TODO leer machen
userNameField.setText("test1");
serverNameField.setText("universe-factory.net");
passwordField.setText("");
@@ -98,15 +121,22 @@ class LoginPanel extends JPanel implements ILoginPanel {
return cancelEvent;
}
+ @Override
+ public IEvent1<String> getUseDedicatedServerEvent() {
+ return useDedicatedServer;
+ }
+
private JTextField addInputRow(String label, JTextField textField) {
GridBagConstraints c = new GridBagConstraints();
- c.fill = GridBagConstraints.BOTH;
+ c.fill = GridBagConstraints.HORIZONTAL;
c.gridwidth = 1;
c.weightx = 1;
c.weighty = 0;
add(new JLabel(label), c);
+ c.weightx = 1;
+ c.fill = GridBagConstraints.HORIZONTAL;
c.gridwidth = GridBagConstraints.REMAINDER;
add(textField, c);
return textField;
@@ -116,4 +146,19 @@ class LoginPanel extends JPanel implements ILoginPanel {
loginEvent.emit(new LoginData(userNameField.getText(), serverNameField
.getText(), passwordField.getText(), channelNameField.getText()));
}
+
+ @Override
+ public void setServer(String server) {
+ serverNameField.setText(server);
+ }
+
+ @Override
+ public void setChannel(String channel) {
+ channelNameField.setText(channel);
+ }
+
+ @Override
+ public void setDedicatedServerRunning(boolean running) {
+ startDedicatedServerButton.setText(running ? "Dedizierten Server nutzen" : "Dedizierten Server starten");
+ }
}