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