diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/jrummikub/model/GameSettings.java | 10 | ||||
-rw-r--r-- | src/jrummikub/view/ISettingsPanel.java | 2 | ||||
-rw-r--r-- | src/jrummikub/view/impl/SettingsPanel.java | 95 |
3 files changed, 74 insertions, 33 deletions
diff --git a/src/jrummikub/model/GameSettings.java b/src/jrummikub/model/GameSettings.java index dfd391e..2446333 100644 --- a/src/jrummikub/model/GameSettings.java +++ b/src/jrummikub/model/GameSettings.java @@ -28,6 +28,7 @@ public class GameSettings implements Serializable { private int totalTime; private boolean noLimits; private HashSet<StoneColor> stoneColors; + private boolean seeHandSize; /** * Creates new GameSettings with default values @@ -48,6 +49,7 @@ public class GameSettings implements Serializable { numberOfStonesDealt = 14; totalTime = 60; noLimits = false; + seeHandSize = false; stoneColors = new HashSet<StoneColor>(Arrays.asList(BLACK, BLUE, ORANGE, RED)); } @@ -184,6 +186,10 @@ public class GameSettings implements Serializable { return noLimits; } + public boolean doSeeHandSize() { + return seeHandSize; + } + /** * Set whether "No-Limits" rules are used * @@ -194,6 +200,10 @@ public class GameSettings implements Serializable { this.noLimits = noLimits; } + public void setSeeHandSize(boolean see) { + seeHandSize = see; + } + /** * Get stone colors used * diff --git a/src/jrummikub/view/ISettingsPanel.java b/src/jrummikub/view/ISettingsPanel.java index c52d72c..f84e21b 100644 --- a/src/jrummikub/view/ISettingsPanel.java +++ b/src/jrummikub/view/ISettingsPanel.java @@ -245,6 +245,8 @@ public interface ISettingsPanel { */ public void setPlayerColors(Set<Color> colors); + public IEvent1<Boolean> getChangeSeeHandSize(); + /** * Specifies the different kinds of settings errors that can be displayed */ diff --git a/src/jrummikub/view/impl/SettingsPanel.java b/src/jrummikub/view/impl/SettingsPanel.java index 6f14d19..1560719 100644 --- a/src/jrummikub/view/impl/SettingsPanel.java +++ b/src/jrummikub/view/impl/SettingsPanel.java @@ -96,6 +96,7 @@ class SettingsPanel extends JPanel implements ISettingsPanel { private JSpinner jokerNumberSpinner; private JSpinner timeSpinner; private JCheckBox noLimitsBox; + private JCheckBox seeHandSizeBox; private JPanel colorSelectionPanel; private Map<StoneColor, JToggleButton> colorButtons = new HashMap<StoneColor, JToggleButton>(); private JPanel colorLabelPanel; @@ -107,6 +108,7 @@ class SettingsPanel extends JPanel implements ISettingsPanel { private JLabel jokerNumberLabel; private JLabel timeLabel; private JLabel noLimitsLabel; + private JLabel seeHandSizeLabel; private JButton loadButton; private JButton networkButton; @@ -131,6 +133,7 @@ class SettingsPanel extends JPanel implements ISettingsPanel { private Event1<Set<StoneColor>> changeStoneColorsEvent = new Event1<Set<StoneColor>>(); private Event1<Integer> changeTimeEvent = new Event1<Integer>(); private Event1<Boolean> changeNoLimitsEvent = new Event1<Boolean>(); + private Event1<Boolean> changeSeeHandSizeEvent = new Event1<Boolean>(); private Event setVariantDefaultEvent = new Event(); private Event setVariantChildrenEvent = new Event(); @@ -213,6 +216,11 @@ class SettingsPanel extends JPanel implements ISettingsPanel { } @Override + public IEvent1<Boolean> getChangeSeeHandSize() { + return changeSeeHandSizeEvent; + } + + @Override public IEvent1<Set<StoneColor>> getChangeStoneColorsEvent() { return changeStoneColorsEvent; } @@ -320,7 +328,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(); } @@ -329,21 +338,25 @@ class SettingsPanel extends JPanel implements ISettingsPanel { if (i < playerTypeChoices.size()) { choices = playerTypeChoices.get(i); } - updatePlayerSettingsPanel(i, gameSettings.getPlayerList().get(i), choices); + updatePlayerSettingsPanel(i, gameSettings.getPlayerList().get(i), + choices); } setInitialSettingsValue(gameSettings); - initialMeldThresholdLabel.setText(gameSettings.getInitialMeldThreshold() - + " Punkte"); + initialMeldThresholdLabel.setText(gameSettings + .getInitialMeldThreshold() + " Punkte"); stoneSetNumberLabel.setText(Integer.toString(gameSettings .getStoneSetNumber())); - highestValueLabel.setText(Integer.toString(gameSettings.getHighestValue())); + highestValueLabel.setText(Integer.toString(gameSettings + .getHighestValue())); numberOfStonesDealtLabel.setText(Integer.toString(gameSettings .getNumberOfStonesDealt())); - jokerNumberLabel.setText(Integer.toString(gameSettings.getJokerNumber())); + jokerNumberLabel + .setText(Integer.toString(gameSettings.getJokerNumber())); timeLabel.setText(gameSettings.getTotalTime() + " Sekunden"); noLimitsLabel.setText(gameSettings.isNoLimits() ? "An" : "Aus"); + //seeHandSizeLabel.setText(gameSettings.doSeeHandSize() ? "An" : "Aus"); colorLabelPanel.removeAll(); @@ -362,14 +375,16 @@ class SettingsPanel extends JPanel implements ISettingsPanel { } private void setInitialSettingsValue(GameSettings gameSettings) { - initialMeldThresholdSpinner - .setValue(gameSettings.getInitialMeldThreshold()); + initialMeldThresholdSpinner.setValue(gameSettings + .getInitialMeldThreshold()); stoneSetNumberSpinner.setValue(gameSettings.getStoneSetNumber()); highestValueSpinner.setValue(gameSettings.getHighestValue()); - numberOfStonesDealtSpinner.setValue(gameSettings.getNumberOfStonesDealt()); + numberOfStonesDealtSpinner.setValue(gameSettings + .getNumberOfStonesDealt()); jokerNumberSpinner.setValue(gameSettings.getJokerNumber()); timeSpinner.setValue(gameSettings.getTotalTime()); noLimitsBox.setSelected(gameSettings.isNoLimits()); + seeHandSizeBox.setSelected(gameSettings.doSeeHandSize()); } private void updatePlayerSettingsPanel(int i, PlayerSettings settings, @@ -384,8 +399,8 @@ class SettingsPanel extends JPanel implements ISettingsPanel { private void addPlayerSettingsPanel(int i, PlayerSettings settings, List<Type> choices) { - PlayerSettingsPanel panel = new PlayerSettingsPanel(i, settings, choices, - settingsMode != SettingsMode.NETWORK_OFFER + PlayerSettingsPanel panel = new PlayerSettingsPanel(i, settings, + choices, settingsMode != SettingsMode.NETWORK_OFFER && settingsMode != SettingsMode.NETWORK_JOIN); playerSettingsPanels.add(panel); playerSettingsViewport.add(panel, @@ -395,8 +410,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); } @@ -418,7 +433,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) { @@ -467,7 +483,8 @@ class SettingsPanel extends JPanel implements ISettingsPanel { makeOptionLabel(row++, "H\u00f6chster Steinwert:"); highestValueLabel = new JLabel(); - highestValueSpinner = createOptionSpinner(3, 99, 1, changeHighestValueEvent); + highestValueSpinner = createOptionSpinner(3, 99, 1, + changeHighestValueEvent); makeOptionLabel(row++, "Anzahl Startsteine:"); numberOfStonesDealtLabel = new JLabel(); @@ -476,7 +493,8 @@ class SettingsPanel extends JPanel implements ISettingsPanel { makeOptionLabel(row++, "Jokeranzahl:"); jokerNumberLabel = new JLabel(); - jokerNumberSpinner = createOptionSpinner(0, 999, 1, changeJokerNumberEvent); + jokerNumberSpinner = createOptionSpinner(0, 999, 1, + changeJokerNumberEvent); makeOptionLabel(row++, "Zeit f\u00fcr Spielzug:"); timeLabel = new JLabel(); @@ -485,6 +503,9 @@ class SettingsPanel extends JPanel implements ISettingsPanel { makeOptionLabel(row++, "No Limits:"); noLimitsLabel = new JLabel(); noLimitsBox = createOptionCheckbox(changeNoLimitsEvent); + seeHandSizeBox = createOptionCheckbox(changeSeeHandSizeEvent); + + makeOptionLabel(row++, "Steinanzahl anzeigen"); makeOptionLabel(row, "Steinfarben:"); createColorSelectionPanel(); @@ -510,6 +531,7 @@ class SettingsPanel extends JPanel implements ISettingsPanel { optionsPanel.remove(timeLabel); optionsPanel.remove(noLimitsBox); optionsPanel.remove(noLimitsLabel); + optionsPanel.remove(seeHandSizeBox); optionsPanel.remove(colorSelectionPanel); optionsPanel.remove(colorLabelPanel); @@ -528,6 +550,7 @@ class SettingsPanel extends JPanel implements ISettingsPanel { addOptionPanelComponent(jokerNumberSpinner, false, row++); addOptionPanelComponent(timeSpinner, false, row++); addOptionPanelComponent(noLimitsBox, false, row++); + addOptionPanelComponent(seeHandSizeBox, false, row++); addOptionPanelComponent(colorSelectionPanel, false, row++); } @@ -542,6 +565,7 @@ class SettingsPanel extends JPanel implements ISettingsPanel { addOptionPanelComponent(jokerNumberLabel, false, row++); addOptionPanelComponent(timeLabel, false, row++); addOptionPanelComponent(noLimitsLabel, false, row++); + addOptionPanelComponent(seeHandSizeBox, false, row++); addOptionPanelComponent(colorLabelPanel, false, row++); } @@ -629,8 +653,8 @@ class SettingsPanel extends JPanel implements ISettingsPanel { final Event1<Integer> targetEvent) { final JSpinner spinner = new JSpinner(); spinner.setModel(new SpinnerNumberModel(min, min, max, step)); - spinner - .setPreferredSize(new Dimension(60, spinner.getMinimumSize().height)); + spinner.setPreferredSize(new Dimension(60, + spinner.getMinimumSize().height)); spinner.addChangeListener(new ChangeListener() { @Override public void stateChanged(ChangeEvent e) { @@ -691,8 +715,8 @@ class SettingsPanel extends JPanel implements ISettingsPanel { addDefaultButtons(); - 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))); } void resetTabbedPane() { @@ -820,7 +844,8 @@ class SettingsPanel extends JPanel implements ISettingsPanel { private JLabel typeLabel; public void setSettings(PlayerSettings settings) { - if (nameField != null && !nameField.getText().equals(settings.getName())) { + if (nameField != null + && !nameField.getText().equals(settings.getName())) { nameField.setText(settings.getName()); } if (nameLabel != null) { @@ -837,8 +862,8 @@ class SettingsPanel extends JPanel implements ISettingsPanel { if (typeLabel != null) { typeLabel.setText(getTypeLabel(settings.getType())); } - colorButton - .setIcon(ImageUtil.createColorIcon(settings.getColor(), 16, 2)); + colorButton.setIcon(ImageUtil.createColorIcon(settings.getColor(), + 16, 2)); colorChangable = !((settingsMode == SettingsMode.NETWORK_JOIN | settingsMode == SettingsMode.NETWORK_OFFER) & settings .getType() != Type.HUMAN); @@ -932,7 +957,8 @@ class SettingsPanel extends JPanel implements ISettingsPanel { c.gridy = 0; add(colorButton, c); - nameField.getDocument().addDocumentListener(new NameChangeListener()); + nameField.getDocument().addDocumentListener( + new NameChangeListener()); c2.gridy = 0; c2.weightx = 1; c2.fill = GridBagConstraints.HORIZONTAL; @@ -947,8 +973,8 @@ class SettingsPanel extends JPanel implements ISettingsPanel { }); playerType.setPreferredSize(new Dimension(120, playerType .getPreferredSize().height)); - playerType.setMinimumSize(new Dimension(120, - playerType.getMinimumSize().height)); + playerType.setMinimumSize(new Dimension(120, playerType + .getMinimumSize().height)); add(playerType, c); removeButton = new JButton("\u00d7"); @@ -991,8 +1017,8 @@ class SettingsPanel extends JPanel implements ISettingsPanel { typeLabel.setBorder(new EmptyBorder(3, 7, 3, 7)); typeLabel.setPreferredSize(new Dimension(120, typeLabel .getPreferredSize().height)); - typeLabel.setMinimumSize(new Dimension(120, - typeLabel.getMinimumSize().height)); + typeLabel.setMinimumSize(new Dimension(120, typeLabel + .getMinimumSize().height)); add(typeLabel, c); } @@ -1000,8 +1026,9 @@ class SettingsPanel extends JPanel implements ISettingsPanel { public Dimension getPreferredSize() { Dimension preferredSize = super.getPreferredSize(); for (Component component : this.getComponents()) { - preferredSize - .setSize(preferredSize.width, Math.max(preferredSize.height, + preferredSize.setSize( + preferredSize.width, + Math.max(preferredSize.height, component.getPreferredSize().height)); } return preferredSize; @@ -1011,8 +1038,9 @@ class SettingsPanel extends JPanel implements ISettingsPanel { public Dimension getMaximumSize() { Dimension preferredSize = super.getPreferredSize(); for (Component component : this.getComponents()) { - preferredSize - .setSize(Integer.MAX_VALUE, Math.max(preferredSize.height, + preferredSize.setSize( + Integer.MAX_VALUE, + Math.max(preferredSize.height, component.getPreferredSize().height)); } return preferredSize; @@ -1046,7 +1074,8 @@ class SettingsPanel extends JPanel implements ISettingsPanel { add(new ColorButton(c, menu)); } else { add(new JLabel(ImageUtil.createColorIcon( - UIManager.getColor("PopupMenu.background"), 16, 0))); + UIManager.getColor("PopupMenu.background"), 16, + 0))); } } |