package magic.ui.screen.deck.tiled; import java.awt.Color; import java.awt.Font; import java.util.List; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.SwingConstants; import magic.model.MagicCardDefinition; import magic.model.MagicDeck; import magic.translate.MText; import magic.translate.StringContext; import net.miginfocom.swing.MigLayout; @SuppressWarnings("serial") class HeaderPanel extends JPanel { // translatable strings @StringContext(eg = "Creatures (28 cards, 46%)") private static final String _S11 = "%s (%d cards, %d%%)"; @StringContext(eg = "All cards (60 cards)") private static final String _S12 = "%s (%d cards)"; private final JLabel deckNameLabel = new JLabel(); private final JLabel filterLabel = new JLabel(); HeaderPanel() { setLookAndFeel(); } private void setLookAndFeel() { setOpaque(false); setLayout(new MigLayout( "insets 0, gapy 2, flowy, aligny center", "[fill, grow]") ); // deck name label deckNameLabel.setForeground(Color.WHITE); deckNameLabel.setFont(new Font("Dialog", Font.PLAIN, 16)); deckNameLabel.setHorizontalAlignment(SwingConstants.CENTER); // filter label filterLabel.setForeground(Color.WHITE); filterLabel.setFont(new Font("Dialog", Font.ITALIC, 14)); filterLabel.setHorizontalAlignment(SwingConstants.CENTER); } private void refreshLayout() { removeAll(); add(deckNameLabel); add(filterLabel); revalidate(); } private String getFilterCaption(CardTypeFilter filter, MagicDeck deck, List<MagicCardDefinition> cards) { int cardCount = cards == null ? 0 : cards.size(); if (filter != CardTypeFilter.ALL) { final int percentage = (int)((cardCount / (double) deck.size()) * 100); return MText.get(_S11, filter, cardCount, percentage); } else { return MText.get(_S12, filter, cardCount); } } void setContent(MagicDeck deck, CardTypeFilter filter, List<MagicCardDefinition> cards) { deckNameLabel.setText(deck.getName()); filterLabel.setText(getFilterCaption(filter, deck, cards)); refreshLayout(); } }