diff options
Diffstat (limited to 'src/jrummikub/control/SettingsControl.java')
-rw-r--r-- | src/jrummikub/control/SettingsControl.java | 101 |
1 files changed, 58 insertions, 43 deletions
diff --git a/src/jrummikub/control/SettingsControl.java b/src/jrummikub/control/SettingsControl.java index 42d3659..dfaa552 100644 --- a/src/jrummikub/control/SettingsControl.java +++ b/src/jrummikub/control/SettingsControl.java @@ -1,9 +1,12 @@ package jrummikub.control; import java.awt.Color; +import java.util.ArrayList; +import java.util.List; import jrummikub.model.GameSettings; import jrummikub.model.PlayerSettings; +import jrummikub.util.Connection; import jrummikub.util.Event1; import jrummikub.util.IEvent1; import jrummikub.util.IListener; @@ -18,6 +21,7 @@ import jrummikub.view.IView; public class SettingsControl { private IView view; private Event1<GameSettings> startGameEvent = new Event1<GameSettings>(); + private List<Connection> connections = new ArrayList<Connection>(); private GameSettings settings; @@ -25,9 +29,9 @@ public class SettingsControl { * Create a new settings control * * @param view - * the view to use + * the view to use * @param settings - * initial game settings + * initial game settings */ public SettingsControl(IView view, GameSettings settings) { this.view = view; @@ -37,8 +41,8 @@ public class SettingsControl { } /** - * the start game event is emitted when the user wants to start a game and the - * settings made are valid + * the start game event is emitted when the user wants to start a game and + * the settings made are valid * * @return the event */ @@ -50,64 +54,70 @@ public class SettingsControl { * Start the operation of the settings control */ public void startSettings() { - view.getSettingsPanel().setInitialMeldThreshold(settings.getInitialMeldThreshold()); + view.getSettingsPanel().setInitialMeldThreshold( + settings.getInitialMeldThreshold()); view.getSettingsPanel().setJokerNumber(settings.getJokerNumber()); - - view.getSettingsPanel().getChangeInitialMeldThresholdEvent().add(new IListener1<Integer>() { - @Override - public void handle(Integer value) { - settings.setInitialMeldThreshold(value); - update(); - } - }); - - view.getSettingsPanel().getChangeJokerNumberEvent().add(new IListener1<Integer>() { - @Override - public void handle(Integer value) { - settings.setJokerNumber(value); - update(); - } - }); - + + connections.add(view.getSettingsPanel() + .getChangeInitialMeldThresholdEvent() + .add(new IListener1<Integer>() { + @Override + public void handle(Integer value) { + settings.setInitialMeldThreshold(value); + update(); + } + })); + + connections.add(view.getSettingsPanel().getChangeJokerNumberEvent() + .add(new IListener1<Integer>() { + @Override + public void handle(Integer value) { + settings.setJokerNumber(value); + update(); + } + })); + addPlayerSettingsListeners(); view.showSettingsPanel(true); } private void addPlayerSettingsListeners() { - view.getSettingsPanel().getStartGameEvent().add(new IListener() { - @Override - public void handle() { - startGame(); - } - }); - view.getSettingsPanel().getAddPlayerEvent().add(new IListener() { - @Override - public void handle() { - addPlayer(); - } - }); - view.getSettingsPanel().getRemovePlayerEvent() + connections.add(view.getSettingsPanel().getStartGameEvent() + .add(new IListener() { + @Override + public void handle() { + startGame(); + } + })); + connections.add(view.getSettingsPanel().getAddPlayerEvent() + .add(new IListener() { + @Override + public void handle() { + addPlayer(); + } + })); + connections.add(view.getSettingsPanel().getRemovePlayerEvent() .add(new IListener1<Integer>() { @Override public void handle(Integer i) { removePlayer(i); } - }); - view.getSettingsPanel().getChangePlayerColorEvent() + })); + connections.add(view.getSettingsPanel().getChangePlayerColorEvent() .add(new IListener2<Integer, Color>() { @Override public void handle(Integer i, Color color) { setPlayerColor(i, color); } - }); - view.getSettingsPanel().getChangePlayerNameEvent() + })); + connections.add(view.getSettingsPanel().getChangePlayerNameEvent() .add(new IListener2<Integer, String>() { @Override public void handle(Integer i, String name) { setPlayerName(i, name); } - }); + })); } private void addPlayer() { @@ -142,7 +152,8 @@ public class SettingsControl { break; } - settings.getPlayerList().add(new PlayerSettings("Spieler " + num, color)); + settings.getPlayerList().add( + new PlayerSettings("Spieler " + num, color)); update(); } @@ -178,8 +189,9 @@ public class SettingsControl { private void update() { view.getSettingsPanel().enableRemovePlayerButtons( settings.getPlayerList().size() > 2); - view.getSettingsPanel().enableAddPlayerButton( - settings.getPlayerList().size() < ISettingsPanel.PLAYER_COLORS.length); + view.getSettingsPanel() + .enableAddPlayerButton( + settings.getPlayerList().size() < ISettingsPanel.PLAYER_COLORS.length); checkSettings(); @@ -220,6 +232,9 @@ public class SettingsControl { view.showSettingsPanel(false); + for (Connection c : connections) { + c.remove(); + } startGameEvent.emit(settings); } } |