package magic.ui.screen.keywords; import java.awt.Color; import java.awt.Font; import java.util.List; import javax.swing.BorderFactory; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.SwingConstants; import magic.awt.MagicFont; import magic.model.MagicCardDefinition; import magic.model.MagicRandom; import magic.ui.widget.cards.canvas.CardsCanvas; import net.miginfocom.swing.MigLayout; @SuppressWarnings("serial") class KeywordPanelB extends JPanel { private static final Font KEYWORD_FONT = MagicFont.MPlantinBold.get().deriveFont(24f); private static final Font TEXT_FONT = MagicFont.MPlantin.get().deriveFont(21f); private final JLabel keywordLabel = new JLabel(); private final JLabel textLabel = new JLabel(); private final CardsCanvas cardsCanvas = new CardsCanvas(); KeywordPanelB() { cardsCanvas.setAnimationEnabled(false); cardsCanvas.setLayoutMode(CardsCanvas.LayoutMode.SCALE_TO_FIT); keywordLabel.setForeground(Color.WHITE); keywordLabel.setFont(KEYWORD_FONT); textLabel.setForeground(Color.WHITE); textLabel.setFont(TEXT_FONT); textLabel.setVerticalAlignment(SwingConstants.TOP); setLayout(new MigLayout("flowy, insets n 30 n n", "[fill, grow]", "[40!][growprio 200][bottom, grow, fill]") ); refreshLayout(); setBorder(BorderFactory.createMatteBorder(0, 1, 0, 0, Color.GRAY)); setOpaque(false); } private void drawCardImages(Keyword keyword) { showExampleCard(keyword); } private void refreshLayout() { removeAll(); add(keywordLabel); add(textLabel); add(cardsCanvas, "h ::560"); revalidate(); } private void showExampleCard(Keyword keyword) { final List<MagicCardDefinition> cards = keyword.getExampleCards(); if (!cards.isEmpty()) { cardsCanvas.setCard(cards.get(MagicRandom.nextRNGInt(cards.size()))); } else { cardsCanvas.clear(); } } void setKeyword(Keyword keyword) { keywordLabel.setText(keyword.getName()); textLabel.setText(keyword.getDescriptionAsHtml()); drawCardImages(keyword); refreshLayout(); } }