From 3f3f6370c92a22af54fc2ad633101b74fdd34c67 Mon Sep 17 00:00:00 2001 From: Jannis Harder Date: Sun, 29 May 2011 18:50:47 +0200 Subject: Added UI for the joker number git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@300 72836036-5685-4462-b002-a69064685172 --- mock/jrummikub/view/MockSettingsPanel.java | 16 ++++- src/jrummikub/view/ISettingsPanel.java | 15 +++++ src/jrummikub/view/impl/SettingsPanel.java | 101 ++++++++++++++++++----------- 3 files changed, 94 insertions(+), 38 deletions(-) diff --git a/mock/jrummikub/view/MockSettingsPanel.java b/mock/jrummikub/view/MockSettingsPanel.java index e029520..2e2663a 100644 --- a/mock/jrummikub/view/MockSettingsPanel.java +++ b/mock/jrummikub/view/MockSettingsPanel.java @@ -16,14 +16,18 @@ public class MockSettingsPanel implements ISettingsPanel { public MockEvent1 removePlayerEvent = new MockEvent1(); public MockEvent2 changePlayerColorEvent = new MockEvent2(); public MockEvent2 changePlayerNameEvent = new MockEvent2(); - public MockEvent1 changeInitialMeldThresholdEvent = new MockEvent1(); public MockEvent startGameEvent = new MockEvent(); public SettingsError error = SettingsError.NO_ERROR; public boolean startButtonEnabled = true; public boolean addPlayerButtonEnabled = true; public boolean removePlayerButtonsEnabled = false; public GameSettings gameSettings = new GameSettings(); + + public MockEvent1 changeInitialMeldThresholdEvent = new MockEvent1(); + public IEvent1 changeJokerNumberEvent = new MockEvent1(); + public int initialMeldThreshold; + public int jokerNumber; @Override public IEvent getAddPlayerEvent() { @@ -90,4 +94,14 @@ public class MockSettingsPanel implements ISettingsPanel { initialMeldThreshold = value; } + @Override + public IEvent1 getChangeJokerNumberEvent() { + return changeJokerNumberEvent; + } + + @Override + public void setJokerNumber(int jokerNumber) { + this.jokerNumber = jokerNumber; + } + } diff --git a/src/jrummikub/view/ISettingsPanel.java b/src/jrummikub/view/ISettingsPanel.java index 95381a1..28faec6 100644 --- a/src/jrummikub/view/ISettingsPanel.java +++ b/src/jrummikub/view/ISettingsPanel.java @@ -139,4 +139,19 @@ public interface ISettingsPanel { * initial meld threshold */ public void setInitialMeldThreshold(int value); + + /** + * Emitted when the joker number is changed + * + * @return the event + */ + public IEvent1 getChangeJokerNumberEvent(); + + /** + * Sets the joker number in the option pane + * + * @param jokerNumber + * the joker number + */ + public void setJokerNumber(int jokerNumber); } \ No newline at end of file diff --git a/src/jrummikub/view/impl/SettingsPanel.java b/src/jrummikub/view/impl/SettingsPanel.java index 862aa32..15c6ee4 100644 --- a/src/jrummikub/view/impl/SettingsPanel.java +++ b/src/jrummikub/view/impl/SettingsPanel.java @@ -58,8 +58,9 @@ class SettingsPanel extends JPanel implements ISettingsPanel { private boolean removeButtonsEnabled = true; private List playerSettingsPanels = new ArrayList(); - + private JSpinner initialMeldThresholdSpinner; + private JSpinner jokerNumberSpinner; private Event startGameEvent = new Event(); private Event addPlayerEvent = new Event(); @@ -67,6 +68,7 @@ class SettingsPanel extends JPanel implements ISettingsPanel { private Event2 changePlayerColorEvent = new Event2(); private Event2 changePlayerNameEvent = new Event2(); private Event1 changeInitialMeldThresholdEvent = new Event1(); + private Event1 changeJokerNumberEvent = new Event1(); @Override public IEvent getStartGameEvent() { @@ -101,16 +103,16 @@ class SettingsPanel extends JPanel implements ISettingsPanel { @Override public void setError(SettingsError error) { switch (error) { - case NO_ERROR: - errorMessageLabel.setText(" "); - break; - case DUPLICATE_PLAYER_NAME: - errorMessageLabel - .setText("Jeder Spielername darf nur einmal verwendet werden."); - break; - case NO_PLAYER_NAME: - errorMessageLabel.setText("Jeder Spieler muss einen Namen haben."); - break; + case NO_ERROR: + errorMessageLabel.setText(" "); + break; + case DUPLICATE_PLAYER_NAME: + errorMessageLabel + .setText("Jeder Spielername darf nur einmal verwendet werden."); + break; + case NO_PLAYER_NAME: + errorMessageLabel.setText("Jeder Spieler muss einen Namen haben."); + break; } } @@ -134,7 +136,8 @@ class SettingsPanel extends JPanel implements ISettingsPanel { @Override public void setGameSettings(GameSettings gameSettings) { - while (playerSettingsPanels.size() > gameSettings.getPlayerList().size()) { + while (playerSettingsPanels.size() > gameSettings.getPlayerList() + .size()) { removePlayerSettingsPanel(); } @@ -161,8 +164,8 @@ class SettingsPanel extends JPanel implements ISettingsPanel { } private void removePlayerSettingsPanel() { - PlayerSettingsPanel p = playerSettingsPanels.remove(playerSettingsPanels - .size() - 1); + PlayerSettingsPanel p = playerSettingsPanels + .remove(playerSettingsPanels.size() - 1); playerSettingsViewport.remove(p); } @@ -184,7 +187,8 @@ class SettingsPanel extends JPanel implements ISettingsPanel { playerSettingsViewport.add(addPlayerPanel); addPlayerButton = new JButton("+"); - addPlayerButton.setFont(addPlayerButton.getFont().deriveFont(Font.BOLD)); + addPlayerButton + .setFont(addPlayerButton.getFont().deriveFont(Font.BOLD)); addPlayerButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -195,55 +199,68 @@ class SettingsPanel extends JPanel implements ISettingsPanel { } 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() { optionsPanel = new JPanel(); GridBagLayout layout = new GridBagLayout(); optionsPanel.setLayout(layout); - + GridBagConstraints labelC = new GridBagConstraints(); GridBagConstraints optionC = new GridBagConstraints(); - + labelC.anchor = GridBagConstraints.EAST; labelC.gridx = 0; - labelC.insets = new Insets(5,5,5,5); + labelC.insets = new Insets(4, 4, 4, 4); optionC.anchor = GridBagConstraints.WEST; optionC.gridx = 1; - optionC.insets = new Insets(5,5,5,5); - + optionC.insets = new Insets(2, 2, 2, 2); + JLabel label = new JLabel("Auslegeschranke:"); labelC.gridy = 0; optionsPanel.add(label, labelC); - + initialMeldThresholdSpinner = new JSpinner(); - initialMeldThresholdSpinner.setModel(new SpinnerNumberModel(1, 1, 999, 1)); - initialMeldThresholdSpinner.setPreferredSize(new Dimension(60, initialMeldThresholdSpinner.getMinimumSize().height)); + initialMeldThresholdSpinner.setModel(new SpinnerNumberModel(1, 1, 999, + 1)); + initialMeldThresholdSpinner.setPreferredSize(new Dimension(60, + initialMeldThresholdSpinner.getMinimumSize().height)); initialMeldThresholdSpinner.addChangeListener(new ChangeListener() { - @Override public void stateChanged(ChangeEvent e) { - changeInitialMeldThresholdEvent.emit((Integer)initialMeldThresholdSpinner.getValue()); + changeInitialMeldThresholdEvent + .emit((Integer) initialMeldThresholdSpinner.getValue()); } }); optionC.gridy = 0; optionsPanel.add(initialMeldThresholdSpinner, optionC); - - - label = new JLabel("Dinge:"); + + label = new JLabel("Jokeranzahl:"); labelC.gridx = 0; labelC.gridy = 1; 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.gridy = 2; labelC.fill = GridBagConstraints.BOTH; labelC.weightx = 1; labelC.weighty = 1; optionsPanel.add(makeFiller(), labelC); - - + // TODO Knöpfe für Dinge } @@ -279,8 +296,8 @@ class SettingsPanel extends JPanel implements ISettingsPanel { }); add(startButton, c); - setBorder(new CompoundBorder(new LineBorder(Color.BLACK), new EmptyBorder( - 10, 10, 10, 10))); + setBorder(new CompoundBorder(new LineBorder(Color.BLACK), + new EmptyBorder(10, 10, 10, 10))); } private class PlayerSettingsPanel extends JPanel { @@ -294,8 +311,8 @@ class SettingsPanel extends JPanel implements ISettingsPanel { nameField.setText(settings.getName()); } - colorButton - .setIcon(ImageUtil.createColorIcon(settings.getColor(), 16, 2)); + colorButton.setIcon(ImageUtil.createColorIcon(settings.getColor(), + 16, 2)); } public void enableRemoveButton(boolean enable) { @@ -420,4 +437,14 @@ class SettingsPanel extends JPanel implements ISettingsPanel { public void setInitialMeldThreshold(int value) { initialMeldThresholdSpinner.setValue(value); } + + @Override + public IEvent1 getChangeJokerNumberEvent() { + return changeJokerNumberEvent; + } + + @Override + public void setJokerNumber(int jokerNumber) { + jokerNumberSpinner.setValue(jokerNumber); + } } -- cgit v1.2.3