diff options
author | Bennet Gerlach <bennet_gerlach@web.de> | 2011-06-20 03:06:46 +0200 |
---|---|---|
committer | Bennet Gerlach <bennet_gerlach@web.de> | 2011-06-20 03:06:46 +0200 |
commit | 4df5c0e665991dd19a2f25ee513c3ff85a672c55 (patch) | |
tree | 1da402f1c8f98d1a67cfb887f66c2b17d008560a | |
parent | ace7175f1a57f3dc88a861842969e84efacf65ad (diff) | |
download | JRummikub-4df5c0e665991dd19a2f25ee513c3ff85a672c55.tar JRummikub-4df5c0e665991dd19a2f25ee513c3ff85a672c55.zip |
Implemented login error messages
git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@500 72836036-5685-4462-b002-a69064685172
-rw-r--r-- | mock/jrummikub/control/network/MockConnectionControl.java | 7 | ||||
-rw-r--r-- | mock/jrummikub/view/MockView.java | 12 | ||||
-rw-r--r-- | src/jrummikub/control/ApplicationControl.java | 76 | ||||
-rw-r--r-- | src/jrummikub/control/LoginControl.java | 18 | ||||
-rw-r--r-- | src/jrummikub/control/network/ConnectionControl.java | 61 | ||||
-rw-r--r-- | src/jrummikub/control/network/IConnectionControl.java | 4 | ||||
-rw-r--r-- | src/jrummikub/control/network/NetworkControl.java | 49 | ||||
-rw-r--r-- | src/jrummikub/view/IConnectPanel.java | 11 | ||||
-rw-r--r-- | src/jrummikub/view/IView.java | 40 | ||||
-rw-r--r-- | src/jrummikub/view/LoginError.java | 18 | ||||
-rw-r--r-- | src/jrummikub/view/impl/ConnectPanel.java | 109 | ||||
-rw-r--r-- | src/jrummikub/view/impl/QuitWarningPanel.java | 8 | ||||
-rw-r--r-- | src/jrummikub/view/impl/View.java | 36 |
13 files changed, 329 insertions, 120 deletions
diff --git a/mock/jrummikub/control/network/MockConnectionControl.java b/mock/jrummikub/control/network/MockConnectionControl.java index 924febb..d0bb1fa 100644 --- a/mock/jrummikub/control/network/MockConnectionControl.java +++ b/mock/jrummikub/control/network/MockConnectionControl.java @@ -12,6 +12,7 @@ import jrummikub.util.IEvent2; import jrummikub.util.MockEvent; import jrummikub.util.MockEvent1; import jrummikub.util.MockEvent2; +import jrummikub.view.LoginError; /** */ public class MockConnectionControl implements IConnectionControl { @@ -20,7 +21,7 @@ public class MockConnectionControl implements IConnectionControl { /** */ public MockEvent connectedEvent = new MockEvent(); /** */ - public MockEvent connectionFailedEvent = new MockEvent(); + public MockEvent1<LoginError> connectionFailedEvent = new MockEvent1<LoginError>(); /** */ public MockEvent1<GameData> gameOfferEvent = new MockEvent1<GameData>(); /** */ @@ -66,7 +67,7 @@ public class MockConnectionControl implements IConnectionControl { @Override public void connect() { if (failOnConnect) { - connectionFailedEvent.emit(); + connectionFailedEvent.emit(LoginError.UNKNOWN_ERROR); } else { connected = true; connectedEvent.emit(); @@ -84,7 +85,7 @@ public class MockConnectionControl implements IConnectionControl { } @Override - public IEvent getConnectionFailedEvent() { + public IEvent1<LoginError> getConnectionFailedEvent() { return connectionFailedEvent; } diff --git a/mock/jrummikub/view/MockView.java b/mock/jrummikub/view/MockView.java index f283ebd..5440fc8 100644 --- a/mock/jrummikub/view/MockView.java +++ b/mock/jrummikub/view/MockView.java @@ -225,6 +225,12 @@ public class MockView implements IView { } @Override + public IConnectPanel getConnectPanel() { + // TODO Auto-generated method stub + return null; + } + + @Override public void setInitialMeldError(int points) { // TODO Auto-generated method stub @@ -295,4 +301,10 @@ public class MockView implements IView { public void load() { // TODO Auto-generated method stub } + + @Override + public void showConnectPanel(boolean show) { + // TODO Auto-generated method stub + + } } diff --git a/src/jrummikub/control/ApplicationControl.java b/src/jrummikub/control/ApplicationControl.java index 7a629af..bc16cb4 100644 --- a/src/jrummikub/control/ApplicationControl.java +++ b/src/jrummikub/control/ApplicationControl.java @@ -32,7 +32,7 @@ public class ApplicationControl { * Creates a new application control * * @param view - * the view to use + * the view to use */ public ApplicationControl(final IView view) { this.view = view; @@ -43,15 +43,16 @@ public class ApplicationControl { public void handle() { view.getQuitWarningPanel().setMode(QuitMode.QUIT_GAME); view.showQuitWarningPanel(true); - tempConnection = view.getQuitWarningPanel().getQuitEvent().add(new IListener() { - @Override - public void handle() { - abortControls(); - startApplication(); - view.showQuitWarningPanel(false); - tempConnection.remove(); - } - }); + tempConnection = view.getQuitWarningPanel().getQuitEvent() + .add(new IListener() { + @Override + public void handle() { + abortControls(); + startApplication(); + view.showQuitWarningPanel(false); + tempConnection.remove(); + } + }); } }); view.getMenuQuitEvent().add(new IListener() { @@ -89,7 +90,7 @@ public class ApplicationControl { } } }); - + view.getQuitWarningPanel().getCancelEvent().add(new IListener() { @Override public void handle() { @@ -97,16 +98,22 @@ public class ApplicationControl { } }); - addLoginControlListeners(); + view.getNetworkGameEvent().add(new IListener() { + @Override + public void handle() { + abortControls(); + + createLoginControl(); + } + }); saveControl.getLoadEvent().add( new IListener3<GameSettings, GameState, IRoundState>() { @Override - public void handle(GameSettings settings, - GameState gameState, IRoundState roundState) { + public void handle(GameSettings settings, GameState gameState, + IRoundState roundState) { abortControls(); - gameControl = new GameControl(settings, saveControl, - view); + gameControl = new GameControl(settings, saveControl, view); addGameControlListeners(gameControl); gameControl.continueGame(gameState, roundState); } @@ -119,28 +126,21 @@ public class ApplicationControl { }); } - private void addLoginControlListeners() { - view.getNetworkGameEvent().add(new IListener() { + private void createLoginControl() { + loginControl = new LoginControl(view); + loginControl.getLoginEvent().add(new IListener1<LoginData>() { + @Override + public void handle(LoginData loginData) { + createNetworkControl(loginData); + } + }); + loginControl.getCancelEvent().add(new IListener() { @Override public void handle() { - abortControls(); - - loginControl = new LoginControl(view); - loginControl.getLoginEvent().add(new IListener1<LoginData>() { - @Override - public void handle(LoginData loginData) { - createNetworkControl(loginData); - } - }); - loginControl.getCancelEvent().add(new IListener() { - @Override - public void handle() { - startApplication(); - } - }); - loginControl.startLogin(); + startApplication(); } }); + loginControl.startLogin(); } private void abortControls() { @@ -215,6 +215,14 @@ public class ApplicationControl { } }); + networkControl.getBackToLoginEvent().add(new IListener() { + @Override + public void handle() { + networkControl = null; + createLoginControl(); + } + }); + networkControl.startNetwork(); } } diff --git a/src/jrummikub/control/LoginControl.java b/src/jrummikub/control/LoginControl.java index 9355220..ccf6e2e 100644 --- a/src/jrummikub/control/LoginControl.java +++ b/src/jrummikub/control/LoginControl.java @@ -27,7 +27,7 @@ public class LoginControl { * Constructor for login Control * * @param view - * for events which need handling + * for events which need handling */ public LoginControl(final IView view) { this.view = view; @@ -36,18 +36,18 @@ public class LoginControl { @Override public void handle(LoginData loginData) { abort(); + // TODO connectPanel anzeigen loginEvent.emit(loginData); } })); - connections.add(view.getLoginPanel().getCancelEvent() - .add(new IListener() { - @Override - public void handle() { - abort(); - cancelEvent.emit(); - } - })); + connections.add(view.getLoginPanel().getCancelEvent().add(new IListener() { + @Override + public void handle() { + abort(); + cancelEvent.emit(); + } + })); } /** diff --git a/src/jrummikub/control/network/ConnectionControl.java b/src/jrummikub/control/network/ConnectionControl.java index acccbdc..54c9512 100644 --- a/src/jrummikub/control/network/ConnectionControl.java +++ b/src/jrummikub/control/network/ConnectionControl.java @@ -16,6 +16,7 @@ import jrummikub.util.IEvent; import jrummikub.util.IEvent1; import jrummikub.util.IEvent2; import jrummikub.util.LoginData; +import jrummikub.view.LoginError; import org.jivesoftware.smack.Connection; import org.jivesoftware.smack.PacketListener; @@ -46,7 +47,7 @@ public class ConnectionControl implements IConnectionControl { private volatile MultiUserChat muc; private Event connectedEvent = new Event(); - private Event connectionFailedEvent = new Event(); + private Event1<LoginError> connectionFailedEvent = new Event1<LoginError>(); private Event1<GameData> gameOfferEvent = new Event1<GameData>(); private Event1<UUID> gameWithdrawalEvent = new Event1<UUID>(); @@ -72,7 +73,7 @@ public class ConnectionControl implements IConnectionControl { * Creates new connection control * * @param loginData - * player's login data + * player's login data */ public ConnectionControl(LoginData loginData) { this.loginData = loginData; @@ -91,7 +92,7 @@ public class ConnectionControl implements IConnectionControl { @Override public void disconnect() { connectedEvent = new Event(); - connectionFailedEvent = new Event(); + connectionFailedEvent = new Event1<LoginError>(); run(new Runnable() { @Override public void run() { @@ -111,7 +112,7 @@ public class ConnectionControl implements IConnectionControl { } @Override - public IEvent getConnectionFailedEvent() { + public IEvent1<LoginError> getConnectionFailedEvent() { return connectionFailedEvent; } @@ -252,8 +253,7 @@ public class ConnectionControl implements IConnectionControl { protected void addData(DefaultPacketExtension extension) { extension.setValue("messageType", "change_color"); extension.setValue("uuid", uuid.toString()); - extension.setValue("color", - Base64.encodeObject(color, Base64.GZIP)); + extension.setValue("color", Base64.encodeObject(color, Base64.GZIP)); } }); } @@ -316,8 +316,8 @@ public class ConnectionControl implements IConnectionControl { protected void addData(DefaultPacketExtension extension) { extension.setValue("messageType", "game_offer"); extension.setValue("uuid", data.getGameID().toString()); - extension.setValue("gameSettings", Base64.encodeObject( - data.getGameSettings(), Base64.GZIP)); + extension.setValue("gameSettings", + Base64.encodeObject(data.getGameSettings(), Base64.GZIP)); } }); } @@ -340,6 +340,15 @@ public class ConnectionControl implements IConnectionControl { }); } + private static <T> void emitLater(final Event1<T> event, final T arg) { + SwingUtilities.invokeLater(new Runnable() { + @Override + public void run() { + event.emit(arg); + } + }); + } + private Message createMessage(PacketExtension extension) { Message message = muc.createMessage(); message.addExtension(extension); @@ -355,8 +364,8 @@ public class ConnectionControl implements IConnectionControl { .getExtension(ELEMENT_NAME, NAMESPACE); if (((Message) packet).getType() == Message.Type.error) { - System.err.println("Received error message from '" - + packet.getFrom() + "'"); + System.err.println("Received error message from '" + packet.getFrom() + + "'"); return; } @@ -372,14 +381,13 @@ public class ConnectionControl implements IConnectionControl { String sender, String messageType) { if (messageType.equals("game_offer")) { UUID uuid = UUID.fromString(extension.getValue("uuid")); - GameSettings settings = (GameSettings) Base64 - .decodeToObject(extension.getValue("gameSettings")); + GameSettings settings = (GameSettings) Base64.decodeToObject(extension + .getValue("gameSettings")); GameData gameData = new GameData(uuid, settings, sender); gameOfferEvent.emit(gameData); } else if (messageType.equals("game_withdrawal")) { - gameWithdrawalEvent - .emit(UUID.fromString(extension.getValue("uuid"))); + gameWithdrawalEvent.emit(UUID.fromString(extension.getValue("uuid"))); } else if (messageType.equals("game_request")) { if (offeredGame != null) { sendGameOffer(); @@ -447,10 +455,26 @@ public class ConnectionControl implements IConnectionControl { connection.disconnect(); connection = null; - // TODO Auto-generated catch block + XMPPError xmppError = e.getXMPPError(); + + if (xmppError != null) { + int code = xmppError.getCode(); + if (code == 504) { + emitLater(connectionFailedEvent, LoginError.UNKNOWN_HOST); + return; + } else if (code == 404) { + emitLater(connectionFailedEvent, LoginError.UNKNOWN_CHANNEL); + return; + } else if (code == 503) { + emitLater(connectionFailedEvent, LoginError.RESOURCE_CONFLICT); + return; + } else if (code == 401 || code == 402 || code == 407) { + emitLater(connectionFailedEvent, LoginError.AUTHENTICATION_FAILED); + return; + } + } e.printStackTrace(); - - emitLater(connectionFailedEvent); + emitLater(connectionFailedEvent, LoginError.UNKNOWN_ERROR); } } } @@ -471,8 +495,7 @@ public class ConnectionControl implements IConnectionControl { break; // Join was successful, break the loop } catch (XMPPException e) { XMPPError error = e.getXMPPError(); - if (error.getType() == Type.CANCEL - && error.getCode() == 409) { + if (error.getType() == Type.CANCEL && error.getCode() == 409) { // There was a conflict, try again with another // nickname nickname += "_"; diff --git a/src/jrummikub/control/network/IConnectionControl.java b/src/jrummikub/control/network/IConnectionControl.java index b329b4c..ff23c82 100644 --- a/src/jrummikub/control/network/IConnectionControl.java +++ b/src/jrummikub/control/network/IConnectionControl.java @@ -9,6 +9,7 @@ import jrummikub.util.GameData; import jrummikub.util.IEvent; import jrummikub.util.IEvent1; import jrummikub.util.IEvent2; +import jrummikub.view.LoginError; interface IConnectionControl { @@ -20,7 +21,7 @@ interface IConnectionControl { public IEvent getConnectedEvent(); - public IEvent getConnectionFailedEvent(); + public IEvent1<LoginError> getConnectionFailedEvent(); public IEvent1<GameData> getGameOfferEvent(); @@ -65,5 +66,4 @@ interface IConnectionControl { public void endTurn(ITable table); public void startTurn(IRoundState state); - }
\ No newline at end of file diff --git a/src/jrummikub/control/network/NetworkControl.java b/src/jrummikub/control/network/NetworkControl.java index 71000aa..60640db 100644 --- a/src/jrummikub/control/network/NetworkControl.java +++ b/src/jrummikub/control/network/NetworkControl.java @@ -15,6 +15,7 @@ import jrummikub.util.IListener; import jrummikub.util.IListener1; import jrummikub.util.LoginData; import jrummikub.view.IView; +import jrummikub.view.LoginError; /** * Class dealing with network connection, offering and choice of network games @@ -24,6 +25,7 @@ public class NetworkControl { private IView view; private List<Connection> connections = new ArrayList<Connection>(); private Event stopNetworkEvent = new Event(); + private Event backToLoginEvent = new Event(); private NetworkSettingsControl settingsControl; private GameOfferControl gameOfferControl; @@ -36,11 +38,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, final IView view) { @@ -85,7 +87,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( @@ -133,22 +135,29 @@ public class NetworkControl { private void addConnectionSetupListeners(final LoginData loginData, final IView view) { - connections.add(connectionControl.getConnectedEvent().add( - new IListener() { + connections.add(connectionControl.getConnectedEvent().add(new IListener() { + @Override + public void handle() { + view.getGameListPanel().setChannelName(loginData.getChannelName()); + view.showGameListPanel(true); + } + })); + + connections.add(connectionControl.getConnectionFailedEvent().add( + new IListener1<LoginError>() { @Override - public void handle() { - view.getGameListPanel().setChannelName( - loginData.getChannelName()); - view.showGameListPanel(true); + public void handle(LoginError error) { + view.getConnectPanel().setMode(error); + view.showConnectPanel(true); } })); - connections.add(connectionControl.getConnectionFailedEvent().add( - new IListener() { + connections.add(view.getConnectPanel().getCancelEvent() + .add(new IListener() { @Override public void handle() { - // TODO Auto-generated method stub - + abort(); + backToLoginEvent.emit(); } })); } @@ -181,9 +190,11 @@ public class NetworkControl { } /** - * Starts a new network connection with the sepcified data + * Starts a new network connection with the specified data */ public void startNetwork() { + view.showConnectPanel(true); + view.getConnectPanel().setMode(null); connectionControl.connect(); } @@ -195,6 +206,7 @@ public class NetworkControl { c.remove(); } view.showGameListPanel(false); + view.showConnectPanel(false); if (settingsControl != null) { settingsControl.abort(); @@ -218,6 +230,10 @@ public class NetworkControl { return stopNetworkEvent; } + public IEvent getBackToLoginEvent() { + return backToLoginEvent; + } + private void createSettingsControl() { if (settingsControl != null) { return; @@ -247,8 +263,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/IConnectPanel.java b/src/jrummikub/view/IConnectPanel.java new file mode 100644 index 0000000..57d0aad --- /dev/null +++ b/src/jrummikub/view/IConnectPanel.java @@ -0,0 +1,11 @@ +package jrummikub.view;
+
+import jrummikub.util.IEvent;
+
+public interface IConnectPanel {
+
+ public void setMode(LoginError error);
+
+ public IEvent getCancelEvent();
+
+}
diff --git a/src/jrummikub/view/IView.java b/src/jrummikub/view/IView.java index 09ab088..9962062 100644 --- a/src/jrummikub/view/IView.java +++ b/src/jrummikub/view/IView.java @@ -59,7 +59,7 @@ public interface IView { * Sets the current player's name * * @param playerName - * the player name + * the player name */ public void setCurrentPlayerName(String playerName); @@ -67,7 +67,7 @@ public interface IView { * Sets the stones that are to be painted selected * * @param stones - * the stones to be painted selected + * the stones to be painted selected */ public void setSelectedStones(Collection<Stone> stones); @@ -104,7 +104,7 @@ public interface IView { * Shows or hides the game settings panel * * @param show - * specifies if the panel shall be shown or hidden + * specifies if the panel shall be shown or hidden */ public void showSettingsPanel(boolean show); @@ -112,7 +112,7 @@ public interface IView { * Shows or hides the score panel * * @param show - * specifies if the panel shall be shown or hidden + * specifies if the panel shall be shown or hidden */ public void showScorePanel(boolean show); @@ -121,16 +121,16 @@ public interface IView { * along with the name * * @param color - * the current player's color + * the current player's color */ public void setCurrentPlayerColor(Color color); /** - * Is used for the PlayerPanel to display if a player has laid out along - * with the name + * Is used for the PlayerPanel to display if a player has laid out along with + * the name * * @param hasLaidOut - * specifies if the current player has laid out or not + * specifies if the current player has laid out or not */ public void setCurrentPlayerHasLaidOut(boolean hasLaidOut); @@ -145,13 +145,13 @@ public interface IView { * Sets the bottom panels type * * @param type - * the type of the bottom panel + * the type of the bottom panel */ public void setBottomPanel(BottomPanelType type); /** - * The menu new game event is emitted when the user selects the new game - * menu entry + * The menu new game event is emitted when the user selects the new game menu + * entry * * @return the event */ @@ -226,7 +226,7 @@ public interface IView { * Show/hide login panel * * @param show - * true = login panel is shown + * true = login panel is shown */ public void showLoginPanel(boolean show); @@ -234,7 +234,7 @@ public interface IView { * Enable/disable pause mode * * @param enable - * true = enable + * true = enable */ public void enablePauseMode(boolean enable); @@ -242,7 +242,7 @@ public interface IView { * Show/hide game list panel * * @param show - * true = show + * true = show */ public void showGameListPanel(boolean show); @@ -250,7 +250,7 @@ public interface IView { * Show/hide side panel * * @param show - * true to show + * true to show */ void showSidePanel(boolean show); @@ -258,7 +258,7 @@ public interface IView { * Is set if a player tried to lay out less than initial meld threshold * * @param points - * initial meld threshold + * initial meld threshold */ public void setInitialMeldError(int points); @@ -266,7 +266,7 @@ public interface IView { * Show stone collection * * @param enable - * showing collection + * showing collection */ public void setStoneCollectionHidden(boolean enable); @@ -279,7 +279,7 @@ public interface IView { * Set invalid sets to enable showing * * @param sets - * invalid sets on table + * invalid sets on table */ public void setInvalidStoneSets(Collection<StoneSet> sets); @@ -322,4 +322,8 @@ public interface IView { public IEvent1<File> getLoadFileEvent(); public void load(); + + public void showConnectPanel(boolean show); + + public IConnectPanel getConnectPanel(); } diff --git a/src/jrummikub/view/LoginError.java b/src/jrummikub/view/LoginError.java new file mode 100644 index 0000000..a67a395 --- /dev/null +++ b/src/jrummikub/view/LoginError.java @@ -0,0 +1,18 @@ +package jrummikub.view;
+
+public enum LoginError {
+ /** */
+ UNKNOWN_ERROR,
+ /** */
+ TIMEOUT,
+ /** */
+ CONNECTION_REFUSED,
+ /** */
+ AUTHENTICATION_FAILED,
+ /** */
+ RESOURCE_CONFLICT,
+ /** */
+ UNKNOWN_HOST,
+ /** */
+ UNKNOWN_CHANNEL
+}
diff --git a/src/jrummikub/view/impl/ConnectPanel.java b/src/jrummikub/view/impl/ConnectPanel.java new file mode 100644 index 0000000..befa687 --- /dev/null +++ b/src/jrummikub/view/impl/ConnectPanel.java @@ -0,0 +1,109 @@ +package jrummikub.view.impl;
+
+import java.awt.Color;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.Insets;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.JButton;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JProgressBar;
+import javax.swing.SwingConstants;
+import javax.swing.border.CompoundBorder;
+import javax.swing.border.EmptyBorder;
+import javax.swing.border.LineBorder;
+
+import jrummikub.util.Event;
+import jrummikub.util.IEvent;
+import jrummikub.view.IConnectPanel;
+import jrummikub.view.LoginError;
+
+public class ConnectPanel extends JPanel implements IConnectPanel {
+ private JLabel messageLabel;
+ private JProgressBar foobar;
+ private JButton cancelButton;
+
+ private Event cancelEvent = new Event();
+
+ public ConnectPanel() {
+ setLayout(new GridBagLayout());
+
+ GridBagConstraints c = new GridBagConstraints();
+ c.gridx = 0;
+ c.gridy = 0;
+ c.weightx = 1;
+ c.weighty = 1;
+ c.fill = GridBagConstraints.BOTH;
+ c.anchor = GridBagConstraints.CENTER;
+
+ messageLabel = new JLabel();
+ messageLabel.setHorizontalAlignment(SwingConstants.CENTER);
+ add(messageLabel, c);
+
+ c.gridy = 1;
+ c.insets = new Insets(5, 5, 5, 5);
+
+ foobar = new JProgressBar();
+ foobar.setIndeterminate(true);
+ add(foobar, c);
+
+ c.gridy = 2;
+
+ cancelButton = new JButton();
+ cancelButton.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ cancelEvent.emit();
+ }
+ });
+ add(cancelButton, c);
+
+ setBorder(new CompoundBorder(new LineBorder(Color.BLACK), new EmptyBorder(
+ 10, 10, 10, 10)));
+ }
+
+ @Override
+ public void setMode(LoginError error) {
+ if (error == null) {
+ foobar.setVisible(true);
+ messageLabel.setText("Verbindung wird hergestellt");
+ cancelButton.setText("Abbrechen");
+ } else {
+ foobar.setVisible(false);
+ String text = "";
+ switch (error) {
+ case UNKNOWN_ERROR:
+ text = "Ein unbekannter Fehler ist aufgetreten";
+ break;
+ case AUTHENTICATION_FAILED:
+ text = "Die Authentifizierung ist fehlgeschlagen";
+ break;
+ case CONNECTION_REFUSED:
+ text = "Die Verbindung wurde abgelehnt";
+ break;
+ case RESOURCE_CONFLICT:
+ text = "Es gibt bereits einen solchen Spieler";
+ break;
+ case TIMEOUT:
+ text = "Der Server reagiert nicht";
+ break;
+ case UNKNOWN_CHANNEL:
+ text = "Der Channel konnte nicht gefunden werden";
+ break;
+ case UNKNOWN_HOST:
+ text = "Der Server konnte nicht gefunden werden";
+ break;
+ }
+ messageLabel.setText(text);
+ }
+ }
+
+ @Override
+ public IEvent getCancelEvent() {
+ return cancelEvent;
+ }
+
+}
diff --git a/src/jrummikub/view/impl/QuitWarningPanel.java b/src/jrummikub/view/impl/QuitWarningPanel.java index b7992b0..edc8947 100644 --- a/src/jrummikub/view/impl/QuitWarningPanel.java +++ b/src/jrummikub/view/impl/QuitWarningPanel.java @@ -19,7 +19,6 @@ import jrummikub.util.IEvent; import jrummikub.view.IQuitWarningPanel; public class QuitWarningPanel extends JPanel implements IQuitWarningPanel { - private JPanel buttonPanel; private JButton cancelButton; private JButton quitButton; private QuitMode quitMode; @@ -51,8 +50,8 @@ public class QuitWarningPanel extends JPanel implements IQuitWarningPanel { c.gridx = 1; add(quitButton, c); - setBorder(new CompoundBorder(new LineBorder(Color.BLACK), - new EmptyBorder(10, 10, 10, 10))); + setBorder(new CompoundBorder(new LineBorder(Color.BLACK), new EmptyBorder( + 10, 10, 10, 10))); } private JButton createButton(String title, final Event event) { @@ -71,8 +70,7 @@ public class QuitWarningPanel extends JPanel implements IQuitWarningPanel { this.quitMode = mode; switch (quitMode) { case QUIT_PROCESS: - messageLabel - .setText("Beim Beenden geht das aktuelle Spiel verloren"); + messageLabel.setText("Beim Beenden geht das aktuelle Spiel verloren"); break; case QUIT_GAME: messageLabel.setText("Der aktuelle Spielstand geht verloren"); diff --git a/src/jrummikub/view/impl/View.java b/src/jrummikub/view/impl/View.java index b367b65..94cb04f 100644 --- a/src/jrummikub/view/impl/View.java +++ b/src/jrummikub/view/impl/View.java @@ -14,6 +14,7 @@ import java.util.Collection; import java.util.Collections; import java.util.List; +import javax.swing.JComponent; import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JLayeredPane; @@ -36,6 +37,7 @@ import jrummikub.util.IEvent; import jrummikub.util.IEvent1; import jrummikub.util.IListener; import jrummikub.util.Pair; +import jrummikub.view.IConnectPanel; import jrummikub.view.IGameListPanel; import jrummikub.view.IHandPanel; import jrummikub.view.ILoginPanel; @@ -73,7 +75,7 @@ public class View extends JFrame implements IView { private GameListPanel gameListPanel; private SidePanel sidePanel; private QuitWarningPanel quitWarningPanel; - + private ConnectPanel connectPanel; private BottomPanelType bottomPanelType; private JFileChooser chooser; @@ -132,6 +134,11 @@ public class View extends JFrame implements IView { } @Override + public IConnectPanel getConnectPanel() { + return connectPanel; + } + + @Override public IGameListPanel getGameListPanel() { return gameListPanel; } @@ -150,9 +157,9 @@ public class View extends JFrame implements IView { public IEvent1<File> getLoadFileEvent() { return loadFileEvent; } - + @Override - public IEvent getLoadEvent(){ + public IEvent getLoadEvent() { return loadEvent; } @@ -287,7 +294,7 @@ public class View extends JFrame implements IView { setSize(1000, 700); setMinimumSize(new Dimension(750, 550)); - + setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); addWindowListener(new WindowAdapter() { @Override @@ -312,19 +319,21 @@ public class View extends JFrame implements IView { loginPanel = new LoginPanel(); loginPanel.setVisible(false); - layeredPane.setLayer(loginPanel, JLayeredPane.POPUP_LAYER); layeredPane.add(loginPanel); gameListPanel = new GameListPanel(); gameListPanel.setVisible(false); - layeredPane.setLayer(gameListPanel, JLayeredPane.POPUP_LAYER); layeredPane.add(gameListPanel); + connectPanel = new ConnectPanel(); + connectPanel.setVisible(false); + layeredPane.setLayer(connectPanel, JLayeredPane.POPUP_LAYER); + layeredPane.add(connectPanel); + quitWarningPanel = new QuitWarningPanel(); quitWarningPanel.setVisible(false); - layeredPane.setLayer(quitWarningPanel, JLayeredPane.POPUP_LAYER); layeredPane.add(quitWarningPanel); @@ -386,10 +395,6 @@ public class View extends JFrame implements IView { winPanel.setVisible(false); mainLayer.add(winPanel); - quitWarningPanel = new QuitWarningPanel(); - quitWarningPanel.setVisible(false); - mainLayer.add(quitWarningPanel); - sidePanel = new SidePanel(); sidePanel.setVisible(false); mainLayer.add(sidePanel); @@ -440,7 +445,8 @@ public class View extends JFrame implements IView { rescaleSubpanel(loginPanel, 1 / 3.0, 1 / 3.0, 200, 200); rescaleSubpanel(gameListPanel, 1 / 2.0, 1 / 2.0, 475, 300); rescaleSubpanel(quitWarningPanel, 1 / 2.0, 1 / 6.0, 400, 150); -} + rescaleSubpanel(connectPanel, 1 / 2.0, 1 / 6.0, 400, 150); + } private void rescaleSubpanel(JPanel sub, double widthFactor, double heightFactor, int minWidth, int minHeight) { @@ -505,6 +511,11 @@ public class View extends JFrame implements IView { } @Override + public void showConnectPanel(boolean show) { + connectPanel.setVisible(show); + } + + @Override public void setCurrentPlayerName(String playerName) { playerPanel.setCurrentPlayerName(playerName); startTurnPanel.setCurrentPlayerName(playerName); @@ -600,7 +611,6 @@ public class View extends JFrame implements IView { @Override public void setBottomPanel(BottomPanelType type) { bottomPanelType = type; - doSetBottomPanel(type); } |