diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/jrummikub/control/SettingsControl.java | 10 | ||||
-rw-r--r-- | src/jrummikub/control/network/NetworkControl.java | 32 | ||||
-rw-r--r-- | src/jrummikub/control/network/NetworkSettingsControl.java | 38 |
3 files changed, 63 insertions, 17 deletions
diff --git a/src/jrummikub/control/SettingsControl.java b/src/jrummikub/control/SettingsControl.java index 6d736a6..a3fad13 100644 --- a/src/jrummikub/control/SettingsControl.java +++ b/src/jrummikub/control/SettingsControl.java @@ -121,14 +121,4 @@ public class SettingsControl extends AbstractSettingsControl { abort(); startGameEvent.emit(settings); } - - /** - * Abort settings control once settings are set - */ - public void abort() { - view.showSettingsPanel(false); - for (Connection c : connections) { - c.remove(); - } - } } diff --git a/src/jrummikub/control/network/NetworkControl.java b/src/jrummikub/control/network/NetworkControl.java index 4f4dad6..bb60556 100644 --- a/src/jrummikub/control/network/NetworkControl.java +++ b/src/jrummikub/control/network/NetworkControl.java @@ -56,13 +56,7 @@ public class NetworkControl { .add(new IListener() { @Override public void handle() { - if (settingsControl == null) { - view.showGameListPanel(false); - - settingsControl = new NetworkSettingsControl( - connectionControl.getNickname(), view, new GameSettings()); - settingsControl.startSettings(); - } + createSettingsControl(); } })); @@ -162,4 +156,28 @@ public class NetworkControl { return stopNetworkEvent; } + private void createSettingsControl() { + if (settingsControl == null) { + view.showGameListPanel(false); + + settingsControl = new NetworkSettingsControl( + connectionControl.getNickname(), view, new GameSettings()); + settingsControl.getOfferGameEvent().add(new IListener1<GameSettings>() { + @Override + public void handle(GameSettings value) { + // TODO Auto-generated method stub + + } + }); + settingsControl.getBackEvent().add(new IListener() { + @Override + public void handle() { + settingsControl=null; + view.showGameListPanel(true); + } + }); + settingsControl.startSettings(); + } + } + } diff --git a/src/jrummikub/control/network/NetworkSettingsControl.java b/src/jrummikub/control/network/NetworkSettingsControl.java index 8afe49e..9c989c6 100644 --- a/src/jrummikub/control/network/NetworkSettingsControl.java +++ b/src/jrummikub/control/network/NetworkSettingsControl.java @@ -9,6 +9,9 @@ import jrummikub.control.AbstractSettingsControl; import jrummikub.model.GameSettings; import jrummikub.model.PlayerSettings; import jrummikub.model.PlayerSettings.Type; +import jrummikub.util.Event; +import jrummikub.util.Event1; +import jrummikub.util.IListener; import jrummikub.view.ISettingsPanel; import jrummikub.view.IView; @@ -17,6 +20,8 @@ import jrummikub.view.IView; */ public class NetworkSettingsControl extends AbstractSettingsControl { private String nickname; + private Event1<GameSettings> offerGameEvent = new Event1<GameSettings>(); + private Event backEvent = new Event(); /** * Creates a new network settings control @@ -41,6 +46,39 @@ public class NetworkSettingsControl extends AbstractSettingsControl { addPlayer(); addListeners(); + + connections.add(view.getSettingsPanel().getOfferGameEvent() + .add(new IListener() { + @Override + public void handle() { + offerGame(); + } + })); + + connections.add(view.getSettingsPanel().getBackEvent() + .add(new IListener() { + @Override + public void handle() { + abort(); + backEvent.emit(); + } + })); + } + + public Event1<GameSettings> getOfferGameEvent() { + return offerGameEvent; + } + + public Event getBackEvent() { + return backEvent; + } + + private void offerGame(){ + if (!checkSettings()) { + return; + } + abort(); + offerGameEvent.emit(settings); } @Override |