package com.esir.sr.sweetsnake.component;
import java.awt.Component;
import java.awt.Font;
import javax.swing.BorderFactory;
import javax.swing.DefaultListCellRenderer;
import javax.swing.DefaultListSelectionModel;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JList;
import com.esir.sr.sweetsnake.constants.ClientGuiConstants;
import com.esir.sr.sweetsnake.dto.PlayerDTO;
import com.esir.sr.sweetsnake.enumeration.PlayerStatus;
/**
*
* @author Herminaƫl Rougier
* @author Damien Jouanno
*
*/
public class PlayersList extends AbstractList<PlayerDTO>
{
/**********************************************************************************************
* [BLOCK] STATIC FIELDS
**********************************************************************************************/
/** The serial version UID */
private static final long serialVersionUID = -7399464786914708398L;
/**********************************************************************************************
* [BLOCK] CONSTRUCTOR
**********************************************************************************************/
/**
*
*/
public PlayersList() {
super();
setSelectionModel(new DefaultListSelectionModel() {
/** The serial version UID */
private static final long serialVersionUID = 3305919865692499917L;
/*
* (non-Javadoc)
*
* @see javax.swing.DefaultListSelectionModel#setSelectionInterval(int, int)
*/
@Override
public void setSelectionInterval(final int index0, final int index1) {
if (super.isSelectedIndex(index0)) {
super.removeSelectionInterval(index0, index1);
} else {
super.addSelectionInterval(index0, index1);
}
}
});
}
/*
* (non-Javadoc)
*
* @see com.esir.sr.sweetsnake.component.AbstractList#enableSelection()
*/
@Override
public void enableSelection() {
setCellRenderer(new DefaultListCellRenderer() {
/** The serial version UID */
private static final long serialVersionUID = 5859407590339448327L;
/*
* (non-Javadoc)
*
* @see javax.swing.DefaultListCellRenderer#getListCellRendererComponent(javax.swing.JList, java.lang.Object, int,
* boolean, boolean)
*/
@Override
public Component getListCellRendererComponent(final JList<?> list, final Object value, final int index, final boolean isSelected, final boolean cellHasFocus) {
final JLabel label = (JLabel) super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
final PlayerDTO player = (PlayerDTO) value;
ImageIcon imageIcon = new ImageIcon(PlayersList.class.getResource(ClientGuiConstants.UNAVAILABLE_ICON_PATH));
if (player.getStatus() == PlayerStatus.AVAILABLE) {
imageIcon = new ImageIcon(PlayersList.class.getResource(ClientGuiConstants.AVAILABLE_ICON_PATH));
}
if (player.getStatus() == PlayerStatus.PRESENT || player.getStatus() == PlayerStatus.INVITED) {
imageIcon = new ImageIcon(PlayersList.class.getResource(ClientGuiConstants.INVITE_ICON_PATH));
}
label.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0), BorderFactory.createEmptyBorder(3, 10, 3, 10)));
label.setFont(new Font("sans-serif", Font.PLAIN, 16));
label.setIcon(imageIcon);
return label;
}
});
}
}