package com.aionemu.packetsamurai.gui; import java.awt.Component; import javax.swing.ImageIcon; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.ListCellRenderer; import com.aionemu.packetsamurai.gui.images.IconsTable; @SuppressWarnings("serial") /** * * @author Gilles Duboscq * */ public class IconComboBoxRenderer extends JLabel implements ListCellRenderer { private static final ImageIcon[] images = { IconsTable.ICON_C, IconsTable.ICON_H, IconsTable.ICON_D, IconsTable.ICON_F, IconsTable.ICON_Q, IconsTable.ICON_S, IconsTable.ICON_S_SMALL, IconsTable.ICON_B, IconsTable.ICON_X, IconsTable.ICON_FOR, IconsTable.ICON_SWITCH,}; public static final String[] types = {"c", "h", "d", "f", "Q", "S", "s", "b", "x", "forblock", "swicthblock"}; public static final String[] typesButBlocks = {"c", "h", "d", "f", "Q", "S", "s", "b", "x"}; public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { int selectedIndex = sreachIndex(value); if(selectedIndex < 0 || selectedIndex >= types.length) selectedIndex = index; if(selectedIndex < 0 || selectedIndex >= types.length) selectedIndex = 0; if (isSelected) { setBackground(list.getSelectionBackground()); setForeground(list.getSelectionForeground()); } else { setBackground(list.getBackground()); setForeground(list.getForeground()); } // Set the icon and text. If icon was null, say so. ImageIcon icon = images[selectedIndex]; setText(types[selectedIndex]); setIcon(icon); if (icon != null) { setFont(list.getFont()); } return this; } private int sreachIndex(Object value) { if(value instanceof String) { String str = (String) value; int i = 0; for(String type : types) { if(type.equals(str)) return i; i++; } } return -1; } }