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.DefaultListModel; import javax.swing.JLabel; import javax.swing.JList; /** * * @author Herminaƫl Rougier * @author Damien Jouanno * * @param <E> */ public abstract class AbstractList<E> extends JList<E> { /********************************************************************************************** * [BLOCK] STATIC FIELDS **********************************************************************************************/ /** The serial version UID */ private static final long serialVersionUID = -2006996730740714705L; /********************************************************************************************** * [BLOCK] FIELDS **********************************************************************************************/ /** The list model */ protected final DefaultListModel<E> model; /********************************************************************************************** * [BLOCK] CONSTRUCTOR **********************************************************************************************/ /** * */ protected AbstractList() { super(); model = new DefaultListModel<E>(); setModel(model); } /********************************************************************************************** * [BLOCK] PUBLIC METHODS **********************************************************************************************/ /** * * @param element */ public void addElement(final E element) { model.addElement(element); } /** * * @param element */ public void removeElement(final E element) { model.removeElement(element); } /** * */ public void removeAllElements() { model.removeAllElements(); } /** * */ public abstract void enableSelection(); /** * */ public void disableSelection() { setCellRenderer(new DefaultListCellRenderer() { /** The serial version UID */ private static final long serialVersionUID = 4903155214602658319L; /* * (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, false, false); 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)); return this; } }); } }