Move some code to AbstractSettingsControl for consistency

git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@466 72836036-5685-4462-b002-a69064685172
This commit is contained in:
Matthias Schiffer 2011-06-18 17:36:09 +02:00
parent 00fb313b89
commit 297d5de03e
3 changed files with 61 additions and 70 deletions

View file

@ -2,6 +2,8 @@ package jrummikub.control;
import java.awt.Color; import java.awt.Color;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
@ -31,13 +33,18 @@ public abstract class AbstractSettingsControl {
* Create a new settings control * Create a new settings control
* *
* @param view * @param view
* the view to use * the view to use
* @param settings * @param settings
* initial game settings * initial game settings
*/ */
protected AbstractSettingsControl(IView view, GameSettings settings) { protected AbstractSettingsControl(IView view, GameSettings settings) {
this.view = view; this.view = view;
this.settings = settings; this.settings = settings;
view.getSettingsPanel().setPlayerNamesEditable(
Collections.<Boolean> emptyList());
view.getSettingsPanel().setPlayerColors(
new HashSet<Color>(Arrays.asList(ISettingsPanel.PLAYER_COLORS)));
} }
protected void addListeners() { protected void addListeners() {
@ -49,15 +56,15 @@ public abstract class AbstractSettingsControl {
} }
private void addPlayerSettingsListeners() { private void addPlayerSettingsListeners() {
connections.add(view.getSettingsPanel().getAddPlayerEvent().add( connections.add(view.getSettingsPanel().getAddPlayerEvent()
new IListener() { .add(new IListener() {
@Override @Override
public void handle() { public void handle() {
addPlayer(); addPlayer();
} }
})); }));
connections.add(view.getSettingsPanel().getRemovePlayerEvent().add( connections.add(view.getSettingsPanel().getRemovePlayerEvent()
new IListener1<Integer>() { .add(new IListener1<Integer>() {
@Override @Override
public void handle(Integer i) { public void handle(Integer i) {
removePlayer(i); removePlayer(i);
@ -70,15 +77,15 @@ public abstract class AbstractSettingsControl {
setPlayerColor(i, color); setPlayerColor(i, color);
} }
})); }));
connections.add(view.getSettingsPanel().getChangePlayerNameEvent().add( connections.add(view.getSettingsPanel().getChangePlayerNameEvent()
new IListener2<Integer, String>() { .add(new IListener2<Integer, String>() {
@Override @Override
public void handle(Integer i, String name) { public void handle(Integer i, String name) {
setPlayerName(i, name); setPlayerName(i, name);
} }
})); }));
connections.add(view.getSettingsPanel().getChangePlayerTypeEvent().add( connections.add(view.getSettingsPanel().getChangePlayerTypeEvent()
new IListener2<Integer, Type>() { .add(new IListener2<Integer, Type>() {
@Override @Override
public void handle(Integer i, Type type) { public void handle(Integer i, Type type) {
setPlayerType(i, type); setPlayerType(i, type);
@ -88,14 +95,13 @@ public abstract class AbstractSettingsControl {
private void addOptionListeners1() { private void addOptionListeners1() {
connections.add(view.getSettingsPanel() connections.add(view.getSettingsPanel()
.getChangeInitialMeldThresholdEvent().add( .getChangeInitialMeldThresholdEvent().add(new IListener1<Integer>() {
new IListener1<Integer>() { @Override
@Override public void handle(Integer value) {
public void handle(Integer value) { settings.setInitialMeldThreshold(value);
settings.setInitialMeldThreshold(value); update();
update(); }
} }));
}));
connections.add(view.getSettingsPanel().getChangeJokerNumberEvent() connections.add(view.getSettingsPanel().getChangeJokerNumberEvent()
.add(new IListener1<Integer>() { .add(new IListener1<Integer>() {
@ -114,15 +120,14 @@ public abstract class AbstractSettingsControl {
update(); update();
} }
})); }));
connections.add(view.getSettingsPanel() connections.add(view.getSettingsPanel().getChangeNumberOfStonesDealtEvent()
.getChangeNumberOfStonesDealtEvent().add( .add(new IListener1<Integer>() {
new IListener1<Integer>() { @Override
@Override public void handle(Integer value) {
public void handle(Integer value) { settings.setNumberOfStonesDealt(value);
settings.setNumberOfStonesDealt(value); update();
update(); }
} }));
}));
} }
private void addOptionListeners2() { private void addOptionListeners2() {
@ -134,8 +139,8 @@ public abstract class AbstractSettingsControl {
update(); update();
} }
})); }));
connections.add(view.getSettingsPanel().getChangeTimeEvent().add( connections.add(view.getSettingsPanel().getChangeTimeEvent()
new IListener1<Integer>() { .add(new IListener1<Integer>() {
@Override @Override
public void handle(Integer value) { public void handle(Integer value) {
settings.setTotalTime(value); settings.setTotalTime(value);
@ -151,8 +156,8 @@ public abstract class AbstractSettingsControl {
} }
})); }));
connections.add(view.getSettingsPanel().getChangeNoLimitsEvent().add( connections.add(view.getSettingsPanel().getChangeNoLimitsEvent()
new IListener1<Boolean>() { .add(new IListener1<Boolean>() {
@Override @Override
public void handle(Boolean value) { public void handle(Boolean value) {
settings.setNoLimits(value); settings.setNoLimits(value);
@ -273,10 +278,8 @@ public abstract class AbstractSettingsControl {
for (int j = i + 1; j < settings.getPlayerList().size(); ++j) { for (int j = i + 1; j < settings.getPlayerList().size(); ++j) {
PlayerSettings player2 = settings.getPlayerList().get(j); PlayerSettings player2 = settings.getPlayerList().get(j);
if (player2.getName().equals(name) && player2.getType() == type) { if (player2.getName().equals(name) && player2.getType() == type) {
view view.getSettingsPanel().setError(
.getSettingsPanel() ISettingsPanel.SettingsError.DUPLICATE_PLAYER_NAME_ERROR);
.setError(
ISettingsPanel.SettingsError.DUPLICATE_PLAYER_NAME_ERROR);
view.getSettingsPanel().enableStartGameButton(false); view.getSettingsPanel().enableStartGameButton(false);
return false; return false;
} }
@ -288,8 +291,7 @@ public abstract class AbstractSettingsControl {
private boolean checkErrors() { private boolean checkErrors() {
int totalStonesDealt = settings.getNumberOfStonesDealt() int totalStonesDealt = settings.getNumberOfStonesDealt()
* settings.getPlayerList().size(); * settings.getPlayerList().size();
int totalStones = settings.getHighestValue() int totalStones = settings.getHighestValue() * settings.getStoneSetNumber()
* settings.getStoneSetNumber()
* settings.getStoneColors().size() + settings.getJokerNumber(); * settings.getStoneColors().size() + settings.getJokerNumber();
if (totalStones <= totalStonesDealt) { if (totalStones <= totalStonesDealt) {

View file

@ -1,10 +1,8 @@
package jrummikub.control; package jrummikub.control;
import java.awt.Color;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.HashSet;
import java.util.List; import java.util.List;
import jrummikub.model.GameSettings; import jrummikub.model.GameSettings;
@ -22,21 +20,18 @@ import jrummikub.view.IView;
*/ */
public class SettingsControl extends AbstractSettingsControl { public class SettingsControl extends AbstractSettingsControl {
private Event1<GameSettings> startGameEvent = new Event1<GameSettings>(); private Event1<GameSettings> startGameEvent = new Event1<GameSettings>();
/** /**
* Create a new settings control * Create a new settings control
* *
* @param view * @param view
* the view to use * the view to use
* @param settings * @param settings
* initial game settings * initial game settings
*/ */
public SettingsControl(IView view, GameSettings settings) { public SettingsControl(IView view, GameSettings settings) {
super(view, settings); super(view, settings);
view.getSettingsPanel().setSettingsMode(SettingsMode.DEFAULT); view.getSettingsPanel().setSettingsMode(SettingsMode.DEFAULT);
view.getSettingsPanel().setPlayerNamesEditable(
Collections.<Boolean> emptyList());
view.getSettingsPanel().setPlayerColors(new HashSet<Color>(Arrays.asList(ISettingsPanel.PLAYER_COLORS)));
addPlayer(); addPlayer();
addPlayer(); addPlayer();
@ -52,17 +47,16 @@ public class SettingsControl extends AbstractSettingsControl {
})); }));
} }
/** /**
* the start game event is emitted when the user wants to start a game and * the start game event is emitted when the user wants to start a game and the
* the settings made are valid * settings made are valid
* *
* @return the event * @return the event
*/ */
public IEvent1<GameSettings> getStartGameEvent() { public IEvent1<GameSettings> getStartGameEvent() {
return startGameEvent; return startGameEvent;
} }
@Override @Override
protected void addPlayer() { protected void addPlayer() {
if (settings.getPlayerList().size() >= ISettingsPanel.PLAYER_COLORS.length) { if (settings.getPlayerList().size() >= ISettingsPanel.PLAYER_COLORS.length) {
@ -102,9 +96,8 @@ public class SettingsControl extends AbstractSettingsControl {
view.getSettingsPanel().enableRemovePlayerButtons( view.getSettingsPanel().enableRemovePlayerButtons(
Collections.nCopies(settings.getPlayerList().size(), Collections.nCopies(settings.getPlayerList().size(),
enableRemoveButtons)); enableRemoveButtons));
view.getSettingsPanel() view.getSettingsPanel().enableAddPlayerButton(
.enableAddPlayerButton( settings.getPlayerList().size() < ISettingsPanel.PLAYER_COLORS.length);
settings.getPlayerList().size() < ISettingsPanel.PLAYER_COLORS.length);
checkSettings(); checkSettings();

View file

@ -28,11 +28,11 @@ public class NetworkSettingsControl extends AbstractSettingsControl {
* Creates a new network settings control * Creates a new network settings control
* *
* @param nickname * @param nickname
* to be set as player name * to be set as player name
* @param view * @param view
* for events and handlers * for events and handlers
* @param settings * @param settings
* for playerNumber, color... * for playerNumber, color...
*/ */
public NetworkSettingsControl(String nickname, IView view, public NetworkSettingsControl(String nickname, IView view,
GameSettings settings) { GameSettings settings) {
@ -40,8 +40,6 @@ public class NetworkSettingsControl extends AbstractSettingsControl {
this.nickname = nickname; this.nickname = nickname;
view.getSettingsPanel().setSettingsMode(SettingsMode.NETWORK_SETUP); view.getSettingsPanel().setSettingsMode(SettingsMode.NETWORK_SETUP);
view.getSettingsPanel().setPlayerNamesEditable(
Collections.<Boolean> emptyList());
addFirstPlayer(); addFirstPlayer();
addPlayer(); addPlayer();
@ -56,19 +54,18 @@ public class NetworkSettingsControl extends AbstractSettingsControl {
} }
})); }));
connections.add(view.getSettingsPanel().getBackEvent() connections.add(view.getSettingsPanel().getBackEvent().add(new IListener() {
.add(new IListener() { @Override
@Override public void handle() {
public void handle() { abort();
abort(); backEvent.emit();
backEvent.emit(); }
} }));
}));
} }
/** /**
* The game offer event is emitted when a player wants to offer a new * The game offer event is emitted when a player wants to offer a new network
* network game * game
* *
* @return the event * @return the event
*/ */
@ -96,9 +93,8 @@ public class NetworkSettingsControl extends AbstractSettingsControl {
@Override @Override
protected void update() { protected void update() {
view.getSettingsPanel() view.getSettingsPanel().enableAddPlayerButton(
.enableAddPlayerButton( settings.getPlayerList().size() < ISettingsPanel.PLAYER_COLORS.length);
settings.getPlayerList().size() < ISettingsPanel.PLAYER_COLORS.length);
checkSettings(); checkSettings();