package call.gui; import java.awt.BorderLayout; import java.awt.Component; import javax.swing.BorderFactory; import javax.swing.JComponent; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JPanel; import javax.swing.ListCellRenderer; import call.Contact; public class ContactListCellRenderer implements ListCellRenderer<Contact> { @Override public Component getListCellRendererComponent(JList<? extends Contact> list, Contact value, int index, boolean isSelected, boolean cellHasFocus) { JPanel cell = new JPanel(); cell.setBorder(BorderFactory.createEmptyBorder()); cell.setBorder(BorderFactory.createEmptyBorder(3, 3, 3, 3)); BorderLayout layout = new BorderLayout(); layout.setHgap(5); cell.setLayout(layout); setColors(cell, list, isSelected); JLabel textlabel = new JLabel(); textlabel.setText(value.toString()); textlabel.setFont(Resources.FONT_LIST); setColors(textlabel, list, isSelected); cell.add(textlabel, BorderLayout.CENTER); JLabel availabilitylabel = new JLabel(); availabilitylabel.setIcon(Resources.getIcon(value)); availabilitylabel.setToolTipText(Resources.getToolTipText(value)); setColors(availabilitylabel, list, isSelected); cell.add(availabilitylabel, BorderLayout.WEST); return cell; } private void setColors(JComponent component, JList<? extends Contact> list, boolean isSelected) { component.setOpaque(true); if (isSelected) { component.setBackground(list.getSelectionBackground()); component.setForeground(list.getSelectionForeground()); } else { component.setBackground(list.getBackground()); component.setForeground(list.getForeground()); } } }