diff options
Diffstat (limited to 'src/jrummikub')
-rw-r--r-- | src/jrummikub/control/SettingsControl.java | 14 | ||||
-rw-r--r-- | src/jrummikub/view/ISettingsPanel.java | 10 | ||||
-rw-r--r-- | src/jrummikub/view/impl/SettingsPanel.java | 14 |
3 files changed, 35 insertions, 3 deletions
diff --git a/src/jrummikub/control/SettingsControl.java b/src/jrummikub/control/SettingsControl.java index dfaa552..ffd1911 100644 --- a/src/jrummikub/control/SettingsControl.java +++ b/src/jrummikub/control/SettingsControl.java @@ -4,6 +4,8 @@ import java.awt.Color; import java.util.ArrayList; import java.util.List; +import jrummikub.control.turn.TurnControlFactory; +import jrummikub.control.turn.TurnControlFactory.Type; import jrummikub.model.GameSettings; import jrummikub.model.PlayerSettings; import jrummikub.util.Connection; @@ -118,6 +120,13 @@ public class SettingsControl { setPlayerName(i, name); } })); + connections.add(view.getSettingsPanel().getChangePlayerTypeEvent() + .add(new IListener2<Integer, TurnControlFactory.Type>() { + @Override + public void handle(Integer i, TurnControlFactory.Type type) { + setPlayerType(i, type); + } + })); } private void addPlayer() { @@ -186,6 +195,11 @@ public class SettingsControl { update(); } + private void setPlayerType(Integer i, Type type) { + settings.getPlayerList().get(i).setTurnControlType(type); + update(); + } + private void update() { view.getSettingsPanel().enableRemovePlayerButtons( settings.getPlayerList().size() > 2); diff --git a/src/jrummikub/view/ISettingsPanel.java b/src/jrummikub/view/ISettingsPanel.java index 28faec6..cc1431d 100644 --- a/src/jrummikub/view/ISettingsPanel.java +++ b/src/jrummikub/view/ISettingsPanel.java @@ -2,6 +2,8 @@ package jrummikub.view; import java.awt.Color; +import jrummikub.control.turn.TurnControlFactory; +import jrummikub.control.turn.TurnControlFactory.Type; import jrummikub.model.GameSettings; import jrummikub.util.IEvent; import jrummikub.util.IEvent1; @@ -65,6 +67,14 @@ public interface ISettingsPanel { public IEvent2<Integer, String> getChangePlayerNameEvent(); /** + * The change player color event is emitted when the user wants change a + * player's type + * + * @return the event + */ + public IEvent2<Integer, TurnControlFactory.Type> getChangePlayerTypeEvent(); + + /** * The change initial meld threshold event is emitted when the user wants * change the initial meld threshold * diff --git a/src/jrummikub/view/impl/SettingsPanel.java b/src/jrummikub/view/impl/SettingsPanel.java index a96c5a7..02dfc10 100644 --- a/src/jrummikub/view/impl/SettingsPanel.java +++ b/src/jrummikub/view/impl/SettingsPanel.java @@ -41,6 +41,7 @@ import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import jrummikub.control.turn.TurnControlFactory; +import jrummikub.control.turn.TurnControlFactory.Type; import jrummikub.model.GameSettings; import jrummikub.model.PlayerSettings; import jrummikub.util.Event; @@ -312,10 +313,12 @@ class SettingsPanel extends JPanel implements ISettingsPanel { nameField.setText(settings.getName()); } // playerType.setSelectedIndex(0); - playerType.setSelectedIndex(Arrays.binarySearch( + int index = Arrays.binarySearch( TurnControlFactory.Type.values(), - settings.getTurnControlType())); - + settings.getTurnControlType()); + if (index != playerType.getSelectedIndex()) { + playerType.setSelectedIndex(index); + } colorButton.setIcon(ImageUtil.createColorIcon(settings.getColor(), 16, 2)); } @@ -494,4 +497,9 @@ class SettingsPanel extends JPanel implements ISettingsPanel { public void setJokerNumber(int jokerNumber) { jokerNumberSpinner.setValue(jokerNumber); } + + @Override + public IEvent2<Integer, Type> getChangePlayerTypeEvent() { + return changePlayerTypeEvent; + } } |