Kommentare, Kommentare

git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@509 72836036-5685-4462-b002-a69064685172
This commit is contained in:
Ida Massow 2011-06-20 04:39:54 +02:00
parent 477e8e9b82
commit 74d8205f30
18 changed files with 315 additions and 154 deletions

View file

@ -3,13 +3,15 @@ package jrummikub.view;
import jrummikub.util.IEvent; import jrummikub.util.IEvent;
import jrummikub.util.MockEvent; import jrummikub.util.MockEvent;
public class MockConnectPanel implements IConnectPanel{ /** */
public class MockConnectPanel implements IConnectPanel {
/** */
public MockEvent cancelEvent = new MockEvent(); public MockEvent cancelEvent = new MockEvent();
@Override @Override
public void setMode(LoginError error) { public void setMode(LoginError error) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
} }
@Override @Override

View file

@ -41,6 +41,8 @@ public class MockView implements IView {
public boolean isLoginPanelVisible = false; public boolean isLoginPanelVisible = false;
/** */ /** */
public boolean isGameListPanelVisible = false; public boolean isGameListPanelVisible = false;
/** */
public boolean isQuitWarningPanelVisible = false;
/** */ /** */
public Collection<Stone> selectedStones; public Collection<Stone> selectedStones;
@ -128,8 +130,8 @@ public class MockView implements IView {
} }
@Override @Override
public void showSettingsPanel(boolean show) { public IGameListPanel getGameListPanel() {
isSettingsPanelVisible = show; return gameListPanel;
} }
@Override @Override
@ -137,11 +139,62 @@ public class MockView implements IView {
return scorePanel; return scorePanel;
} }
@Override
public ILoginPanel getLoginPanel() {
return loginPanel;
}
@Override
public IConnectPanel getConnectPanel() {
return connectPanel;
}
@Override
public ISidePanel getSidePanel() {
return new MockSidePanel();
}
@Override
public MockQuitWarningPanel getQuitWarningPanel() {
return quitWarningPanel;
}
@Override
public void showSettingsPanel(boolean show) {
isSettingsPanelVisible = show;
}
@Override @Override
public void showScorePanel(boolean show) { public void showScorePanel(boolean show) {
isScorePanelVisible = show; isScorePanelVisible = show;
} }
@Override
public void showSidePanel(boolean show) {
// TODO Auto-generated method stub
}
public void showQuitWarningPanel(boolean show) {
isQuitWarningPanelVisible =show;
}
@Override
public void showLoginPanel(boolean show) {
isLoginPanelVisible = show;
}
@Override
public void showGameListPanel(boolean show) {
isGameListPanelVisible = show;
}
@Override
public void showConnectPanel(boolean show) {
// TODO Auto-generated method stub
}
@Override @Override
public void setCurrentPlayerColor(Color color) { public void setCurrentPlayerColor(Color color) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
@ -206,31 +259,6 @@ public class MockView implements IView {
return networkGameEvent; return networkGameEvent;
} }
@Override
public ILoginPanel getLoginPanel() {
return loginPanel;
}
@Override
public void showLoginPanel(boolean show) {
isLoginPanelVisible = show;
}
@Override
public void showGameListPanel(boolean show) {
isGameListPanelVisible = show;
}
@Override
public IGameListPanel getGameListPanel() {
return gameListPanel;
}
@Override
public IConnectPanel getConnectPanel() {
return connectPanel;
}
@Override @Override
public void setInitialMeldError(int points) { public void setInitialMeldError(int points) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
@ -267,32 +295,11 @@ public class MockView implements IView {
} }
@Override
public ISidePanel getSidePanel() {
return new MockSidePanel();
}
@Override
public void showSidePanel(boolean show) {
// TODO Auto-generated method stub
}
public void showQuitWarningPanel(boolean show) {
// TODO Auto-generated method stub
}
@Override @Override
public IEvent getQuitEvent() { public IEvent getQuitEvent() {
return quitEvent; return quitEvent;
} }
@Override
public IQuitWarningPanel getQuitWarningPanel() {
return quitWarningPanel;
}
@Override @Override
public IEvent1<File> getLoadFileEvent() { public IEvent1<File> getLoadFileEvent() {
return loadFileEvent; return loadFileEvent;
@ -302,10 +309,4 @@ public class MockView implements IView {
public void load() { public void load() {
// TODO Auto-generated method stub // TODO Auto-generated method stub
} }
@Override
public void showConnectPanel(boolean show) {
// TODO Auto-generated method stub
}
} }

View file

@ -1,6 +1,6 @@
package jrummikub.control; package jrummikub.control;
import static jrummikub.model.PlayerSettings.Type.*; import static jrummikub.model.PlayerSettings.Type.HUMAN;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
@ -64,6 +64,11 @@ public class RoundControl {
this.view = view; this.view = view;
} }
/**
* Is emitted in network when a new turn starts
*
* @return the event
*/
public IEvent1<IRoundState> getRoundStateUpdateEvent() { public IEvent1<IRoundState> getRoundStateUpdateEvent() {
return roundStateUpdateEvent; return roundStateUpdateEvent;
} }

