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:
parent
00fb313b89
commit
297d5de03e
3 changed files with 61 additions and 70 deletions
|
@ -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) {
|
||||||
|
|
|
@ -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();
|
||||||
|
|
||||||
|
|
|
@ -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();
|
||||||
|
|
||||||
|
|
Reference in a new issue