// License: GPL. Copyright 2007 by Immanuel Scholz and others package org.openstreetmap.josm.plugins.taggingpresettester; import java.awt.Component; import java.awt.Image; import javax.swing.Action; import javax.swing.DefaultListCellRenderer; import javax.swing.ImageIcon; import javax.swing.JComponent; import javax.swing.JLabel; import javax.swing.JList; import org.openstreetmap.josm.gui.tagging.presets.TaggingPreset; import org.openstreetmap.josm.tools.ImageProvider; final public class TaggingCellRenderer extends DefaultListCellRenderer { @Override public Component getListCellRendererComponent(JList<?> list, Object value, int index, boolean isSelected, boolean cellHasFocus) { TaggingPreset a = null; if (value instanceof TaggingPreset) a = (TaggingPreset)value; String name = a == null ? null : (String)a.getValue(Action.NAME); if (name == null) return super.getListCellRendererComponent(list, "", index, false, false); JComponent c = (JComponent)super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); JLabel l = new JLabel(name); l.setForeground(c.getForeground()); l.setBackground(c.getBackground()); l.setFont(c.getFont()); l.setBorder(c.getBorder()); ImageIcon icon = (ImageIcon)a.getValue(Action.SMALL_ICON); if (icon != null) l.setIcon(new ImageIcon(icon.getImage().getScaledInstance(16, 16, Image.SCALE_SMOOTH))); else { if (a.types == null) icon = ImageProvider.getIfAvailable("data", "empty"); else if (a.types.size() != 1) icon = ImageProvider.getIfAvailable("data", "object"); else icon = ImageProvider.getIfAvailable(a.types.iterator().next().getIconName()); if (icon != null) l.setIcon(icon); } l.setOpaque(true); return l; } }