From 9c281a73c0a3470289a9f96cecb42b02554aa44d Mon Sep 17 00:00:00 2001 From: Ida Massow Date: Fri, 10 Jun 2011 16:00:03 +0200 Subject: =?UTF-8?q?View-Komponente=20des=20Logins=20f=C3=BCr=20Netzwerk-Sp?= =?UTF-8?q?iele?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@396 72836036-5685-4462-b002-a69064685172 --- src/jrummikub/view/ILoginPanel.java | 12 ++++ src/jrummikub/view/IView.java | 31 +++++++---- src/jrummikub/view/impl/LoginPanel.java | 97 +++++++++++++++++++++++++++++++++ src/jrummikub/view/impl/View.java | 76 +++++++++++++++++--------- 4 files changed, 179 insertions(+), 37 deletions(-) create mode 100644 src/jrummikub/view/ILoginPanel.java create mode 100644 src/jrummikub/view/impl/LoginPanel.java (limited to 'src/jrummikub') diff --git a/src/jrummikub/view/ILoginPanel.java b/src/jrummikub/view/ILoginPanel.java new file mode 100644 index 0000000..c80c48a --- /dev/null +++ b/src/jrummikub/view/ILoginPanel.java @@ -0,0 +1,12 @@ +package jrummikub.view; + +import jrummikub.util.IEvent; +import jrummikub.util.IEvent3; + +public interface ILoginPanel { + + public IEvent3 getLoginEvent(); + + public IEvent getCancelEvent(); + +} \ No newline at end of file diff --git a/src/jrummikub/view/IView.java b/src/jrummikub/view/IView.java index 0ee2753..722d89b 100644 --- a/src/jrummikub/view/IView.java +++ b/src/jrummikub/view/IView.java @@ -49,7 +49,7 @@ public interface IView { * Sets the current player's name * * @param playerName - * the player name + * the player name */ public void setCurrentPlayerName(String playerName); @@ -57,7 +57,7 @@ public interface IView { * Sets the stones that are to be painted selected * * @param stones - * the stones to be painted selected + * the stones to be painted selected */ public void setSelectedStones(Collection stones); @@ -86,7 +86,7 @@ public interface IView { * Shows or hides the game settings panel * * @param show - * specifies if the panel shall be shown or hidden + * specifies if the panel shall be shown or hidden */ public void showSettingsPanel(boolean show); @@ -94,7 +94,7 @@ public interface IView { * Shows or hides the score panel * * @param show - * specifies if the panel shall be shown or hidden + * specifies if the panel shall be shown or hidden */ public void showScorePanel(boolean show); @@ -103,16 +103,16 @@ public interface IView { * along with the name * * @param color - * the current player's color + * the current player's color */ 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 + * specifies if the current player has laid out or not */ public void setCurrentPlayerHasLaidOut(boolean hasLaidOut); @@ -127,13 +127,13 @@ public interface IView { * Sets the bottom panels type * * @param type - * the type of the bottom panel + * the type of the bottom panel */ 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 } + } 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 loginEvent = new Event3(); + 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 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; @@ -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.> emptyList()); + getHandPanel().setStones( + Collections.> emptyList()); getTablePanel().setStoneSets( Collections.> emptyList()); setSelectedStones(Collections. 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> createDecorationStones() { - Pair stoneJ = new Pair(new Stone(-'J', - StoneColor.BLACK), new Position(2.5f, 0)); - Pair stoneR = new Pair(new Stone(-'R', - StoneColor.ORANGE), new Position(3.5f, 0)); - Pair stoneu1 = new Pair(new Stone(-'u', - StoneColor.BLUE), new Position(4.5f, 0)); - Pair stonem1 = new Pair(new Stone(-'m', - StoneColor.RED), new Position(5.5f, 0)); - Pair stonem2 = new Pair(new Stone(-'m', - StoneColor.GREEN), new Position(6.5f, 0)); - Pair stonei = new Pair(new Stone(-'i', - StoneColor.VIOLET), new Position(7.5f, 0)); - Pair stonek = new Pair(new Stone(-'k', - StoneColor.AQUA), new Position(8.5f, 0)); - Pair stoneu2 = new Pair(new Stone(-'u', - StoneColor.GRAY), new Position(9.5f, 0)); - Pair stoneb = new Pair(new Stone(-'b', - StoneColor.BLACK), new Position(10.5f, 0)); + Pair stoneJ = new Pair(new Stone( + -'J', StoneColor.BLACK), new Position(2.5f, 0)); + Pair stoneR = new Pair(new Stone( + -'R', StoneColor.ORANGE), new Position(3.5f, 0)); + Pair stoneu1 = new Pair(new Stone( + -'u', StoneColor.BLUE), new Position(4.5f, 0)); + Pair stonem1 = new Pair(new Stone( + -'m', StoneColor.RED), new Position(5.5f, 0)); + Pair stonem2 = new Pair(new Stone( + -'m', StoneColor.GREEN), new Position(6.5f, 0)); + Pair stonei = new Pair(new Stone( + -'i', StoneColor.VIOLET), new Position(7.5f, 0)); + Pair stonek = new Pair(new Stone( + -'k', StoneColor.AQUA), new Position(8.5f, 0)); + Pair stoneu2 = new Pair(new Stone( + -'u', StoneColor.GRAY), new Position(9.5f, 0)); + Pair stoneb = new Pair(new Stone( + -'b', StoneColor.BLACK), new Position(10.5f, 0)); Pair stone1 = new Pair(new Stone( StoneColor.RED), new Position(2, 1)); @@ -400,9 +425,9 @@ public class View extends JFrame implements IView { Pair stone6 = new Pair(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.> emptyList()); + table.setStoneSets(Collections + .> emptyList()); playerPanel.getHandPanel().setStones(createDecorationStones()); } -- cgit v1.2.3