diff options
Diffstat (limited to 'src/jrummikub/view/impl/PlayerPanel.java')
-rw-r--r-- | src/jrummikub/view/impl/PlayerPanel.java | 185 |
1 files changed, 185 insertions, 0 deletions
diff --git a/src/jrummikub/view/impl/PlayerPanel.java b/src/jrummikub/view/impl/PlayerPanel.java new file mode 100644 index 0000000..5c29e7e --- /dev/null +++ b/src/jrummikub/view/impl/PlayerPanel.java @@ -0,0 +1,185 @@ +package jrummikub.view.impl; + +import java.awt.Color; +import java.awt.Dimension; +import java.awt.GridBagConstraints; +import java.awt.GridBagLayout; +import java.awt.Insets; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.text.DecimalFormat; + +import javax.swing.JButton; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JProgressBar; + +import jrummikub.util.Event; +import jrummikub.util.IEvent; +import jrummikub.view.IBoard; +import jrummikub.view.IPlayerPanel; + +@SuppressWarnings("serial") +public class PlayerPanel extends JPanel implements IPlayerPanel { + private final static DecimalFormat secondFormat = new DecimalFormat("00"); + + private Board board; + + private JLabel currentPlayerNameLabel; + private JButton sortByNumberButton; + private JButton sortByColorButton; + private JProgressBar timeBar; + private JButton endTurnButton; + + private Event sortByNumberEvent = new Event(); + private Event sortByColorEvent = new Event(); + private Event endTurnEvent = new Event(); + + + @Override + public IBoard getBoard() { + return board; + } + + @Override + public void setCurrentPlayerName(String playerName) { + currentPlayerNameLabel.setText(playerName); + } + + @Override + public + void setTimeLeft(int time) { + timeBar.setValue(time); + timeBar.setString(Integer.toString(time/60) + ":" + secondFormat.format(time%60)); + } + + @Override + public IEvent getSortByNumberEvent() { + return sortByNumberEvent; + } + + @Override + public IEvent getSortByColorEvent() { + return sortByColorEvent; + } + + @Override + public IEvent getEndTurnEvent() { + return endTurnEvent; + } + + + JPanel createLeftPanel() { + JPanel panel = new JPanel(); + panel.setPreferredSize(new Dimension(0, 0)); + GridBagLayout layout = new GridBagLayout(); + GridBagConstraints c = new GridBagConstraints(); + panel.setLayout(layout); + panel.setOpaque(false); + + + currentPlayerNameLabel = new JLabel(); + currentPlayerNameLabel.setHorizontalAlignment(JLabel.CENTER); + currentPlayerNameLabel.setHorizontalTextPosition(JLabel.CENTER); + currentPlayerNameLabel.setVerticalAlignment(JLabel.CENTER); + currentPlayerNameLabel.setVerticalTextPosition(JLabel.CENTER); + currentPlayerNameLabel.setPreferredSize(new Dimension(180, 30)); + c.weightx = 0; + c.weighty = 1; + c.gridwidth = GridBagConstraints.REMAINDER; + c.insets = new Insets(25, 0, 0, 0); + layout.setConstraints(currentPlayerNameLabel, c); + panel.add(currentPlayerNameLabel); + + sortByNumberButton = new JButton("<html><center>Sort by<br>number"); + sortByNumberButton.setPreferredSize(new Dimension(85, 50)); + sortByNumberButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent arg0) { + sortByNumberEvent.fire(); + }}); + + c.gridwidth = GridBagConstraints.RELATIVE; + c.gridheight = GridBagConstraints.REMAINDER; + c.insets = new Insets(15, 0, 20, 5); + layout.setConstraints(sortByNumberButton, c); + panel.add(sortByNumberButton); + + sortByColorButton = new JButton("<html><center>Sort by<br>color"); + sortByColorButton.setPreferredSize(new Dimension(85, 50)); + sortByColorButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent arg0) { + sortByColorEvent.fire(); + }}); + + c.gridwidth = GridBagConstraints.REMAINDER; + c.insets = new Insets(15, 5, 20, 0); + layout.setConstraints(sortByColorButton, c); + panel.add(sortByColorButton); + + return panel; + } + + JPanel createRightPanel() { + JPanel panel = new JPanel(); + panel.setPreferredSize(new Dimension(0, 0)); + GridBagLayout layout = new GridBagLayout(); + GridBagConstraints c = new GridBagConstraints(); + panel.setLayout(layout); + panel.setOpaque(false); + + timeBar = new JProgressBar(0, 60); + timeBar.setStringPainted(true); + timeBar.setPreferredSize(new Dimension(180, 30)); + c.weightx = 0; + c.weighty = 1; + c.gridwidth = GridBagConstraints.REMAINDER; + c.insets = new Insets(25, 0, 0, 0); + layout.setConstraints(timeBar, c); + panel.add(timeBar); + + endTurnButton = new JButton("End turn"); + endTurnButton.setPreferredSize(new Dimension(180, 50)); + endTurnButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent arg0) { + endTurnEvent.fire(); + }}); + + c.gridheight = GridBagConstraints.REMAINDER; + c.insets = new Insets(15, 0, 20, 0); + layout.setConstraints(endTurnButton, c); + panel.add(endTurnButton); + + return panel; + } + + + PlayerPanel() { + GridBagLayout layout = new GridBagLayout(); + GridBagConstraints c = new GridBagConstraints(); + setLayout(layout); + + setBackground(Color.LIGHT_GRAY); + + JPanel leftPanel = createLeftPanel(); + c.fill = GridBagConstraints.BOTH; + c.weightx = 1; + c.weighty = 1; + c.gridheight = GridBagConstraints.REMAINDER; + layout.setConstraints(leftPanel, c); + add(leftPanel); + + board = new Board(); + c.weightx = 3; + layout.setConstraints(board, c); + add(board); + + JPanel rightPanel = createRightPanel(); + c.weightx = 1; + c.gridwidth = GridBagConstraints.REMAINDER; + layout.setConstraints(rightPanel, c); + add(rightPanel); + } +} |