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

View file

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

View file

@ -17,6 +17,7 @@ import jrummikub.util.IEvent;
import jrummikub.util.IListener; import jrummikub.util.IListener;
import jrummikub.util.IListener1; import jrummikub.util.IListener1;
import jrummikub.util.LoginData; import jrummikub.util.LoginData;
import jrummikub.view.IQuitWarningPanel.QuitMode;
import jrummikub.view.IView; import jrummikub.view.IView;
import jrummikub.view.LoginError; import jrummikub.view.LoginError;
@ -27,6 +28,7 @@ public class NetworkControl {
private IConnectionControl connectionControl; private IConnectionControl connectionControl;
private IView view; private IView view;
private List<Connection> connections = new ArrayList<Connection>(); private List<Connection> connections = new ArrayList<Connection>();
Connection tempConnection;
private Event stopNetworkEvent = new Event(); private Event stopNetworkEvent = new Event();
private Event backToLoginEvent = new Event(); private Event backToLoginEvent = new Event();
@ -57,11 +59,11 @@ public class NetworkControl {
* Creates a new network control * Creates a new network control
* *
* @param loginData * @param loginData
* user's login data * user's login data
* @param connectionControl * @param connectionControl
* current connection for events and messages * current connection for events and messages
* @param view * @param view
* for events and handlers * for events and handlers
*/ */
public NetworkControl(final LoginData loginData, public NetworkControl(final LoginData loginData,
IConnectionControl connectionControl, SaveControl saveControl, IConnectionControl connectionControl, SaveControl saveControl,
@ -73,6 +75,36 @@ public class NetworkControl {
addConnectionSetupListeners(loginData, view); addConnectionSetupListeners(loginData, view);
addConnectionControlListeners(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() connections.add(view.getGameListPanel().getJoinEvent()
.add(new IListener1<GameData>() { .add(new IListener1<GameData>() {
@Override @Override
@ -108,7 +140,7 @@ public class NetworkControl {
* Adds the listeners for connection control events * Adds the listeners for connection control events
* *
* @param view * @param view
* view for events * view for events
*/ */
public void addConnectionControlListeners(final IView view) { public void addConnectionControlListeners(final IView view) {
connections.add(connectionControl.getGameOfferEvent().add( connections.add(connectionControl.getGameOfferEvent().add(
@ -250,7 +282,7 @@ public class NetworkControl {
gameJoinControl.abort(); gameJoinControl.abort();
gameJoinControl = null; gameJoinControl = null;
} }
if (gameControl != null) { if (gameControl != null) {
gameControl.abortGame(); gameControl.abortGame();
gameControl = null; gameControl = null;
} }
@ -306,8 +338,7 @@ public class NetworkControl {
if (gameOfferControl != null) { if (gameOfferControl != null) {
return; return;
} }
gameOfferControl = new GameOfferControl(connectionControl, settings, gameOfferControl = new GameOfferControl(connectionControl, settings, view);
view);
gameOfferControl.getBackEvent().add(new IListener() { gameOfferControl.getBackEvent().add(new IListener() {
@Override @Override
public void handle() { public void handle() {

View file

@ -155,13 +155,6 @@ public interface IView {
*/ */
public IEvent getMenuNewGameEvent(); 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 * The load event is emitted when the user wants to load a previously saved
* game state * game state

View file

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