View file

@ -36,6 +36,27 @@ public class GameOfferControl extends AbstractGameBeginControl {
super(connectionControl, view, new GameData(UUID.randomUUID(), settings), super(connectionControl, view, new GameData(UUID.randomUUID(), settings),
SettingsMode.NETWORK_OFFER); SettingsMode.NETWORK_OFFER);
addConnectionControlListeners(connectionControl, settings);
connections.add(view.getSettingsPanel().getStartGameEvent()
.add(new IListener() {
@Override
public void handle() {
List<PlayerSettings> players = gameData.getGameSettings()
.getPlayerList();
for (PlayerSettings s : players) {
if (s.getType() == Type.NETWORK) {
startGame();
return;
}
}
}
}));
}
private void addConnectionControlListeners(
final IConnectionControl connectionControl,
final GameSettings settings) {
connections.add(connectionControl.getGameJoinEvent().add( connections.add(connectionControl.getGameJoinEvent().add(
new IListener1<String>() { new IListener1<String>() {
@Override @Override
@ -71,21 +92,6 @@ public class GameOfferControl extends AbstractGameBeginControl {
connectionControl.offerGame(gameData); connectionControl.offerGame(gameData);
} }
})); }));
connections.add(view.getSettingsPanel().getStartGameEvent()
.add(new IListener() {
@Override
public void handle() {
List<PlayerSettings> players = gameData.getGameSettings()
.getPlayerList();
for (PlayerSettings s : players) {
if (s.getType() == Type.NETWORK) {
startGame();
return;
}
}
}
}));
} }
/** /**

View file

@ -57,11 +57,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,
@ -108,7 +108,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(
@ -260,6 +260,12 @@ public class NetworkControl {
return stopNetworkEvent; return stopNetworkEvent;
} }
/**
* The back to login event is emitted when the player aborted the connecting
* process or when a connection error has occured and been acknowledged
*
* @return the event
*/
public IEvent getBackToLoginEvent() { public IEvent getBackToLoginEvent() {
return backToLoginEvent; return backToLoginEvent;
} }
@ -293,7 +299,8 @@ public class NetworkControl {
if (gameOfferControl != null) { if (gameOfferControl != null) {
return; return;
} }
gameOfferControl = new GameOfferControl(connectionControl, settings, view); gameOfferControl = new GameOfferControl(connectionControl, settings,
view);
gameOfferControl.getBackEvent().add(new IListener() { gameOfferControl.getBackEvent().add(new IListener() {
@Override @Override
public void handle() { public void handle() {

View file

@ -21,6 +21,9 @@ import jrummikub.util.Pair;
*/ */
public class AIControl extends AbstractTurnControl { public class AIControl extends AbstractTurnControl {
private TurnLogic logic; private TurnLogic logic;
/**
* Does the AI control currently use an internal timer
*/
public static boolean useBackgroundThread = true; public static boolean useBackgroundThread = true;
long startTime; long startTime;
@ -63,7 +66,7 @@ public class AIControl extends AbstractTurnControl {
turnDone = true; turnDone = true;
super.cleanUp(); super.cleanUp();
} }
@Override @Override
public void abortTurn() { public void abortTurn() {
aborted = true; aborted = true;
@ -160,8 +163,8 @@ public class AIControl extends AbstractTurnControl {
for (StoneSet set : result) { for (StoneSet set : result) {
turnInfo.getTable().drop( turnInfo.getTable().drop(
set, set,
new Position(10 * (Math.random() * 2 - 1), new Position(10 * (Math.random() * 2 - 1), 5 * (Math
5 * (Math.random() * 2 - 1))); .random() * 2 - 1)));
for (Stone stone : set) { for (Stone stone : set) {
turnInfo.getHand().pickUp(stone); turnInfo.getHand().pickUp(stone);
} }
@ -173,10 +176,11 @@ public class AIControl extends AbstractTurnControl {
private void doNotMoveExistingSets(List<StoneSet> result) { private void doNotMoveExistingSets(List<StoneSet> result) {
outerLoop: for (Iterator<Pair<StoneSet, Position>> it = turnInfo.getTable() outerLoop: for (Iterator<Pair<StoneSet, Position>> it = turnInfo
.iterator(); it.hasNext();) { .getTable().iterator(); it.hasNext();) {
Pair<StoneSet, Position> pair = it.next(); Pair<StoneSet, Position> pair = it.next();
setSearch: for (Iterator<StoneSet> it2 = result.iterator(); it2.hasNext();) { setSearch: for (Iterator<StoneSet> it2 = result.iterator(); it2
.hasNext();) {
StoneSet set = it2.next(); StoneSet set = it2.next();
if (set.getSize() != pair.getFirst().getSize()) { if (set.getSize() != pair.getFirst().getSize()) {
continue; continue;

View file

@ -16,12 +16,12 @@ public interface ITurnControl {
* Start the turn * Start the turn
* *
* @param info * @param info
* the current turn state * the current turn state
* *
* @param settings * @param settings
* the game settings * the game settings
* @param view * @param view
* view for user interaction. * view for user interaction.
*/ */
public void setup(TurnInfo info, GameSettings settings, IView view); public void setup(TurnInfo info, GameSettings settings, IView view);
@ -49,10 +49,16 @@ public interface ITurnControl {
*/ */
public void abortTurn(); public void abortTurn();
/**
* Emitted in network when the table changes during player turn
*
* @return the event
*/
public IEvent1<ITable> getTableUpdateEvent(); public IEvent1<ITable> getTableUpdateEvent();
/** /**
* The TurnInfo class encapsulates all information concerning the current turn * The TurnInfo class encapsulates all information concerning the current
* turn
*/ */
public class TurnInfo { public class TurnInfo {
private ITable table; private ITable table;
@ -64,13 +70,13 @@ public interface ITurnControl {
* Creates a new TurnInfo instance * Creates a new TurnInfo instance
* *
* @param table * @param table
* the current table * the current table
* @param hand * @param hand
* the current player's hand * the current player's hand
* @param hasLaidOut * @param hasLaidOut
* has the player laid out yet? * has the player laid out yet?
* @param turnMode * @param turnMode
* the turn mode * the turn mode
*/ */
public TurnInfo(ITable table, IHand hand, boolean hasLaidOut, public TurnInfo(ITable table, IHand hand, boolean hasLaidOut,
TurnMode turnMode) { TurnMode turnMode) {

View file

@ -248,6 +248,11 @@ public class GameSettings implements Serializable {
} }
/**
* Calculate the total number of stones in game
*
* @return total number of stones
*/
public int getTotalStones() { public int getTotalStones() {
return getHighestValue() * getStoneSetNumber() return getHighestValue() * getStoneSetNumber()
* getStoneColors().size() + getJokerNumber(); * getStoneColors().size() + getJokerNumber();

View file

@ -18,7 +18,7 @@ public interface IPlayer extends Serializable {
* Set the current hand of the player * Set the current hand of the player
* *
* @param hand * @param hand
* the new hand * the new hand
*/ */
public void setHand(IHand hand); public void setHand(IHand hand);
@ -40,16 +40,38 @@ public interface IPlayer extends Serializable {
* Set if the player laid out * Set if the player laid out
* *
* @param laidOut * @param laidOut
* the player laid out * the player laid out
* *
*/ */
public void setLaidOut(boolean laidOut); public void setLaidOut(boolean laidOut);
/**
* Getter for last turn invalid
*
* @return last turn invalid
*/
public boolean wasLastTurnInvalid(); public boolean wasLastTurnInvalid();
/**
* Sets last turn invalid
*
* @param value
* last turn invalid
*/
public void setLastTurnInvalid(boolean value); public void setLastTurnInvalid(boolean value);
/**
* Gets the number of stones put on table in player's last turn
*
* @return number of stones
*/
public int getLastTurnStoneCount(); public int getLastTurnStoneCount();
/**
* Sets the number of stones out on the table in player's last turn
*
* @param value
* number of stones
*/
public void setLastTurnStoneCount(int value); public void setLastTurnStoneCount(int value);
} }

View file

@ -8,7 +8,7 @@ import jrummikub.util.Pair;
* Interface for the {@link StoneTray} model * Interface for the {@link StoneTray} model
* *
* @param <E> * @param <E>
* Objects held by the IStoneTray * Objects held by the IStoneTray
*/ */
public interface IStoneTray<E extends Sizeable> extends public interface IStoneTray<E extends Sizeable> extends
Iterable<Pair<E, Position>>, Cloneable, Serializable { Iterable<Pair<E, Position>>, Cloneable, Serializable {
@ -17,9 +17,9 @@ public interface IStoneTray<E extends Sizeable> extends
* Adds object to the tray * Adds object to the tray
* *
* @param object * @param object
* object to add to Hand * object to add to Hand
* @param position * @param position
* {@link Position} to put the object * {@link Position} to put the object
*/ */
public void drop(E object, Position position); public void drop(E object, Position position);
@ -27,7 +27,7 @@ public interface IStoneTray<E extends Sizeable> extends
* Returns the position of an object that is already on the tray * Returns the position of an object that is already on the tray
* *
* @param object * @param object
* object whose position is requested * object whose position is requested
* @return position of the object or null when the object is not on the tray * @return position of the object or null when the object is not on the tray
*/ */
public Position getPosition(E object); public Position getPosition(E object);
@ -36,7 +36,7 @@ public interface IStoneTray<E extends Sizeable> extends
* Tries to pick up (remove) a given object * Tries to pick up (remove) a given object
* *
* @param object * @param object
* object to pick up * object to pick up
* @return true when the object was successfully removed * @return true when the object was successfully removed
*/ */
public boolean pickUp(E object); public boolean pickUp(E object);
@ -55,6 +55,13 @@ public interface IStoneTray<E extends Sizeable> extends
*/ */
public int getSize(); public int getSize();
/**
* Search for an object within the stone tray
*
* @param object
* object to search for
* @return object found in stone tray
*/
public boolean contains(E object); public boolean contains(E object);
} }

View file

@ -2,10 +2,25 @@ package jrummikub.view;
import jrummikub.util.IEvent; import jrummikub.util.IEvent;
/**
* Panel shown during connection process and showing errors
*/
public interface IConnectPanel { public interface IConnectPanel {
/**
* Show connection process while error = null, error else
*
* @param error
* the error to allow specific error messages
*/
public void setMode(LoginError error); public void setMode(LoginError error);
/**
* Is emitted when the user wants to abort connecting or has acknowledged
* the error
*
* @return the event
*/
public IEvent getCancelEvent(); public IEvent getCancelEvent();
} }

View file

@ -2,8 +2,14 @@ package jrummikub.view;
import jrummikub.util.IEvent; import jrummikub.util.IEvent;
/**
* Warning panel shown to if the emitted event would cancel the current game
*/
public interface IQuitWarningPanel { public interface IQuitWarningPanel {
/**
* Enum summarizing the different events invoking the quit warning panel
*/
public enum QuitMode { public enum QuitMode {
/** */ /** */
DEFAULT, DEFAULT,
@ -13,12 +19,33 @@ public interface IQuitWarningPanel {
QUIT_GAME QUIT_GAME
} }
/**
* Is emitted if the user is positive about quitting
*
* @return the event
*/
public IEvent getQuitEvent(); public IEvent getQuitEvent();
/**
* Is emitted if the user selected quit by mistake
*
* @return the event
*/
public IEvent getCancelEvent(); public IEvent getCancelEvent();
/**
* Sets the panel according to the event which invoked it
*
* @param mode
* the invoking event type
*/
public void setMode(QuitMode mode); public void setMode(QuitMode mode);
/**
* Getter for quit mode
*
* @return the quit mode
*/
public QuitMode getQuitMode(); public QuitMode getQuitMode();
} }

View file

@ -6,10 +6,8 @@ import java.util.Collection;
import jrummikub.model.Stone; import jrummikub.model.Stone;
import jrummikub.model.StoneSet; import jrummikub.model.StoneSet;
import jrummikub.util.Event;
import jrummikub.util.IEvent; import jrummikub.util.IEvent;
import jrummikub.util.IEvent1; import jrummikub.util.IEvent1;
import jrummikub.view.IQuitWarningPanel.QuitMode;
/** /**
* The top-level view interface * The top-level view interface
@ -59,7 +57,7 @@ public interface IView {
* Sets the current player's name * Sets the current player's name
* *
* @param playerName * @param playerName
* the player name * the player name
*/ */
public void setCurrentPlayerName(String playerName); public void setCurrentPlayerName(String playerName);
@ -67,7 +65,7 @@ public interface IView {
* Sets the stones that are to be painted selected * Sets the stones that are to be painted selected
* *
* @param stones * @param stones
* the stones to be painted selected * the stones to be painted selected
*/ */
public void setSelectedStones(Collection<Stone> stones); public void setSelectedStones(Collection<Stone> stones);
@ -104,7 +102,7 @@ public interface IView {
* Shows or hides the game settings panel * Shows or hides the game settings panel
* *
* @param show * @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); public void showSettingsPanel(boolean show);
@ -112,7 +110,7 @@ public interface IView {
* Shows or hides the score panel * Shows or hides the score panel
* *
* @param show * @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); public void showScorePanel(boolean show);
@ -121,16 +119,16 @@ public interface IView {
* along with the name * along with the name
* *
* @param color * @param color
* the current player's color * the current player's color
*/ */
public void setCurrentPlayerColor(Color color); public void setCurrentPlayerColor(Color color);
/** /**
* Is used for the PlayerPanel to display if a player has laid out along with * Is used for the PlayerPanel to display if a player has laid out along
* the name * with the name
* *
* @param hasLaidOut * @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); public void setCurrentPlayerHasLaidOut(boolean hasLaidOut);
@ -145,13 +143,13 @@ public interface IView {
* Sets the bottom panels type * Sets the bottom panels type
* *
* @param type * @param type
* the type of the bottom panel * the type of the bottom panel
*/ */
public void setBottomPanel(BottomPanelType type); public void setBottomPanel(BottomPanelType type);
/** /**
* The menu new game event is emitted when the user selects the new game menu * The menu new game event is emitted when the user selects the new game
* entry * menu entry
* *
* @return the event * @return the event
*/ */
@ -226,7 +224,7 @@ public interface IView {
* Show/hide login panel * Show/hide login panel
* *
* @param show * @param show
* true = login panel is shown * true = login panel is shown
*/ */
public void showLoginPanel(boolean show); public void showLoginPanel(boolean show);
@ -234,7 +232,7 @@ public interface IView {
* Enable/disable pause mode * Enable/disable pause mode
* *
* @param enable * @param enable
* true = enable * true = enable
*/ */
public void enablePauseMode(boolean enable); public void enablePauseMode(boolean enable);
@ -242,7 +240,7 @@ public interface IView {
* Show/hide game list panel * Show/hide game list panel
* *
* @param show * @param show
* true = show * true = show
*/ */
public void showGameListPanel(boolean show); public void showGameListPanel(boolean show);
@ -250,7 +248,7 @@ public interface IView {
* Show/hide side panel * Show/hide side panel
* *
* @param show * @param show
* true to show * true to show
*/ */
void showSidePanel(boolean show); void showSidePanel(boolean show);
@ -258,7 +256,7 @@ public interface IView {
* Is set if a player tried to lay out less than initial meld threshold * Is set if a player tried to lay out less than initial meld threshold
* *
* @param points * @param points
* initial meld threshold * initial meld threshold
*/ */
public void setInitialMeldError(int points); public void setInitialMeldError(int points);
@ -266,7 +264,7 @@ public interface IView {
* Show stone collection * Show stone collection
* *
* @param enable * @param enable
* showing collection * showing collection
*/ */
public void setStoneCollectionHidden(boolean enable); public void setStoneCollectionHidden(boolean enable);
@ -279,7 +277,7 @@ public interface IView {
* Set invalid sets to enable showing * Set invalid sets to enable showing
* *
* @param sets * @param sets
* invalid sets on table * invalid sets on table
*/ */
public void setInvalidStoneSets(Collection<StoneSet> sets); public void setInvalidStoneSets(Collection<StoneSet> sets);
@ -292,13 +290,60 @@ public interface IView {
* Enables/disables saving in menu bar * Enables/disables saving in menu bar
* *
* @param enable * @param enable
* saving possible
*/ */
public void enableSave(boolean enable); public void enableSave(boolean enable);
/**
* Sets the quit warning panel visible
*
* @param show
* is visible
*/
public void showQuitWarningPanel(boolean show); public void showQuitWarningPanel(boolean show);
/**
* The quit event is emitted when the user wants to leave the application
*
* @return the event
*/
public IEvent getQuitEvent(); public IEvent getQuitEvent();
/**
* Getter for quit warning panel
*
* @return the panel
*/
public IQuitWarningPanel getQuitWarningPanel();
/**
* The load file event is emitted when the user chose to discard the current
* game to save another
*
* @return the event
*/
public IEvent1<File> getLoadFileEvent();
/**
* Loading a game
*/
public void load();
/**
* Set the connect panel visible
*
* @param show
* is visible
*/
public void showConnectPanel(boolean show);
/**
* Getter for connect panel
*
* @return the panel
*/
public IConnectPanel getConnectPanel();
/** /**
* Different types of bottom panels * Different types of bottom panels
*/ */
@ -316,14 +361,4 @@ public interface IView {
/** */ /** */
WIN_PANEL WIN_PANEL
} }
public IQuitWarningPanel getQuitWarningPanel();
public IEvent1<File> getLoadFileEvent();
public void load();
public void showConnectPanel(boolean show);
public IConnectPanel getConnectPanel();
} }

View file

@ -1,18 +1,21 @@
package jrummikub.view; package jrummikub.view;
/**
* Enum summarizing the different kinds of login errors
*/
public enum LoginError { public enum LoginError {
/** */ /** Error cannot be dissolved to a specific type */
UNKNOWN_ERROR, UNKNOWN_ERROR,
/** */ /** No answer from network */
TIMEOUT, TIMEOUT,
/** */ /** Connection denied by server */
CONNECTION_REFUSED, CONNECTION_REFUSED,
/** */ /** Password or username incorrect */
AUTHENTICATION_FAILED, AUTHENTICATION_FAILED,
/** */ /** Username already occurs in the same channel */
RESOURCE_CONFLICT, RESOURCE_CONFLICT,
/** */ /** Server not found */
UNKNOWN_HOST, UNKNOWN_HOST,
/** */ /** Channel not found */
UNKNOWN_CHANNEL UNKNOWN_CHANNEL
} }

View file

@ -21,13 +21,20 @@ import jrummikub.util.IEvent;
import jrummikub.view.IConnectPanel; import jrummikub.view.IConnectPanel;
import jrummikub.view.LoginError; import jrummikub.view.LoginError;
/**
* Panel shown during network connecting process and showing errors
*/
public class ConnectPanel extends JPanel implements IConnectPanel { public class ConnectPanel extends JPanel implements IConnectPanel {
private static final long serialVersionUID = 1L;
private JLabel messageLabel; private JLabel messageLabel;
private JProgressBar foobar; private JProgressBar foobar;
private JButton cancelButton; private JButton cancelButton;
private Event cancelEvent = new Event(); private Event cancelEvent = new Event();
/**
* Creates new connection panel
*/
public ConnectPanel() { public ConnectPanel() {
setLayout(new GridBagLayout()); setLayout(new GridBagLayout());
@ -61,8 +68,8 @@ public class ConnectPanel extends JPanel implements IConnectPanel {
}); });
add(cancelButton, c); add(cancelButton, c);
setBorder(new CompoundBorder(new LineBorder(Color.BLACK), new EmptyBorder( setBorder(new CompoundBorder(new LineBorder(Color.BLACK),
10, 10, 10, 10))); new EmptyBorder(10, 10, 10, 10)));
} }
@Override @Override

View file

@ -18,7 +18,11 @@ import jrummikub.util.Event;
import jrummikub.util.IEvent; import jrummikub.util.IEvent;
import jrummikub.view.IQuitWarningPanel; import jrummikub.view.IQuitWarningPanel;
/**
* Warning panel to inform users if their actions would end the current game
*/
public class QuitWarningPanel extends JPanel implements IQuitWarningPanel { public class QuitWarningPanel extends JPanel implements IQuitWarningPanel {
private static final long serialVersionUID = 1L;
private JButton cancelButton; private JButton cancelButton;
private JButton quitButton; private JButton quitButton;
private QuitMode quitMode; private QuitMode quitMode;
@ -26,6 +30,9 @@ public class QuitWarningPanel extends JPanel implements IQuitWarningPanel {
private Event cancelEvent = new Event(); private Event cancelEvent = new Event();
private JLabel messageLabel; private JLabel messageLabel;
/**
* Creates new quit warning panel
*/
public QuitWarningPanel() { public QuitWarningPanel() {
setLayout(new GridBagLayout()); setLayout(new GridBagLayout());
@ -50,8 +57,8 @@ public class QuitWarningPanel extends JPanel implements IQuitWarningPanel {
c.gridx = 1; c.gridx = 1;
add(quitButton, c); add(quitButton, c);
setBorder(new CompoundBorder(new LineBorder(Color.BLACK), new EmptyBorder( setBorder(new CompoundBorder(new LineBorder(Color.BLACK),
10, 10, 10, 10))); new EmptyBorder(10, 10, 10, 10)));
} }
private JButton createButton(String title, final Event event) { private JButton createButton(String title, final Event event) {
@ -70,7 +77,8 @@ public class QuitWarningPanel extends JPanel implements IQuitWarningPanel {
this.quitMode = mode; this.quitMode = mode;
switch (quitMode) { switch (quitMode) {
case QUIT_PROCESS: case QUIT_PROCESS:
messageLabel.setText("Beim Beenden geht das aktuelle Spiel verloren"); messageLabel
.setText("Beim Beenden geht das aktuelle Spiel verloren");
break; break;
case QUIT_GAME: case QUIT_GAME:
messageLabel.setText("Der aktuelle Spielstand geht verloren"); messageLabel.setText("Der aktuelle Spielstand geht verloren");

View file

@ -14,7 +14,6 @@ import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import javax.swing.JComponent;
import javax.swing.JFileChooser; import javax.swing.JFileChooser;
import javax.swing.JFrame; import javax.swing.JFrame;
import javax.swing.JLayeredPane; import javax.swing.JLayeredPane;
@ -43,7 +42,6 @@ import jrummikub.view.IHandPanel;
import jrummikub.view.ILoginPanel; import jrummikub.view.ILoginPanel;
import jrummikub.view.IPlayerPanel; import jrummikub.view.IPlayerPanel;
import jrummikub.view.IQuitWarningPanel; import jrummikub.view.IQuitWarningPanel;
import jrummikub.view.IQuitWarningPanel.QuitMode;
import jrummikub.view.IScorePanel; import jrummikub.view.IScorePanel;
import jrummikub.view.ISettingsPanel; import jrummikub.view.ISettingsPanel;
import jrummikub.view.ISidePanel; import jrummikub.view.ISidePanel;
@ -232,7 +230,6 @@ public class View extends JFrame implements IView {
loadItem.addActionListener(new ActionListener() { loadItem.addActionListener(new ActionListener() {
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
File file = new File("");
loadEvent.emit(); loadEvent.emit();
} }
}); });
@ -314,6 +311,19 @@ public class View extends JFrame implements IView {
createSettingsPanel(); createSettingsPanel();
createLayeredPane();
addComponentListener(new ComponentAdapter() {
@Override
public void componentResized(ComponentEvent e) {
rescale();
}
});
setVisible(true);
}
private void createLayeredPane() {
layeredPane.setLayer(settingsPanel, JLayeredPane.POPUP_LAYER); layeredPane.setLayer(settingsPanel, JLayeredPane.POPUP_LAYER);
layeredPane.add(settingsPanel); layeredPane.add(settingsPanel);
@ -341,15 +351,6 @@ public class View extends JFrame implements IView {
scorePanel.setVisible(false); scorePanel.setVisible(false);
layeredPane.setLayer(scorePanel, JLayeredPane.POPUP_LAYER); layeredPane.setLayer(scorePanel, JLayeredPane.POPUP_LAYER);
layeredPane.add(scorePanel); layeredPane.add(scorePanel);
addComponentListener(new ComponentAdapter() {
@Override
public void componentResized(ComponentEvent e) {
rescale();
}
});
setVisible(true);
} }
private void createSettingsPanel() { private void createSettingsPanel() {

View file

@ -55,7 +55,6 @@ public class SaveControlTest {
saveControl.getLoadEvent().add( saveControl.getLoadEvent().add(
new IListener3<GameSettings, GameState, IRoundState>() { new IListener3<GameSettings, GameState, IRoundState>() {
@Override @Override
public void handle(GameSettings settings, GameState gameState, public void handle(GameSettings settings, GameState gameState,
IRoundState roundState) { IRoundState roundState) {
@ -66,7 +65,8 @@ public class SaveControlTest {
}); });
view.loadEvent.emit(); view.loadEvent.emit();
view.getQuitWarningPanel().quitEvent.emit();
view.loadFileEvent.emit(file);
file.delete(); file.delete();
} }
} }