From 9cf3dc09ae319b6e627a4c52923bbc325137ef34 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Sun, 29 May 2011 15:50:30 +0200 Subject: Implement score panel git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@298 72836036-5685-4462-b002-a69064685172 --- src/jrummikub/view/impl/ScorePanel.java | 131 ++++++++++++++++++++++++++++++++ src/jrummikub/view/impl/View.java | 18 +++++ 2 files changed, 149 insertions(+) create mode 100644 src/jrummikub/view/impl/ScorePanel.java (limited to 'src/jrummikub/view/impl') 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 players; + private Iterable scores; + private Score accumulatedScore; + + public ScorePanel() { + setLayout(new GridBagLayout()); + setBorder(new LineBorder(Color.BLACK)); + } + + @Override + public void setPlayers(Iterable players) { + this.players = players; + } + + @Override + public void setScores(Iterable 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 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 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); + } + } +} diff --git a/src/jrummikub/view/impl/View.java b/src/jrummikub/view/impl/View.java index 0bc2e23..7381175 100644 --- a/src/jrummikub/view/impl/View.java +++ b/src/jrummikub/view/impl/View.java @@ -15,6 +15,7 @@ import jrummikub.model.Stone; import jrummikub.util.IEvent; import jrummikub.view.IHandPanel; import jrummikub.view.IPlayerPanel; +import jrummikub.view.IScorePanel; import jrummikub.view.ISettingsPanel; import jrummikub.view.ITablePanel; import jrummikub.view.IView; @@ -32,6 +33,7 @@ public class View extends JFrame implements IView { private StartTurnPanel startTurnPanel; private WinPanel winPanel; private SettingsPanel settingsPanel; + private ScorePanel scorePanel; private final static float PLAYER_PANEL_RATIO = 0.14f; private final static int PLAYER_PANEL_BORDER_WIDTH = 1; @@ -46,6 +48,11 @@ public class View extends JFrame implements IView { return settingsPanel; } + @Override + public IScorePanel getScorePanel() { + return scorePanel; + } + @Override public ITablePanel getTablePanel() { return table; @@ -100,6 +107,11 @@ public class View extends JFrame implements IView { layeredPane.setLayer(settingsPanel, JLayeredPane.POPUP_LAYER); layeredPane.add(settingsPanel); + scorePanel = new ScorePanel(); + scorePanel.setVisible(false); + layeredPane.setLayer(scorePanel, JLayeredPane.POPUP_LAYER); + layeredPane.add(scorePanel); + addComponentListener(new ComponentAdapter() { @Override public void componentResized(ComponentEvent e) { @@ -132,6 +144,7 @@ public class View extends JFrame implements IView { startTurnPanel.setBounds(0, tableHeight, width, playerPanelHeight); winPanel.setBounds(0, tableHeight, width, playerPanelHeight); settingsPanel.setBounds(width / 4, height / 4, width / 2, height / 2); + scorePanel.setBounds(width / 8, height / 4, width * 3 / 4, height / 2); } @Override @@ -159,6 +172,11 @@ public class View extends JFrame implements IView { settingsPanel.setVisible(show); } + @Override + public void showScorePanel(boolean show) { + scorePanel.setVisible(show); + } + @Override public void setCurrentPlayerName(String playerName) { playerPanel.setCurrentPlayerName(playerName); -- cgit v1.2.3