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

@ -63,8 +63,6 @@ public class MockView implements IView {
/** */
public MockEvent menuNewGameEvent = new MockEvent();
/** */
public MockEvent menuQuitEvent = new MockEvent();
/** */
public MockEvent loadEvent = new MockEvent();
/** */
public MockEvent1<File> saveEvent = new MockEvent1<File>();
@ -220,11 +218,6 @@ public class MockView implements IView {
return menuNewGameEvent;
}
@Override
public IEvent getMenuQuitEvent() {
return menuQuitEvent;
}
@Override
public IEvent getLoadEvent() {
return loadEvent;

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

View file

@ -155,13 +155,6 @@ public interface IView {
*/
public IEvent getMenuNewGameEvent();
/**
* The menu quit event is emitted when the user selects the quit menu entry
*
* @return the event
*/
public IEvent getMenuQuitEvent();
/**
* The load event is emitted when the user wants to load a previously saved
* game state

View file

@ -79,7 +79,6 @@ public class View extends JFrame implements IView {
private JFileChooser chooser;
private Event menuNewGameEvent = new Event();
private Event menuQuitEvent = new Event();
private Event networkGameEvent = new Event();
private Event loadEvent = new Event();
@ -147,11 +146,6 @@ public class View extends JFrame implements IView {
return menuNewGameEvent;
}
@Override
public IEvent getMenuQuitEvent() {
return menuQuitEvent;
}
@Override
public IEvent1<File> getLoadFileEvent() {
return loadFileEvent;
@ -246,7 +240,7 @@ public class View extends JFrame implements IView {
gameMenu.addSeparator();
gameMenu.add(createMenuItem("Beenden", menuQuitEvent));
gameMenu.add(createMenuItem("Beenden", quitEvent));
setJMenuBar(menuBar);
}
@ -503,11 +497,11 @@ public class View extends JFrame implements IView {
@Override
public void showLoginPanel(boolean show) {
loginPanel.setVisible(show);
if (show) {
loginPanel.resetLoginPanel();
}
loginPanel.setVisible(show);
}
@Override