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);
47 public Component getListCellRendererComponent(JList list, Object value, int index,
48 boolean isSelected, boolean cellHasFocus){
49 LRItem item = (LRItem)value;
51 left.setText(String.valueOf(item.getLeft()));
52 right.setText(String.valueOf(item.getRight()));
55 if(item.getIcon() != null){
56 left.setIcon(item.getIcon());
59 setBackground(isSelected ? SystemColor.textHighlight: Color.white);
60 left.setBackground(isSelected ? SystemColor.textHighlight: Color.white);
61 right.setBackground(isSelected ? SystemColor.textHighlight: Color.white);
62 left.setForeground(isSelected ? Color.white: Color.black);
63 right.setForeground(isSelected ? Color.gray.brighter(): Color.gray);
68 public static class LRItem{
73 public LRItem(Icon icon, Object left, Object right){
78 public LRItem(Object left, Object right){
83 public Icon getIcon(){
87 public void setIcon(Icon icon){
91 public Object getLeft(){
95 public void setLeft(Object left){
99 public Object getRight(){
103 public void setRight(Object right){