diff options
author | Matthias Schiffer <mschiffer@universe-factory.net> | 2011-05-29 15:50:30 +0200 |
---|---|---|
committer | Matthias Schiffer <mschiffer@universe-factory.net> | 2011-05-29 15:50:30 +0200 |
commit | 9cf3dc09ae319b6e627a4c52923bbc325137ef34 (patch) | |
tree | 73d6391aa1fb286770e0cdec1c502fc63ad61ae2 /src/jrummikub/view/impl/ScorePanel.java | |
parent | eea456991cc9e3d29ab51e8907b0374a61c77a96 (diff) | |
download | JRummikub-9cf3dc09ae319b6e627a4c52923bbc325137ef34.tar JRummikub-9cf3dc09ae319b6e627a4c52923bbc325137ef34.zip |
Implement score panel
git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@298 72836036-5685-4462-b002-a69064685172
Diffstat (limited to 'src/jrummikub/view/impl/ScorePanel.java')
-rw-r--r-- | src/jrummikub/view/impl/ScorePanel.java | 131 |
1 files changed, 131 insertions, 0 deletions
diff --git a/src/jrummikub/view/impl/ScorePanel.java b/src/jrummikub/view/impl/ScorePanel.java new file mode 100644 index 0000000..e926294 --- /dev/null +++ b/src/jrummikub/view/impl/ScorePanel.java @@ -0,0 +1,131 @@ +package jrummikub.view.impl; + +import java.awt.Color; +import java.awt.GridBagConstraints; +import java.awt.GridBagLayout; +import java.util.Iterator; + +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JSeparator; +import javax.swing.border.LineBorder; + +import jrummikub.model.PlayerSettings; +import jrummikub.model.Score; +import jrummikub.view.IScorePanel; + +@SuppressWarnings("serial") +class ScorePanel extends JPanel implements IScorePanel { + private Iterable<PlayerSettings> players; + private Iterable<Score> scores; + private Score accumulatedScore; + + public ScorePanel() { + setLayout(new GridBagLayout()); + setBorder(new LineBorder(Color.BLACK)); + } + + @Override + public void setPlayers(Iterable<PlayerSettings> players) { + this.players = players; + } + + @Override + public void setScores(Iterable<Score> scores) { + this.scores = scores; + } + + @Override + public void setAccumulatedScore(Score accumulatedScore) { + this.accumulatedScore = accumulatedScore; + } + + @Override + public void update() { + this.removeAll(); + + GridBagConstraints c = new GridBagConstraints(); + c.fill = GridBagConstraints.BOTH; + c.weightx = 1.0; + c.gridwidth = GridBagConstraints.REMAINDER; + + addPlayerNames(); + + add(new JSeparator(), c); + + int n = 0; + for (Iterator<Score> it = scores.iterator(); it.hasNext();) { + addScoreRow(it.next(), ++n); + } + + add(new JSeparator(), c); + + addAccumulatedScore(); + } + + private void addPlayerNames() { + GridBagConstraints c = new GridBagConstraints(); + c.fill = GridBagConstraints.BOTH; + c.weightx = 1.0; + + JLabel roundHead = new JLabel("Runde"); + roundHead.setHorizontalAlignment(JLabel.CENTER); + add(roundHead, c); + + for (Iterator<PlayerSettings> it = players.iterator(); it.hasNext();) { + PlayerSettings player = it.next(); + + if (!it.hasNext()) { + c.gridwidth = GridBagConstraints.REMAINDER; + } + + JLabel playerNameLabel = new JLabel(player.getName()); + playerNameLabel.setIcon(ImageUtil.createColorIcon(player.getColor(), 12, + 1)); + playerNameLabel.setHorizontalAlignment(JLabel.CENTER); + + add(playerNameLabel, c); + } + } + + private void addScoreRow(Score score, int n) { + GridBagConstraints c = new GridBagConstraints(); + c.fill = GridBagConstraints.BOTH; + c.weightx = 1.0; + c.gridwidth = 1; + + JLabel roundLabel = new JLabel(Integer.toString(n)); + roundLabel.setHorizontalAlignment(JLabel.CENTER); + add(roundLabel, c); + + for (int i = 0; i < score.getPoints().size(); ++i) { + if (i == score.getPoints().size()-1) { + c.gridwidth = GridBagConstraints.REMAINDER; + } + + JLabel scoreLabel = new JLabel(Integer.toString(score.getPoints().get(i))); + scoreLabel.setHorizontalAlignment(JLabel.CENTER); + add(scoreLabel, c); + } + } + + private void addAccumulatedScore() { + GridBagConstraints c = new GridBagConstraints(); + c.fill = GridBagConstraints.BOTH; + c.weightx = 1.0; + + JLabel accumLabel = new JLabel("Gesamt"); + accumLabel.setHorizontalAlignment(JLabel.CENTER); + add(accumLabel, c); + + for (int i = 0; i < accumulatedScore.getPoints().size(); ++i) { + if (i == accumulatedScore.getPoints().size()-1) { + c.gridwidth = GridBagConstraints.REMAINDER; + } + + JLabel scoreLabel = new JLabel(Integer.toString(accumulatedScore.getPoints().get(i))); + scoreLabel.setHorizontalAlignment(JLabel.CENTER); + add(scoreLabel, c); + } + } +} |