diff options
Diffstat (limited to 'src/jrummikub/control/network/AbstractGameBeginControl.java')
-rw-r--r-- | src/jrummikub/control/network/AbstractGameBeginControl.java | 67 |
1 files changed, 47 insertions, 20 deletions
diff --git a/src/jrummikub/control/network/AbstractGameBeginControl.java b/src/jrummikub/control/network/AbstractGameBeginControl.java index 598126a..fd3b546 100644 --- a/src/jrummikub/control/network/AbstractGameBeginControl.java +++ b/src/jrummikub/control/network/AbstractGameBeginControl.java @@ -18,6 +18,10 @@ import jrummikub.view.ISettingsPanel; import jrummikub.view.ISettingsPanel.SettingsMode; import jrummikub.view.IView; +/** + * Abstract class for network game controls inbetween choosing and starting a + * game + */ public abstract class AbstractGameBeginControl { protected List<Connection> connections = new ArrayList<Connection>(); protected GameData gameData; @@ -25,6 +29,18 @@ public abstract class AbstractGameBeginControl { protected IView view; protected Event backEvent = new Event(); + /** + * Create a new game begin control + * + * @param connection + * connection control for mesages and events + * @param view + * the view + * @param gameData + * game data of chosen game + * @param settingsMode + * mode of settings panel + */ public AbstractGameBeginControl(IConnectionControl connection, IView view, final GameData gameData, SettingsMode settingsMode) { this.connectionControl = connection; @@ -35,8 +51,29 @@ public abstract class AbstractGameBeginControl { view.getSettingsPanel().enableAddPlayerButton(false); updateSettingsPanel(); - connections.add(view.getSettingsPanel().getBackEvent() - .add(new IListener() { + addViewListeners(view, gameData); + + connections.add(connectionControl.getChangeColorEvent().add( + new IListener2<String, Color>() { + @Override + public void handle(String sender, Color color) { + List<PlayerSettings> players = gameData + .getGameSettings().getPlayerList(); + for (PlayerSettings s : players) { + if (s.getName().equals(sender) + && s.getType() == Type.NETWORK) { + s.setColor(color); + break; + } + } + updateSettingsPanel(); + } + })); + } + + private void addViewListeners(IView view, final GameData gameData) { + connections.add(view.getSettingsPanel().getBackEvent().add( + new IListener() { @Override public void handle() { goBack(); @@ -62,26 +99,16 @@ public abstract class AbstractGameBeginControl { updateSettingsPanel(); } })); - connections.add(connectionControl.getChangeColorEvent().add( - new IListener2<String, Color>() { - @Override - public void handle(String sender, Color color) { - List<PlayerSettings> players = gameData - .getGameSettings().getPlayerList(); - for (PlayerSettings s : players) { - if (s.getName().equals(sender) - && s.getType() == Type.NETWORK) { - s.setColor(color); - break; - } - } - updateSettingsPanel(); - } - })); } protected abstract void goBack(); + /** + * The back event is emitted when the player wants to go back to the + * previous control and panel + * + * @return the event + */ public Event getBackEvent() { return backEvent; } @@ -96,8 +123,8 @@ public abstract class AbstractGameBeginControl { protected void updateSettingsPanel() { view.getSettingsPanel().setGameSettings(gameData.getGameSettings()); - Set<Color> colors = new HashSet<Color>( - Arrays.asList(ISettingsPanel.PLAYER_COLORS)); + Set<Color> colors = new HashSet<Color>(Arrays + .asList(ISettingsPanel.PLAYER_COLORS)); for (PlayerSettings player : gameData.getGameSettings().getPlayerList()) { colors.remove(player.getColor()); |