package magic.ui.widget.player;

import java.awt.Color;

import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;

import magic.model.player.PlayerProfile;
import magic.ui.FontsAndBorders;
import net.miginfocom.swing.MigLayout;

/**
 * Composite JPanel which displays player name and if applicable,
 * player type and attributes on separate lines.
 *
 */
@SuppressWarnings("serial")
public class PlayerDetailsPanel extends JPanel {

    private final static Color DEFAULT_TEXT_COLOR = Color.WHITE;

    private final MigLayout migLayout = new MigLayout();
    private final JLabel playerNameLabel = new JLabel();
    private final JLabel playerTypeLabel = new JLabel();
    private final JLabel playerAttributesLabel = new JLabel();

    // CTR
    public PlayerDetailsPanel(final PlayerProfile player, final Color foreColor) {
        setLookAndFeel(foreColor);
        setPlayer(player);
    }
    public PlayerDetailsPanel(final PlayerProfile player) {
        setLookAndFeel(DEFAULT_TEXT_COLOR);
        setPlayer(player);
    }
    public PlayerDetailsPanel() {
        setLookAndFeel(DEFAULT_TEXT_COLOR);
    }

    private void setLookAndFeel(final Color foreColor) {
        setOpaque(false);
        setForeground(foreColor);
        setLayout(migLayout);
        // player name label
        playerNameLabel.setFont(FontsAndBorders.FONT3);
        playerNameLabel.setForeground(foreColor);
        playerNameLabel.setVerticalAlignment(SwingConstants.TOP);
        // player type label
        playerTypeLabel.setFont(FontsAndBorders.FONT0);
        playerTypeLabel.setForeground(foreColor);
        // player attributes label
        playerAttributesLabel.setFont(FontsAndBorders.FONT0);
        playerAttributesLabel.setForeground(foreColor);
    }

    public void setPlayer(final PlayerProfile player) {
        playerNameLabel.setText(player.getPlayerName());
        playerTypeLabel.setText(player.getPlayerTypeLabel());
        playerAttributesLabel.setText(player.getPlayerAttributeLabel());
        refreshLayout();
    }

    private void refreshLayout() {
        removeAll();
        migLayout.setLayoutConstraints("insets 0, gap 0, flowy");
        add(playerTypeLabel, "w 100%");
        add(playerNameLabel, "w 100%");
        add(playerAttributesLabel, "w 100%");
    }
}