Fixed quit warning in network mode

git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@543 72836036-5685-4462-b002-a69064685172
This commit is contained in:
Matthias Schiffer 2011-06-21 05:20:56 +02:00
parent 67105d228e
commit b69608a0d9
5 changed files with 47 additions and 35 deletions

View file

@ -56,9 +56,13 @@ public class ApplicationControl {
});
}
});
IListener quitListener = new IListener() {
view.getQuitEvent().add(new IListener() {
@Override
public void handle() {
if (networkControl != null) {
return;
}
if (gameControl == null) {
System.exit(0);
} else {
@ -73,10 +77,7 @@ public class ApplicationControl {
});
}
}
};
view.getMenuQuitEvent().add(quitListener);
view.getQuitEvent().add(quitListener);
});
view.getQuitWarningPanel().getCancelEvent().add(new IListener() {
@Override

View file

@ -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() {