summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMatthias Schiffer <mschiffer@universe-factory.net>2011-06-21 05:20:56 +0200
committerMatthias Schiffer <mschiffer@universe-factory.net>2011-06-21 05:20:56 +0200
commitb69608a0d947ec1de15138a670939417c977775f (patch)
treedc4cd64aef02bbe1a51d5e09736ef945c1d79436 /src
parent67105d228ed4976e73ed62b95db40ad8f485d7b4 (diff)
downloadJRummikub-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')
-rw-r--r--src/jrummikub/control/ApplicationControl.java11
-rw-r--r--src/jrummikub/control/network/NetworkControl.java45
-rw-r--r--src/jrummikub/view/IView.java7
-rw-r--r--src/jrummikub/view/impl/View.java12
4 files changed, 47 insertions, 28 deletions
diff --git a/src/jrummikub/control/ApplicationControl.java b/src/jrummikub/control/ApplicationControl.java
index 18d3ba9..752cb3c 100644
--- a/src/jrummikub/control/ApplicationControl.java
+++ b/src/jrummikub/control/ApplicationControl.java
@@ -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
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() {
diff --git a/src/jrummikub/view/IView.java b/src/jrummikub/view/IView.java
index b6c7163..5ef7060 100644
--- a/src/jrummikub/view/IView.java
+++ b/src/jrummikub/view/IView.java
@@ -156,13 +156,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
*
diff --git a/src/jrummikub/view/impl/View.java b/src/jrummikub/view/impl/View.java
index 06795aa..9a0bf9e 100644
--- a/src/jrummikub/view/impl/View.java
+++ b/src/jrummikub/view/impl/View.java
@@ -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();
@@ -148,11 +147,6 @@ public class View extends JFrame implements IView {
}
@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