package magic.ui.widget.deck; import java.awt.Color; import java.awt.Component; import java.awt.Font; import java.awt.font.TextAttribute; import java.util.Map; import java.util.HashMap; import javax.swing.DefaultListCellRenderer; import javax.swing.JList; import magic.model.MagicDeck; @SuppressWarnings("serial") class DecksListCellRenderer extends DefaultListCellRenderer { private static Font invalidDeckFont = null; @Override public Component getListCellRendererComponent(JList<?> list, Object value, int index, boolean isSelected, boolean cellHasFocus) { final MagicDeck deck = (MagicDeck) value; final Component c = super.getListCellRendererComponent(list, deck.getName(), index, isSelected, cellHasFocus); if (deck.isValid() == false) { if (invalidDeckFont == null) { final Map<TextAttribute, Object> attributes = new HashMap<>(); attributes.put(TextAttribute.STRIKETHROUGH, TextAttribute.STRIKETHROUGH_ON); invalidDeckFont = c.getFont().deriveFont(attributes); } c.setFont(invalidDeckFont); c.setForeground(isSelected ? list.getSelectionForeground() : Color.RED.darker()); } return c; } }