diff options
author | Matthias Schiffer <mschiffer@universe-factory.net> | 2011-06-21 05:20:56 +0200 |
---|---|---|
committer | Matthias Schiffer <mschiffer@universe-factory.net> | 2011-06-21 05:20:56 +0200 |
commit | b69608a0d947ec1de15138a670939417c977775f (patch) | |
tree | dc4cd64aef02bbe1a51d5e09736ef945c1d79436 /src/jrummikub/control/network | |
parent | 67105d228ed4976e73ed62b95db40ad8f485d7b4 (diff) | |
download | JRummikub-b69608a0d947ec1de15138a670939417c977775f.tar JRummikub-b69608a0d947ec1de15138a670939417c977775f.zip |
Fixed quit warning in network mode
git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@543 72836036-5685-4462-b002-a69064685172
Diffstat (limited to 'src/jrummikub/control/network')
-rw-r--r-- | src/jrummikub/control/network/NetworkControl.java | 45 |
1 files changed, 38 insertions, 7 deletions
diff --git a/src/jrummikub/control/network/NetworkControl.java b/src/jrummikub/control/network/NetworkControl.java index 88f347c..b76c42a 100644 --- a/src/jrummikub/control/network/NetworkControl.java +++ b/src/jrummikub/control/network/NetworkControl.java @@ -17,6 +17,7 @@ import jrummikub.util.IEvent; import jrummikub.util.IListener; import jrummikub.util.IListener1; import jrummikub.util.LoginData; +import jrummikub.view.IQuitWarningPanel.QuitMode; import jrummikub.view.IView; import jrummikub.view.LoginError; @@ -27,6 +28,7 @@ public class NetworkControl { private IConnectionControl connectionControl; private IView view; private List<Connection> connections = new ArrayList<Connection>(); + Connection tempConnection; private Event stopNetworkEvent = new Event(); private Event backToLoginEvent = new Event(); @@ -57,11 +59,11 @@ public class NetworkControl { * Creates a new network control * * @param loginData - * user's login data + * user's login data * @param connectionControl - * current connection for events and messages + * current connection for events and messages * @param view - * for events and handlers + * for events and handlers */ public NetworkControl(final LoginData loginData, IConnectionControl connectionControl, SaveControl saveControl, @@ -73,6 +75,36 @@ public class NetworkControl { addConnectionSetupListeners(loginData, view); addConnectionControlListeners(view); + connections.add(view.getQuitEvent().add(new IListener() { + @Override + public void handle() { + if (gameControl == null) { + System.exit(0); + } else { + view.getQuitWarningPanel().setMode(QuitMode.QUIT_PROCESS); + view.showQuitWarningPanel(true); + tempConnection = view.getQuitWarningPanel().getQuitEvent() + .add(new IListener() { + @Override + public void handle() { + System.exit(0); + } + }); + } + } + })); + connections.add(view.getQuitWarningPanel().getCancelEvent() + .add(new IListener() { + @Override + public void handle() { + view.showQuitWarningPanel(false); + if (tempConnection != null) { + tempConnection.remove(); + tempConnection = null; + } + } + })); + connections.add(view.getGameListPanel().getJoinEvent() .add(new IListener1<GameData>() { @Override @@ -108,7 +140,7 @@ public class NetworkControl { * Adds the listeners for connection control events * * @param view - * view for events + * view for events */ public void addConnectionControlListeners(final IView view) { connections.add(connectionControl.getGameOfferEvent().add( @@ -250,7 +282,7 @@ public class NetworkControl { gameJoinControl.abort(); gameJoinControl = null; } - if (gameControl != null) { + if (gameControl != null) { gameControl.abortGame(); gameControl = null; } @@ -306,8 +338,7 @@ public class NetworkControl { if (gameOfferControl != null) { return; } - gameOfferControl = new GameOfferControl(connectionControl, settings, - view); + gameOfferControl = new GameOfferControl(connectionControl, settings, view); gameOfferControl.getBackEvent().add(new IListener() { @Override public void handle() { |