summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mock/jrummikub/util/MockEvent3.java12
-rw-r--r--mock/jrummikub/view/MockGameListPanel.java3
-rw-r--r--src/jrummikub/control/AbstractSettingsControl.java71
-rw-r--r--src/jrummikub/util/Pair.java2
-rw-r--r--src/jrummikub/view/IGameListPanel.java8
-rw-r--r--src/jrummikub/view/ISettingsPanel.java21
-rw-r--r--src/jrummikub/view/IView.java48
-rw-r--r--src/jrummikub/view/impl/GameListPanel.java16
-rw-r--r--test/jrummikub/control/SaveControlTest.java5
-rw-r--r--test/jrummikub/model/StoneSetTest.java23
10 files changed, 149 insertions, 60 deletions
diff --git a/mock/jrummikub/util/MockEvent3.java b/mock/jrummikub/util/MockEvent3.java
index fa1d105..62c3ed9 100644
--- a/mock/jrummikub/util/MockEvent3.java
+++ b/mock/jrummikub/util/MockEvent3.java
@@ -6,9 +6,11 @@ import java.util.HashSet;
* Mock class for Event2s
*
* @param <T1>
- * first event type
+ * first event type
* @param <T2>
- * second event type
+ * second event type
+ * @param <T3>
+ * third event type
*/
public class MockEvent3<T1, T2, T3> implements IEvent3<T1, T2, T3> {
/** */
@@ -33,9 +35,11 @@ public class MockEvent3<T1, T2, T3> implements IEvent3<T1, T2, T3> {
/**
* @param value1
- * the first event parameter
+ * the first event parameter
* @param value2
- * the second event parameter
+ * the second event parameter
+ * @param value3
+ * the third event parameter
*/
public void emit(T1 value1, T2 value2, T3 value3) {
for (IListener3<T1, T2, T3> listener : listeners) {
diff --git a/mock/jrummikub/view/MockGameListPanel.java b/mock/jrummikub/view/MockGameListPanel.java
index edb1bdc..d578df3 100644
--- a/mock/jrummikub/view/MockGameListPanel.java
+++ b/mock/jrummikub/view/MockGameListPanel.java
@@ -10,8 +10,11 @@ import jrummikub.util.MockEvent1;
/** */
public class MockGameListPanel implements IGameListPanel {
+ /** */
public MockEvent1<GameData> joinEvent = new MockEvent1<GameData>();
+ /** */
public MockEvent openNewGameEvent = new MockEvent();
+ /** */
public MockEvent cancelEvent = new MockEvent();
@Override
diff --git a/src/jrummikub/control/AbstractSettingsControl.java b/src/jrummikub/control/AbstractSettingsControl.java
index ff43ce2..79f8274 100644
--- a/src/jrummikub/control/AbstractSettingsControl.java
+++ b/src/jrummikub/control/AbstractSettingsControl.java
@@ -17,6 +17,10 @@ import jrummikub.util.IListener2;
import jrummikub.view.ISettingsPanel;
import jrummikub.view.IView;
+/**
+ * Abstract control class managing joined methods and attributes of all
+ * different (network, default...) settings controls
+ */
public abstract class AbstractSettingsControl {
protected IView view;
protected List<Connection> connections = new ArrayList<Connection>();
@@ -45,15 +49,15 @@ public abstract class AbstractSettingsControl {
}
private void addPlayerSettingsListeners() {
- connections.add(view.getSettingsPanel().getAddPlayerEvent()
- .add(new IListener() {
+ connections.add(view.getSettingsPanel().getAddPlayerEvent().add(
+ new IListener() {
@Override
public void handle() {
addPlayer();
}
}));
- connections.add(view.getSettingsPanel().getRemovePlayerEvent()
- .add(new IListener1<Integer>() {
+ connections.add(view.getSettingsPanel().getRemovePlayerEvent().add(
+ new IListener1<Integer>() {
@Override
public void handle(Integer i) {
removePlayer(i);
@@ -66,32 +70,32 @@ public abstract class AbstractSettingsControl {
setPlayerColor(i, color);
}
}));
- connections.add(view.getSettingsPanel().getChangePlayerNameEvent()
- .add(new IListener2<Integer, String>() {
+ connections.add(view.getSettingsPanel().getChangePlayerNameEvent().add(
+ new IListener2<Integer, String>() {
@Override
public void handle(Integer i, String name) {
setPlayerName(i, name);
}
}));
- connections.add(view.getSettingsPanel().getChangePlayerTypeEvent()
- .add(new IListener2<Integer, Type>() {
+ connections.add(view.getSettingsPanel().getChangePlayerTypeEvent().add(
+ new IListener2<Integer, Type>() {
@Override
public void handle(Integer i, Type type) {
setPlayerType(i, type);
}
}));
}
-
+
private void addOptionListeners1() {
connections.add(view.getSettingsPanel()
- .getChangeInitialMeldThresholdEvent()
- .add(new IListener1<Integer>() {
- @Override
- public void handle(Integer value) {
- settings.setInitialMeldThreshold(value);
- update();
- }
- }));
+ .getChangeInitialMeldThresholdEvent().add(
+ new IListener1<Integer>() {
+ @Override
+ public void handle(Integer value) {
+ settings.setInitialMeldThreshold(value);
+ update();
+ }
+ }));
connections.add(view.getSettingsPanel().getChangeJokerNumberEvent()
.add(new IListener1<Integer>() {
@@ -111,14 +115,14 @@ public abstract class AbstractSettingsControl {
}
}));
connections.add(view.getSettingsPanel()
- .getChangeNumberOfStonesDealtEvent()
- .add(new IListener1<Integer>() {
- @Override
- public void handle(Integer value) {
- settings.setNumberOfStonesDealt(value);
- update();
- }
- }));
+ .getChangeNumberOfStonesDealtEvent().add(
+ new IListener1<Integer>() {
+ @Override
+ public void handle(Integer value) {
+ settings.setNumberOfStonesDealt(value);
+ update();
+ }
+ }));
}
private void addOptionListeners2() {
@@ -130,8 +134,8 @@ public abstract class AbstractSettingsControl {
update();
}
}));
- connections.add(view.getSettingsPanel().getChangeTimeEvent()
- .add(new IListener1<Integer>() {
+ connections.add(view.getSettingsPanel().getChangeTimeEvent().add(
+ new IListener1<Integer>() {
@Override
public void handle(Integer value) {
settings.setTotalTime(value);
@@ -147,8 +151,8 @@ public abstract class AbstractSettingsControl {
}
}));
- connections.add(view.getSettingsPanel().getChangeNoLimitsEvent()
- .add(new IListener1<Boolean>() {
+ connections.add(view.getSettingsPanel().getChangeNoLimitsEvent().add(
+ new IListener1<Boolean>() {
@Override
public void handle(Boolean value) {
settings.setNoLimits(value);
@@ -182,7 +186,7 @@ public abstract class AbstractSettingsControl {
}
}));
}
-
+
/**
* Start the operation of the settings control
*/
@@ -231,7 +235,7 @@ public abstract class AbstractSettingsControl {
settings.getPlayerList().remove(i);
update();
}
-
+
protected boolean checkSettings() {
if (!checkName()) {
return false;
@@ -269,7 +273,8 @@ public abstract class AbstractSettingsControl {
for (int j = i + 1; j < settings.getPlayerList().size(); ++j) {
PlayerSettings player2 = settings.getPlayerList().get(j);
if (player2.getName().equals(name) && player2.getType() == type) {
- view.getSettingsPanel()
+ view
+ .getSettingsPanel()
.setError(
ISettingsPanel.SettingsError.DUPLICATE_PLAYER_NAME_ERROR);
view.getSettingsPanel().enableStartGameButton(false);
@@ -325,7 +330,7 @@ public abstract class AbstractSettingsControl {
return;
}
}
-
+
/**
* Abort settings control once settings are set
*/
diff --git a/src/jrummikub/util/Pair.java b/src/jrummikub/util/Pair.java
index 80b9ea0..5ebc7f2 100644
--- a/src/jrummikub/util/Pair.java
+++ b/src/jrummikub/util/Pair.java
@@ -61,6 +61,7 @@ public class Pair<T1, T2> implements Serializable {
return result;
}
+ @SuppressWarnings("unchecked")
@Override
public boolean equals(Object obj) {
if (this == obj)
@@ -69,7 +70,6 @@ public class Pair<T1, T2> implements Serializable {
return false;
if (getClass() != obj.getClass())
return false;
- @SuppressWarnings("rawtypes")
Pair other = (Pair) obj;
if (first == null) {
if (other.first != null)
diff --git a/src/jrummikub/view/IGameListPanel.java b/src/jrummikub/view/IGameListPanel.java
index 8a05546..47de90e 100644
--- a/src/jrummikub/view/IGameListPanel.java
+++ b/src/jrummikub/view/IGameListPanel.java
@@ -35,9 +35,15 @@ public interface IGameListPanel {
* Sets the channel name
*
* @param name
- * channel name
+ * channel name
*/
public void setChannelName(String name);
+ /**
+ * Set the games (host and player count) into the game list
+ *
+ * @param games
+ * list of game data
+ */
public void setGameList(List<GameData> games);
}
diff --git a/src/jrummikub/view/ISettingsPanel.java b/src/jrummikub/view/ISettingsPanel.java
index d01129e..c52d72c 100644
--- a/src/jrummikub/view/ISettingsPanel.java
+++ b/src/jrummikub/view/ISettingsPanel.java
@@ -37,10 +37,10 @@ public interface ISettingsPanel {
};
/**
- * enables the start of a network game at a given point in game
+ * Sets the settings mode according to the point of the game
*
- * @param enable
- * starting a network game
+ * @param mode
+ * settings mode to be set (join, offer, network, default)
*/
public void setSettingsMode(SettingsMode mode);
@@ -237,6 +237,12 @@ public interface ISettingsPanel {
*/
public IEvent getOfferGameEvent();
+ /**
+ * Sets the player colors which can be chosen
+ *
+ * @param colors
+ * a Set of colors which are not taken yet
+ */
public void setPlayerColors(Set<Color> colors);
/**
@@ -260,13 +266,14 @@ public interface ISettingsPanel {
/** Only computer players added */
COMPUTER_PLAYERS_ONLY_WARNING
}
-
+
/**
- * SettingsPanel can be used with different functions in different situations
+ * SettingsPanel can be used with different functions in different
+ * situations
*/
public enum SettingsMode {
- /**Local game settings */
- DEFAULT,
+ /** Local game settings */
+ DEFAULT,
/** */
NETWORK_SETUP,
/** */
diff --git a/src/jrummikub/view/IView.java b/src/jrummikub/view/IView.java
index 1121b44..33f6284 100644
--- a/src/jrummikub/view/IView.java
+++ b/src/jrummikub/view/IView.java
@@ -162,22 +162,70 @@ public interface IView {
*/
public IEvent1<File> getSaveEvent();
+ /**
+ * The pause event is emitted when the user wants to pause the current turn
+ *
+ * @return the event
+ */
public IEvent getPauseEvent();
+ /**
+ * The end pause event is emitted when the user wants to sresume the game
+ * after a pause
+ *
+ * @return the event
+ */
public IEvent getEndPauseEvent();
+ /**
+ * Hides all view elements and panels except for the cleared table and an
+ * empty hand panel
+ */
public void clearView();
+ /**
+ * The network game event is emitted when the user chooses a network game
+ *
+ * @return the event
+ */
public IEvent getNetworkGameEvent();
+ /**
+ * Getter for login panel
+ *
+ * @return login panel
+ */
public ILoginPanel getLoginPanel();
+ /**
+ * Getter for game list panel
+ *
+ * @return game list panel
+ */
public IGameListPanel getGameListPanel();
+ /**
+ * Show/hide login panel
+ *
+ * @param show
+ * true = login panel is shown
+ */
public void showLoginPanel(boolean show);
+ /**
+ * Enable/disable pause mode
+ *
+ * @param enable
+ * true = enable
+ */
public void enablePauseMode(boolean enable);
+ /**
+ * Show/hide game list panel
+ *
+ * @param show
+ * true = show
+ */
public void showGameListPanel(boolean show);
/**
diff --git a/src/jrummikub/view/impl/GameListPanel.java b/src/jrummikub/view/impl/GameListPanel.java
index b7b170b..e1e1c9d 100644
--- a/src/jrummikub/view/impl/GameListPanel.java
+++ b/src/jrummikub/view/impl/GameListPanel.java
@@ -31,6 +31,8 @@ import jrummikub.util.IEvent1;
import jrummikub.view.IGameListPanel;
class GameListPanel extends JPanel implements IGameListPanel {
+ private static final long serialVersionUID = 1L;
+
private JLabel title;
private JList gameList;
private JButton joinButton;
@@ -67,6 +69,13 @@ class GameListPanel extends JPanel implements IGameListPanel {
c.weighty = 0;
add(Box.createVerticalStrut(3), c);
+ addButtons(c);
+
+ setBorder(new CompoundBorder(new LineBorder(Color.BLACK),
+ new EmptyBorder(10, 10, 10, 10)));
+ }
+
+ private void addButtons(GridBagConstraints c) {
joinButton = new JButton("Beitreten");
c.gridwidth = 1;
add(joinButton, c);
@@ -109,9 +118,6 @@ class GameListPanel extends JPanel implements IGameListPanel {
cancelEvent.emit();
}
});
-
- setBorder(new CompoundBorder(new LineBorder(Color.BLACK), new EmptyBorder(
- 10, 10, 10, 10)));
}
void reset() {
@@ -157,6 +163,7 @@ class GameListPanel extends JPanel implements IGameListPanel {
private static class GameDataCellRenderer extends JPanel implements
ListCellRenderer {
+ private static final long serialVersionUID = -892701906163443927L;
JLabel hostLabel, playerCountLabel;
GameDataCellRenderer() {
@@ -193,7 +200,8 @@ class GameListPanel extends JPanel implements IGameListPanel {
int total = gameData.getGameSettings().getPlayerList().size();
int occupied = total;
- for (PlayerSettings player : gameData.getGameSettings().getPlayerList()) {
+ for (PlayerSettings player : gameData.getGameSettings()
+ .getPlayerList()) {
if (player.getType() == Type.VACANT) {
occupied--;
}
diff --git a/test/jrummikub/control/SaveControlTest.java b/test/jrummikub/control/SaveControlTest.java
index b2e0299..3ff5f42 100644
--- a/test/jrummikub/control/SaveControlTest.java
+++ b/test/jrummikub/control/SaveControlTest.java
@@ -20,7 +20,12 @@ import jrummikub.view.MockView;
import org.junit.Test;
+/** */
public class SaveControlTest {
+ /**
+ * @throws IOException
+ * if input cannot be saved/loaded
+ */
@Test
public void testSaveLoad() throws IOException {
GameSettings settings = new GameSettings();
diff --git a/test/jrummikub/model/StoneSetTest.java b/test/jrummikub/model/StoneSetTest.java
index d82f8f2..6f6e698 100644
--- a/test/jrummikub/model/StoneSetTest.java
+++ b/test/jrummikub/model/StoneSetTest.java
@@ -54,8 +54,7 @@ public class StoneSetTest {
// valid+point count
/** */
@Test
- public void doubleJokerValid() {
- // 3 Stones
+ public void doubleJokerValid3Stones() {
// JJZ
assertSet(GROUP, 3, Arrays.asList(new Stone(RED), new Stone(BLACK),
new Stone(1, BLACK)), defaultSettings);
@@ -73,6 +72,11 @@ public class StoneSetTest {
new Stone(BLACK)), defaultSettings);
assertSet(RUN, 42, Arrays.asList(new Stone(13, RED), new Stone(RED),
new Stone(BLACK)), higherValueSettings);
+ }
+
+ /** */
+ @Test
+ public void doubleJokerValid4Stones() {
// 4 Stones
// JJZZ
assertSet(GROUP, 4, Arrays.asList(new Stone(RED), new Stone(BLACK),
@@ -164,6 +168,7 @@ public class StoneSetTest {
new Stone(13, RED), new Stone(RED)), higherValueSettings);
}
+ /** */
@Test
public void noLimitsTest() {
assertSet(RUN, 16, Arrays.asList(new Stone(RED), new Stone(1, RED),
@@ -245,9 +250,8 @@ public class StoneSetTest {
new Stone(5, RED), new Stone(7, RED)), defaultSettings);
assertSet(INVALID, 0, Arrays.asList(new Stone(4, RED), new Stone(5,
BLUE), new Stone(6, RED)), defaultSettings);
- assertSet(INVALID, 0,
- Arrays.asList(new Stone(4, RED), new Stone(5, RED)),
- defaultSettings);
+ assertSet(INVALID, 0, Arrays.asList(new Stone(4, RED),
+ new Stone(5, RED)), defaultSettings);
assertSet(INVALID, 0, Arrays.asList(new Stone(4, BLUE), new Stone(5,
RED), new Stone(6, RED)), defaultSettings);
// Regression test:
@@ -258,9 +262,8 @@ public class StoneSetTest {
/** */
@Test
public void manyJokersValid() {
- assertSet(GROUP, 3 * 13,
- Arrays.asList(new Stone(RED), new Stone(RED), new Stone(RED)),
- defaultSettings);
+ assertSet(GROUP, 3 * 13, Arrays.asList(new Stone(RED), new Stone(RED),
+ new Stone(RED)), defaultSettings);
assertSet(GROUP, 4 * 13, Arrays.asList(new Stone(RED), new Stone(RED),
new Stone(RED), new Stone(RED)), defaultSettings);
assertSet(RUN, 13 + 12 + 11 + 10 + 9,
@@ -269,8 +272,8 @@ public class StoneSetTest {
assertSet(RUN, 5 * 10, Arrays.asList(new Stone(RED), new Stone(RED),
new Stone(RED), new Stone(RED), new Stone(12, RED)),
defaultSettings);
- assertSet(GROUP, 6 * 5,
- Arrays.asList(new Stone(RED), new Stone(RED), new Stone(RED),
+ assertSet(GROUP, 6 * 5, Arrays
+ .asList(new Stone(RED), new Stone(RED), new Stone(RED),
new Stone(RED), new Stone(RED), new Stone(AQUA)),
moreColorLowerValueSettings);
}