summaryrefslogtreecommitdiffstats
path: root/src/jrummikub/control/network/GameJoinControl.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/jrummikub/control/network/GameJoinControl.java')
-rw-r--r--src/jrummikub/control/network/GameJoinControl.java51
1 files changed, 51 insertions, 0 deletions
diff --git a/src/jrummikub/control/network/GameJoinControl.java b/src/jrummikub/control/network/GameJoinControl.java
new file mode 100644
index 0000000..c436887
--- /dev/null
+++ b/src/jrummikub/control/network/GameJoinControl.java
@@ -0,0 +1,51 @@
+package jrummikub.control.network;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import jrummikub.util.Connection;
+import jrummikub.util.GameData;
+import jrummikub.util.IListener1;
+import jrummikub.view.ISettingsPanel.SettingsMode;
+import jrummikub.view.IView;
+
+public class GameJoinControl {
+ private List<Connection> connections = new ArrayList<Connection>();
+ private GameData gameData;
+ private ConnectionControl connectionControl;
+ private IView view;
+
+ public GameJoinControl(final ConnectionControl connectionControl,
+ final GameData gameData, final IView view) {
+ this.connectionControl = connectionControl;
+ this.gameData = gameData;
+ this.view = view;
+
+ view.getSettingsPanel().setSettingsMode(SettingsMode.NETWORK_JOIN);
+ view.getSettingsPanel().enableAddPlayerButton(false);
+ view.getSettingsPanel().setGameSettings(gameData.getGameSettings());
+
+ connections.add(connectionControl.getGameOfferEvent().add(
+ new IListener1<GameData>() {
+ @Override
+ public void handle(GameData data) {
+ if (data.getGameID().equals(gameData.getGameID())) {
+ gameData.setGameSettings(data.getGameSettings());
+ view.getSettingsPanel().setGameSettings(data.getGameSettings());
+ }
+ }
+ }));
+ }
+
+ public void startGameJoin() {
+ view.showSettingsPanel(true);
+ }
+
+ public void abort() {
+ // TODO Implement abort
+
+ for (Connection c : connections) {
+ c.remove();
+ }
+ }
+}