Added UI for the joker number
git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@300 72836036-5685-4462-b002-a69064685172
This commit is contained in:
parent
05107f6035
commit
3f3f6370c9
3 changed files with 94 additions and 38 deletions
|
@ -16,14 +16,18 @@ public class MockSettingsPanel implements ISettingsPanel {
|
||||||
public MockEvent1<Integer> removePlayerEvent = new MockEvent1<Integer>();
|
public MockEvent1<Integer> removePlayerEvent = new MockEvent1<Integer>();
|
||||||
public MockEvent2<Integer, Color> changePlayerColorEvent = new MockEvent2<Integer, Color>();
|
public MockEvent2<Integer, Color> changePlayerColorEvent = new MockEvent2<Integer, Color>();
|
||||||
public MockEvent2<Integer, String> changePlayerNameEvent = new MockEvent2<Integer, String>();
|
public MockEvent2<Integer, String> changePlayerNameEvent = new MockEvent2<Integer, String>();
|
||||||
public MockEvent1<Integer> changeInitialMeldThresholdEvent = new MockEvent1<Integer>();
|
|
||||||
public MockEvent startGameEvent = new MockEvent();
|
public MockEvent startGameEvent = new MockEvent();
|
||||||
public SettingsError error = SettingsError.NO_ERROR;
|
public SettingsError error = SettingsError.NO_ERROR;
|
||||||
public boolean startButtonEnabled = true;
|
public boolean startButtonEnabled = true;
|
||||||
public boolean addPlayerButtonEnabled = true;
|
public boolean addPlayerButtonEnabled = true;
|
||||||
public boolean removePlayerButtonsEnabled = false;
|
public boolean removePlayerButtonsEnabled = false;
|
||||||
public GameSettings gameSettings = new GameSettings();
|
public GameSettings gameSettings = new GameSettings();
|
||||||
|
|
||||||
|
public MockEvent1<Integer> changeInitialMeldThresholdEvent = new MockEvent1<Integer>();
|
||||||
|
public IEvent1<Integer> changeJokerNumberEvent = new MockEvent1<Integer>();
|
||||||
|
|
||||||
public int initialMeldThreshold;
|
public int initialMeldThreshold;
|
||||||
|
public int jokerNumber;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IEvent getAddPlayerEvent() {
|
public IEvent getAddPlayerEvent() {
|
||||||
|
@ -90,4 +94,14 @@ public class MockSettingsPanel implements ISettingsPanel {
|
||||||
initialMeldThreshold = value;
|
initialMeldThreshold = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IEvent1<Integer> getChangeJokerNumberEvent() {
|
||||||
|
return changeJokerNumberEvent;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setJokerNumber(int jokerNumber) {
|
||||||
|
this.jokerNumber = jokerNumber;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -139,4 +139,19 @@ public interface ISettingsPanel {
|
||||||
* initial meld threshold
|
* initial meld threshold
|
||||||
*/
|
*/
|
||||||
public void setInitialMeldThreshold(int value);
|
public void setInitialMeldThreshold(int value);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Emitted when the joker number is changed
|
||||||
|
*
|
||||||
|
* @return the event
|
||||||
|
*/
|
||||||
|
public IEvent1<Integer> getChangeJokerNumberEvent();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the joker number in the option pane
|
||||||
|
*
|
||||||
|
* @param jokerNumber
|
||||||
|
* the joker number
|
||||||
|
*/
|
||||||
|
public void setJokerNumber(int jokerNumber);
|
||||||
}
|
}
|
|
@ -58,8 +58,9 @@ class SettingsPanel extends JPanel implements ISettingsPanel {
|
||||||
|
|
||||||
private boolean removeButtonsEnabled = true;
|
private boolean removeButtonsEnabled = true;
|
||||||
private List<PlayerSettingsPanel> playerSettingsPanels = new ArrayList<PlayerSettingsPanel>();
|
private List<PlayerSettingsPanel> playerSettingsPanels = new ArrayList<PlayerSettingsPanel>();
|
||||||
|
|
||||||
private JSpinner initialMeldThresholdSpinner;
|
private JSpinner initialMeldThresholdSpinner;
|
||||||
|
private JSpinner jokerNumberSpinner;
|
||||||
|
|
||||||
private Event startGameEvent = new Event();
|
private Event startGameEvent = new Event();
|
||||||
private Event addPlayerEvent = new Event();
|
private Event addPlayerEvent = new Event();
|
||||||
|
@ -67,6 +68,7 @@ class SettingsPanel extends JPanel implements ISettingsPanel {
|
||||||
private Event2<Integer, Color> changePlayerColorEvent = new Event2<Integer, Color>();
|
private Event2<Integer, Color> changePlayerColorEvent = new Event2<Integer, Color>();
|
||||||
private Event2<Integer, String> changePlayerNameEvent = new Event2<Integer, String>();
|
private Event2<Integer, String> changePlayerNameEvent = new Event2<Integer, String>();
|
||||||
private Event1<Integer> changeInitialMeldThresholdEvent = new Event1<Integer>();
|
private Event1<Integer> changeInitialMeldThresholdEvent = new Event1<Integer>();
|
||||||
|
private Event1<Integer> changeJokerNumberEvent = new Event1<Integer>();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IEvent getStartGameEvent() {
|
public IEvent getStartGameEvent() {
|
||||||
|
@ -101,16 +103,16 @@ class SettingsPanel extends JPanel implements ISettingsPanel {
|
||||||
@Override
|
@Override
|
||||||
public void setError(SettingsError error) {
|
public void setError(SettingsError error) {
|
||||||
switch (error) {
|
switch (error) {
|
||||||
case NO_ERROR:
|
case NO_ERROR:
|
||||||
errorMessageLabel.setText(" ");
|
errorMessageLabel.setText(" ");
|
||||||
break;
|
break;
|
||||||
case DUPLICATE_PLAYER_NAME:
|
case DUPLICATE_PLAYER_NAME:
|
||||||
errorMessageLabel
|
errorMessageLabel
|
||||||
.setText("Jeder Spielername darf nur einmal verwendet werden.");
|
.setText("Jeder Spielername darf nur einmal verwendet werden.");
|
||||||
break;
|
break;
|
||||||
case NO_PLAYER_NAME:
|
case NO_PLAYER_NAME:
|
||||||
errorMessageLabel.setText("Jeder Spieler muss einen Namen haben.");
|
errorMessageLabel.setText("Jeder Spieler muss einen Namen haben.");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -134,7 +136,8 @@ class SettingsPanel extends JPanel implements ISettingsPanel {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setGameSettings(GameSettings gameSettings) {
|
public void setGameSettings(GameSettings gameSettings) {
|
||||||
while (playerSettingsPanels.size() > gameSettings.getPlayerList().size()) {
|
while (playerSettingsPanels.size() > gameSettings.getPlayerList()
|
||||||
|
.size()) {
|
||||||
removePlayerSettingsPanel();
|
removePlayerSettingsPanel();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -161,8 +164,8 @@ class SettingsPanel extends JPanel implements ISettingsPanel {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void removePlayerSettingsPanel() {
|
private void removePlayerSettingsPanel() {
|
||||||
PlayerSettingsPanel p = playerSettingsPanels.remove(playerSettingsPanels
|
PlayerSettingsPanel p = playerSettingsPanels
|
||||||
.size() - 1);
|
.remove(playerSettingsPanels.size() - 1);
|
||||||
playerSettingsViewport.remove(p);
|
playerSettingsViewport.remove(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -184,7 +187,8 @@ class SettingsPanel extends JPanel implements ISettingsPanel {
|
||||||
playerSettingsViewport.add(addPlayerPanel);
|
playerSettingsViewport.add(addPlayerPanel);
|
||||||
|
|
||||||
addPlayerButton = new JButton("+");
|
addPlayerButton = new JButton("+");
|
||||||
addPlayerButton.setFont(addPlayerButton.getFont().deriveFont(Font.BOLD));
|
addPlayerButton
|
||||||
|
.setFont(addPlayerButton.getFont().deriveFont(Font.BOLD));
|
||||||
addPlayerButton.addActionListener(new ActionListener() {
|
addPlayerButton.addActionListener(new ActionListener() {
|
||||||
@Override
|
@Override
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
@ -195,55 +199,68 @@ class SettingsPanel extends JPanel implements ISettingsPanel {
|
||||||
}
|
}
|
||||||
|
|
||||||
private JComponent makeFiller() {
|
private JComponent makeFiller() {
|
||||||
return new Box.Filler(new Dimension(0, 0), new Dimension(0, 0), new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE));
|
return new Box.Filler(new Dimension(0, 0), new Dimension(0, 0),
|
||||||
|
new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createOptionsPanel() {
|
private void createOptionsPanel() {
|
||||||
optionsPanel = new JPanel();
|
optionsPanel = new JPanel();
|
||||||
GridBagLayout layout = new GridBagLayout();
|
GridBagLayout layout = new GridBagLayout();
|
||||||
optionsPanel.setLayout(layout);
|
optionsPanel.setLayout(layout);
|
||||||
|
|
||||||
GridBagConstraints labelC = new GridBagConstraints();
|
GridBagConstraints labelC = new GridBagConstraints();
|
||||||
GridBagConstraints optionC = new GridBagConstraints();
|
GridBagConstraints optionC = new GridBagConstraints();
|
||||||
|
|
||||||
labelC.anchor = GridBagConstraints.EAST;
|
labelC.anchor = GridBagConstraints.EAST;
|
||||||
labelC.gridx = 0;
|
labelC.gridx = 0;
|
||||||
labelC.insets = new Insets(5,5,5,5);
|
labelC.insets = new Insets(4, 4, 4, 4);
|
||||||
optionC.anchor = GridBagConstraints.WEST;
|
optionC.anchor = GridBagConstraints.WEST;
|
||||||
optionC.gridx = 1;
|
optionC.gridx = 1;
|
||||||
optionC.insets = new Insets(5,5,5,5);
|
optionC.insets = new Insets(2, 2, 2, 2);
|
||||||
|
|
||||||
JLabel label = new JLabel("Auslegeschranke:");
|
JLabel label = new JLabel("Auslegeschranke:");
|
||||||
labelC.gridy = 0;
|
labelC.gridy = 0;
|
||||||
optionsPanel.add(label, labelC);
|
optionsPanel.add(label, labelC);
|
||||||
|
|
||||||
initialMeldThresholdSpinner = new JSpinner();
|
initialMeldThresholdSpinner = new JSpinner();
|
||||||
initialMeldThresholdSpinner.setModel(new SpinnerNumberModel(1, 1, 999, 1));
|
initialMeldThresholdSpinner.setModel(new SpinnerNumberModel(1, 1, 999,
|
||||||
initialMeldThresholdSpinner.setPreferredSize(new Dimension(60, initialMeldThresholdSpinner.getMinimumSize().height));
|
1));
|
||||||
|
initialMeldThresholdSpinner.setPreferredSize(new Dimension(60,
|
||||||
|
initialMeldThresholdSpinner.getMinimumSize().height));
|
||||||
initialMeldThresholdSpinner.addChangeListener(new ChangeListener() {
|
initialMeldThresholdSpinner.addChangeListener(new ChangeListener() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void stateChanged(ChangeEvent e) {
|
public void stateChanged(ChangeEvent e) {
|
||||||
changeInitialMeldThresholdEvent.emit((Integer)initialMeldThresholdSpinner.getValue());
|
changeInitialMeldThresholdEvent
|
||||||
|
.emit((Integer) initialMeldThresholdSpinner.getValue());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
optionC.gridy = 0;
|
optionC.gridy = 0;
|
||||||
optionsPanel.add(initialMeldThresholdSpinner, optionC);
|
optionsPanel.add(initialMeldThresholdSpinner, optionC);
|
||||||
|
|
||||||
|
label = new JLabel("Jokeranzahl:");
|
||||||
label = new JLabel("Dinge:");
|
|
||||||
labelC.gridx = 0;
|
labelC.gridx = 0;
|
||||||
labelC.gridy = 1;
|
labelC.gridy = 1;
|
||||||
optionsPanel.add(label, labelC);
|
optionsPanel.add(label, labelC);
|
||||||
|
|
||||||
|
jokerNumberSpinner = new JSpinner();
|
||||||
|
jokerNumberSpinner.setModel(new SpinnerNumberModel(0, 0, 999, 1));
|
||||||
|
jokerNumberSpinner.addChangeListener(new ChangeListener() {
|
||||||
|
@Override
|
||||||
|
public void stateChanged(ChangeEvent e) {
|
||||||
|
changeJokerNumberEvent.emit((Integer) jokerNumberSpinner
|
||||||
|
.getValue());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
optionC.gridy = 1;
|
||||||
|
optionsPanel.add(jokerNumberSpinner, optionC);
|
||||||
|
|
||||||
labelC.gridx = 1;
|
labelC.gridx = 1;
|
||||||
labelC.gridy = 2;
|
labelC.gridy = 2;
|
||||||
labelC.fill = GridBagConstraints.BOTH;
|
labelC.fill = GridBagConstraints.BOTH;
|
||||||
labelC.weightx = 1;
|
labelC.weightx = 1;
|
||||||
labelC.weighty = 1;
|
labelC.weighty = 1;
|
||||||
optionsPanel.add(makeFiller(), labelC);
|
optionsPanel.add(makeFiller(), labelC);
|
||||||
|
|
||||||
|
|
||||||
// TODO Knöpfe für Dinge
|
// TODO Knöpfe für Dinge
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -279,8 +296,8 @@ class SettingsPanel extends JPanel implements ISettingsPanel {
|
||||||
});
|
});
|
||||||
add(startButton, c);
|
add(startButton, 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 class PlayerSettingsPanel extends JPanel {
|
private class PlayerSettingsPanel extends JPanel {
|
||||||
|
@ -294,8 +311,8 @@ class SettingsPanel extends JPanel implements ISettingsPanel {
|
||||||
nameField.setText(settings.getName());
|
nameField.setText(settings.getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
colorButton
|
colorButton.setIcon(ImageUtil.createColorIcon(settings.getColor(),
|
||||||
.setIcon(ImageUtil.createColorIcon(settings.getColor(), 16, 2));
|
16, 2));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void enableRemoveButton(boolean enable) {
|
public void enableRemoveButton(boolean enable) {
|
||||||
|
@ -420,4 +437,14 @@ class SettingsPanel extends JPanel implements ISettingsPanel {
|
||||||
public void setInitialMeldThreshold(int value) {
|
public void setInitialMeldThreshold(int value) {
|
||||||
initialMeldThresholdSpinner.setValue(value);
|
initialMeldThresholdSpinner.setValue(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IEvent1<Integer> getChangeJokerNumberEvent() {
|
||||||
|
return changeJokerNumberEvent;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setJokerNumber(int jokerNumber) {
|
||||||
|
jokerNumberSpinner.setValue(jokerNumber);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Reference in a new issue