42 lines
1.1 KiB
Java
42 lines
1.1 KiB
Java
package dev.kske.chess.ui;
|
|
|
|
import java.awt.Color;
|
|
import java.awt.Component;
|
|
|
|
import javax.swing.JLabel;
|
|
import javax.swing.JList;
|
|
import javax.swing.ListCellRenderer;
|
|
import javax.swing.border.EmptyBorder;
|
|
|
|
import dev.kske.chess.board.MoveNode;
|
|
|
|
/**
|
|
* Project: <strong>Chess</strong><br>
|
|
* File: <strong>MoveNodeRenderer.java</strong><br>
|
|
* Created: <strong>9 Oct 2019</strong><br>
|
|
*
|
|
* @since Chess v0.5-alpha
|
|
* @author Kai S. K. Engelbart
|
|
*/
|
|
public class MoveNodeRenderer extends JLabel
|
|
implements ListCellRenderer<MoveNode> {
|
|
|
|
private static final long serialVersionUID = 5242015788752442446L;
|
|
|
|
@Override
|
|
public Component getListCellRendererComponent(
|
|
JList<? extends MoveNode> list, MoveNode node, int index,
|
|
boolean isSelected, boolean cellHasFocus
|
|
) {
|
|
setBorder(new EmptyBorder(5, 5, 5, 5));
|
|
|
|
int numVariations
|
|
= node.hasVariations() ? node.getVariations().size() : 0;
|
|
setText(String.format("%s (%d)", node.move.toLAN(), numVariations));
|
|
|
|
setBackground(isSelected ? Color.red : Color.white);
|
|
setOpaque(true);
|
|
return this;
|
|
}
|
|
}
|