package joshua.ui.hypergraph_visualizer; import java.awt.Color; import java.awt.Component; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.ListCellRenderer; import joshua.corpus.vocab.SymbolTable; import joshua.decoder.ff.tm.Rule; import joshua.decoder.hypergraph.HyperEdge; public class HyperEdgeListCellRenderer implements ListCellRenderer { private SymbolTable vocab; public HyperEdgeListCellRenderer(SymbolTable vocab) { this.vocab = vocab; } public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { Rule r = ((HyperEdge) value).getRule(); double score = ((HyperEdge) value).bestDerivationLogP; String lhs = vocab.getWord(r.getLHS()); String french = vocab.getWords(r.getFrench()); String english = vocab.getWords(r.getEnglish()); String rule = String.format("%f %s -> { %s ; %s }", score, lhs, french, english); JLabel label = new JLabel(rule); label.setOpaque(true); if (isSelected) { label.setBackground(Color.gray); } else { label.setBackground(Color.white); } return label; } }