View-Komponente des Logins für Netzwerk-Spiele

git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@396 72836036-5685-4462-b002-a69064685172
This commit is contained in:
Ida Massow 2011-06-10 16:00:03 +02:00
parent e7ee6778b0
commit 9c281a73c0
4 changed files with 179 additions and 37 deletions

View file

@ -0,0 +1,12 @@
package jrummikub.view;
import jrummikub.util.IEvent;
import jrummikub.util.IEvent3;
public interface ILoginPanel {
public IEvent3<String, String, String> getLoginEvent();
public IEvent getCancelEvent();
}

View file

@ -108,8 +108,8 @@ public interface IView {
public void setCurrentPlayerColor(Color color);
/**
* Is used for the PlayerPanel to display if a player has laid out along with
* the name
* Is used for the PlayerPanel to display if a player has laid out along
* with the name
*
* @param hasLaidOut
* specifies if the current player has laid out or not
@ -132,8 +132,8 @@ public interface IView {
public void setBottomPanel(BottomPanelType type);
/**
* The menu new game event is emitted when the user selects the new game menu
* entry
* The menu new game event is emitted when the user selects the new game
* menu entry
*
* @return the event
*/
@ -168,7 +168,13 @@ public interface IView {
public void clearView();
void enablePauseMode(boolean enable);
public IEvent getNetworkGameEvent();
public ILoginPanel getLoginPanel();
public void showLoginPanel(boolean show);
public void enablePauseMode(boolean enable);
/**
* Different types of bottom panels
@ -185,4 +191,5 @@ public interface IView {
/** */
WIN_PANEL
}
}

View file

@ -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;
}
}

View file

@ -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;
@ -78,6 +80,11 @@ public class View extends JFrame implements IView {
return settingsPanel;
}
@Override
public ILoginPanel getLoginPanel() {
return loginPanel;
}
@Override
public IScorePanel getScorePanel() {
return scorePanel;
@ -128,11 +135,17 @@ public class View extends JFrame implements IView {
return pausePanel.getEndPauseEvent();
}
@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
@ -324,6 +344,11 @@ public class View extends JFrame implements IView {
settingsPanel.setVisible(show);
}
@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());
}