summaryrefslogtreecommitdiffstats
path: root/src/jrummikub/view/impl
diff options
context:
space:
mode:
Diffstat (limited to 'src/jrummikub/view/impl')
-rw-r--r--src/jrummikub/view/impl/LoginPanel.java97
-rw-r--r--src/jrummikub/view/impl/View.java76
2 files changed, 148 insertions, 25 deletions
diff --git a/src/jrummikub/view/impl/LoginPanel.java b/src/jrummikub/view/impl/LoginPanel.java
new file mode 100644
index 0000000..ca9f37f
--- /dev/null
+++ b/src/jrummikub/view/impl/LoginPanel.java
@@ -0,0 +1,97 @@
+package jrummikub.view.impl;
+
+import java.awt.Color;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.Box;
+import javax.swing.JButton;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+import javax.swing.border.CompoundBorder;
+import javax.swing.border.EmptyBorder;
+import javax.swing.border.LineBorder;
+
+import jrummikub.util.Event;
+import jrummikub.util.Event3;
+import jrummikub.util.IEvent;
+import jrummikub.util.IEvent3;
+import jrummikub.view.ILoginPanel;
+
+@SuppressWarnings("serial")
+class LoginPanel extends JPanel implements ILoginPanel {
+ private Event3<String, String, String> loginEvent = new Event3<String, String, String>();
+ private Event cancelEvent = new Event();
+ private JTextField userNameField;
+ private JTextField passwordField;
+ private JTextField channelNameField;
+
+ LoginPanel() {
+ setLayout(new GridBagLayout());
+ GridBagConstraints c = new GridBagConstraints();
+ c.fill = GridBagConstraints.BOTH;
+ c.gridwidth = GridBagConstraints.REMAINDER;
+ c.weightx = 1;
+ c.weighty = 1;
+
+ userNameField = addInputRow("Benutzername:");
+ passwordField = addInputRow("Passwort:");
+ channelNameField = addInputRow("Channel:");
+ add(Box.createVerticalGlue(), c);
+
+ c.gridwidth = 1;
+ c.weighty = 0;
+
+ JButton loginButton = new JButton("Login");
+ loginButton.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent arg0) {
+ loginEvent.emit(userNameField.getText(),
+ passwordField.getText(), channelNameField.getText());
+ }
+ });
+ add(loginButton, c);
+
+ c.gridwidth = GridBagConstraints.REMAINDER;
+ JButton cancelButton = new JButton("Abbrechen");
+ cancelButton.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent arg0) {
+ cancelEvent.emit();
+ }
+ });
+ add(cancelButton, c);
+
+ setBorder(new CompoundBorder(new LineBorder(Color.BLACK),
+ new EmptyBorder(10, 10, 10, 10)));
+ }
+
+ @Override
+ public IEvent3<String, String, String> getLoginEvent() {
+ return loginEvent;
+ }
+
+ @Override
+ public IEvent getCancelEvent() {
+ return cancelEvent;
+ }
+
+ private JTextField addInputRow(String label) {
+ GridBagConstraints c = new GridBagConstraints();
+ c.fill = GridBagConstraints.BOTH;
+ c.gridwidth = 1;
+ c.weightx = 1;
+ c.weighty = 0;
+
+ add(new JLabel(label), c);
+
+ JTextField textField = new JTextField();
+
+ c.gridwidth = GridBagConstraints.REMAINDER;
+ add(textField, c);
+ return textField;
+ }
+}
diff --git a/src/jrummikub/view/impl/View.java b/src/jrummikub/view/impl/View.java
index b54b4c9..4f4fc53 100644
--- a/src/jrummikub/view/impl/View.java
+++ b/src/jrummikub/view/impl/View.java
@@ -32,6 +32,7 @@ import jrummikub.util.IEvent1;
import jrummikub.util.IListener;
import jrummikub.util.Pair;
import jrummikub.view.IHandPanel;
+import jrummikub.view.ILoginPanel;
import jrummikub.view.IPlayerPanel;
import jrummikub.view.IScorePanel;
import jrummikub.view.ISettingsPanel;
@@ -57,6 +58,7 @@ public class View extends JFrame implements IView {
private PausePanel pausePanel;
private WinPanel winPanel;
private SettingsPanel settingsPanel;
+ private LoginPanel loginPanel;
private ScorePanel scorePanel;
private BottomPanelType bottomPanelType;
@@ -79,6 +81,11 @@ public class View extends JFrame implements IView {
}
@Override
+ public ILoginPanel getLoginPanel() {
+ return loginPanel;
+ }
+
+ @Override
public IScorePanel getScorePanel() {
return scorePanel;
}
@@ -129,10 +136,16 @@ public class View extends JFrame implements IView {
}
@Override
+ public IEvent getNetworkGameEvent() {
+ return settingsPanel.getNetworkGameEvent();
+ }
+
+ @Override
public void clearView() {
showScorePanel(false);
showSettingsPanel(false);
- getHandPanel().setStones(Collections.<Pair<Stone, Position>> emptyList());
+ getHandPanel().setStones(
+ Collections.<Pair<Stone, Position>> emptyList());
getTablePanel().setStoneSets(
Collections.<Pair<StoneSet, Position>> emptyList());
setSelectedStones(Collections.<Stone> emptyList());
@@ -239,6 +252,12 @@ public class View extends JFrame implements IView {
layeredPane.setLayer(settingsPanel, JLayeredPane.POPUP_LAYER);
layeredPane.add(settingsPanel);
+ loginPanel = new LoginPanel();
+ loginPanel.setVisible(false);
+
+ layeredPane.setLayer(loginPanel, JLayeredPane.POPUP_LAYER);
+ layeredPane.add(loginPanel);
+
scorePanel = new ScorePanel();
scorePanel.setVisible(false);
layeredPane.setLayer(scorePanel, JLayeredPane.POPUP_LAYER);
@@ -263,8 +282,8 @@ public class View extends JFrame implements IView {
mainLayer.add(table);
playerPanel = new PlayerPanel();
- playerPanel.setBorder(new MatteBorder(PLAYER_PANEL_BORDER_WIDTH, 0, 0, 0,
- Color.BLACK));
+ playerPanel.setBorder(new MatteBorder(PLAYER_PANEL_BORDER_WIDTH, 0, 0,
+ 0, Color.BLACK));
mainLayer.add(playerPanel);
startTurnPanel = new StartTurnPanel();
@@ -311,6 +330,7 @@ public class View extends JFrame implements IView {
winPanel.setBounds(0, tableHeight, width, playerPanelHeight);
settingsPanel.setBounds(width / 4, height / 4, width / 2, height / 2);
scorePanel.setBounds(width / 8, height / 4, width * 3 / 4, height / 2);
+ loginPanel.setBounds(width / 3, height / 3, width / 3, height / 3);
}
@Override
@@ -325,6 +345,11 @@ public class View extends JFrame implements IView {
}
@Override
+ public void showLoginPanel(boolean show) {
+ loginPanel.setVisible(show);
+ }
+
+ @Override
public void showScorePanel(boolean show) {
scorePanel.setVisible(show);
}
@@ -368,24 +393,24 @@ public class View extends JFrame implements IView {
@SuppressWarnings("unchecked")
private List<Pair<Stone, Position>> createDecorationStones() {
- Pair<Stone, Position> stoneJ = new Pair<Stone, Position>(new Stone(-'J',
- StoneColor.BLACK), new Position(2.5f, 0));
- Pair<Stone, Position> stoneR = new Pair<Stone, Position>(new Stone(-'R',
- StoneColor.ORANGE), new Position(3.5f, 0));
- Pair<Stone, Position> stoneu1 = new Pair<Stone, Position>(new Stone(-'u',
- StoneColor.BLUE), new Position(4.5f, 0));
- Pair<Stone, Position> stonem1 = new Pair<Stone, Position>(new Stone(-'m',
- StoneColor.RED), new Position(5.5f, 0));
- Pair<Stone, Position> stonem2 = new Pair<Stone, Position>(new Stone(-'m',
- StoneColor.GREEN), new Position(6.5f, 0));
- Pair<Stone, Position> stonei = new Pair<Stone, Position>(new Stone(-'i',
- StoneColor.VIOLET), new Position(7.5f, 0));
- Pair<Stone, Position> stonek = new Pair<Stone, Position>(new Stone(-'k',
- StoneColor.AQUA), new Position(8.5f, 0));
- Pair<Stone, Position> stoneu2 = new Pair<Stone, Position>(new Stone(-'u',
- StoneColor.GRAY), new Position(9.5f, 0));
- Pair<Stone, Position> stoneb = new Pair<Stone, Position>(new Stone(-'b',
- StoneColor.BLACK), new Position(10.5f, 0));
+ Pair<Stone, Position> stoneJ = new Pair<Stone, Position>(new Stone(
+ -'J', StoneColor.BLACK), new Position(2.5f, 0));
+ Pair<Stone, Position> stoneR = new Pair<Stone, Position>(new Stone(
+ -'R', StoneColor.ORANGE), new Position(3.5f, 0));
+ Pair<Stone, Position> stoneu1 = new Pair<Stone, Position>(new Stone(
+ -'u', StoneColor.BLUE), new Position(4.5f, 0));
+ Pair<Stone, Position> stonem1 = new Pair<Stone, Position>(new Stone(
+ -'m', StoneColor.RED), new Position(5.5f, 0));
+ Pair<Stone, Position> stonem2 = new Pair<Stone, Position>(new Stone(
+ -'m', StoneColor.GREEN), new Position(6.5f, 0));
+ Pair<Stone, Position> stonei = new Pair<Stone, Position>(new Stone(
+ -'i', StoneColor.VIOLET), new Position(7.5f, 0));
+ Pair<Stone, Position> stonek = new Pair<Stone, Position>(new Stone(
+ -'k', StoneColor.AQUA), new Position(8.5f, 0));
+ Pair<Stone, Position> stoneu2 = new Pair<Stone, Position>(new Stone(
+ -'u', StoneColor.GRAY), new Position(9.5f, 0));
+ Pair<Stone, Position> stoneb = new Pair<Stone, Position>(new Stone(
+ -'b', StoneColor.BLACK), new Position(10.5f, 0));
Pair<Stone, Position> stone1 = new Pair<Stone, Position>(new Stone(
StoneColor.RED), new Position(2, 1));
@@ -400,9 +425,9 @@ public class View extends JFrame implements IView {
Pair<Stone, Position> stone6 = new Pair<Stone, Position>(new Stone(
StoneColor.BLACK), new Position(11, 1));
- return Arrays
- .asList(stoneJ, stoneR, stoneu1, stonem1, stonem2, stonei, stonek,
- stoneu2, stoneb, stone1, stone2, stone3, stone4, stone5, stone6);
+ return Arrays.asList(stoneJ, stoneR, stoneu1, stonem1, stonem2, stonei,
+ stonek, stoneu2, stoneb, stone1, stone2, stone3, stone4,
+ stone5, stone6);
}
@Override
@@ -419,7 +444,8 @@ public class View extends JFrame implements IView {
&& type != BottomPanelType.WIN_PANEL && type != null);
if (type == BottomPanelType.START_GAME_PANEL) {
- table.setStoneSets(Collections.<Pair<StoneSet, Position>> emptyList());
+ table.setStoneSets(Collections
+ .<Pair<StoneSet, Position>> emptyList());
playerPanel.getHandPanel().setStones(createDecorationStones());
}