summaryrefslogtreecommitdiffstats
path: root/src/jrummikub/view/impl/ScorePanel.java
diff options
context:
space:
mode:
authorMatthias Schiffer <mschiffer@universe-factory.net>2011-05-29 15:50:30 +0200
committerMatthias Schiffer <mschiffer@universe-factory.net>2011-05-29 15:50:30 +0200
commit9cf3dc09ae319b6e627a4c52923bbc325137ef34 (patch)
tree73d6391aa1fb286770e0cdec1c502fc63ad61ae2 /src/jrummikub/view/impl/ScorePanel.java
parenteea456991cc9e3d29ab51e8907b0374a61c77a96 (diff)
downloadJRummikub-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.java131
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);
+ }
+ }
+}