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