1 package jp.sourceforge.stigmata.ui.swing;
3 import java.awt.BorderLayout;
5 import java.awt.Component;
6 import java.awt.Dimension;
7 import java.awt.SystemColor;
9 import javax.swing.BorderFactory;
10 import javax.swing.Icon;
11 import javax.swing.JLabel;
12 import javax.swing.JList;
13 import javax.swing.JPanel;
14 import javax.swing.ListCellRenderer;
17 * copy from tempura memo available at
18 * http://terai.xrea.jp/Swing/ClippedLRComboBox.html
20 * @author Haruaki Tamada
22 public class ClippedLRListCellRenderer extends JPanel implements ListCellRenderer{
23 private static final long serialVersionUID = 32943674625674235L;
25 private final JLabel left = new JLabel();
26 private final JLabel right = new JLabel();
28 public ClippedLRListCellRenderer(Dimension dim, int rightWidth){
29 super(new BorderLayout());
31 right.setOpaque(true);
32 left.setBorder(BorderFactory.createEmptyBorder(0, 2, 0, 0));
33 right.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 0));
34 right.setPreferredSize(new Dimension(rightWidth, 0));
36 add(left, BorderLayout.CENTER);
37 add(right, BorderLayout.EAST);
38 setPreferredSize(dim);
42 public Component getListCellRendererComponent(JList list, Object value, int index,
43 boolean isSelected, boolean cellHasFocus){
44 LRItem item = (LRItem)value;
46 left.setText(String.valueOf(item.getLeft()));
47 right.setText(String.valueOf(item.getRight()));
50 if(item.getIcon() != null){
51 left.setIcon(item.getIcon());
54 setBackground(isSelected ? SystemColor.textHighlight: Color.white);
55 left.setBackground(isSelected ? SystemColor.textHighlight: Color.white);
56 right.setBackground(isSelected ? SystemColor.textHighlight: Color.white);
57 left.setForeground(isSelected ? Color.white: Color.black);
58 right.setForeground(isSelected ? Color.gray.brighter(): Color.gray);
63 public static class LRItem{
68 public LRItem(Icon icon, Object left, Object right){
73 public LRItem(Object left, Object right){
78 public Icon getIcon(){
82 public void setIcon(Icon icon){
86 public Object getLeft(){
90 public void setLeft(Object left){
94 public Object getRight(){
98 public void setRight(Object right){