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);
}
}