package magic.ui.widget.deck.stats;
import java.awt.Color;
import java.awt.Font;
import java.util.ArrayList;
import java.util.List;
import javax.swing.BorderFactory;
import javax.swing.JLabel;
import javax.swing.JPanel;
import magic.data.CardStatistics;
import magic.model.MagicColor;
import magic.translate.MText;
import magic.ui.MagicImages;
import net.miginfocom.swing.MigLayout;
@SuppressWarnings("serial")
class CardColorStatsPanel extends JPanel {
// translatable strings
private static final String _S3 = "Mono: %d • Multi: %d • Colorless: %d";
private static final String _S4 = "%d • Mono: %d • Lands: %d";
private static final String _S1 = "Color distribution";
private final List<JLabel> lines = new ArrayList<>();
CardColorStatsPanel() {
setOpaque(false);
setLayout(new MigLayout("flowy, insets 0 2 2 2, gap 0"));
}
void setStats(CardStatistics stats) {
lines.clear();
for (int i = 0; i < stats.colorCount.length; i++) {
if (stats.colorCount[i] > 0) {
final MagicColor color = MagicColor.values()[i];
final JLabel label = new JLabel(MagicImages.getIcon(color.getManaType()));
label.setHorizontalAlignment(JLabel.LEFT);
label.setIconTextGap(5);
label.setText(MText.get(_S4,
stats.colorCount[i],
stats.colorMono[i],
stats.colorLands[i])
);
lines.add(label);
}
}
final JLabel allLabel = new JLabel(MText.get(_S3,
stats.monoColor,
stats.multiColor,
stats.colorless)
);
allLabel.setFont(allLabel.getFont().deriveFont(Font.ITALIC));
lines.add(allLabel);
final JPanel panel = new JPanel(new MigLayout("flowy, insets 4"));
panel.setBorder(BorderFactory.createMatteBorder(1, 1, 1, 1, Color.GRAY));
panel.setOpaque(false);
for (final JLabel line : lines) {
panel.add(line, "w 100%");
}
removeAll();
add(DeckStatisticsViewer.getCaptionLabel(MText.get(_S1)), "w 100%");
add(panel, "w 100%");
revalidate();
}
}