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("
Sort by
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("
Sort by
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); } }