diff options
Diffstat (limited to 'src/jrummikub/view/impl/LoginPanel.java')
-rw-r--r-- | src/jrummikub/view/impl/LoginPanel.java | 73 |
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"); + } } |