OSDN Git Service

remove Revision tag
[stigmata/stigmata.git] / src / main / java / jp / sourceforge / stigmata / ui / swing / BirthmarkServiceListCellRenderer.java
1 package jp.sourceforge.stigmata.ui.swing;
2
3 /*
4  * $Id$
5  */
6
7 import java.awt.BorderLayout;
8 import java.awt.Color;
9 import java.awt.Component;
10 import java.awt.Dimension;
11
12 import javax.swing.BorderFactory;
13 import javax.swing.JLabel;
14 import javax.swing.JList;
15 import javax.swing.JPanel;
16 import javax.swing.ListCellRenderer;
17 import javax.swing.UIManager;
18 import javax.swing.border.Border;
19 import javax.swing.border.EmptyBorder;
20
21 import jp.sourceforge.stigmata.spi.BirthmarkSpi;
22
23 /**
24  * 
25  * @author Haruaki TAMADA
26  */
27 public class BirthmarkServiceListCellRenderer extends JPanel implements ListCellRenderer{
28     private static final long serialVersionUID = 3254763527508235L;
29     private static Border noFocusBorder = new EmptyBorder(1, 1, 1, 1);
30
31     private final JLabel leftLabel  = new JLabel();
32     private final JLabel rightLabel = new JLabel();
33
34     public BirthmarkServiceListCellRenderer(Dimension dim, int rightw){
35         super(new BorderLayout());
36         leftLabel.setOpaque(true);
37         rightLabel.setOpaque(true);
38         this.setOpaque(true);
39         leftLabel.setBorder(BorderFactory.createEmptyBorder(0,2,0,0));
40         rightLabel.setPreferredSize(new Dimension(rightw, 0));
41         rightLabel.setBorder(BorderFactory.createEmptyBorder(0,5,0,0));
42         this.add(leftLabel, BorderLayout.CENTER);
43         this.add(rightLabel, BorderLayout.EAST);
44         this.setPreferredSize(dim);
45     }
46
47     @Override
48     public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean hasFocus){
49         if(value instanceof BirthmarkSpi){
50             BirthmarkSpi service = (BirthmarkSpi)value;
51             leftLabel.setText(service.getDisplayType());
52             rightLabel.setText("(" + service.getType() + ")");
53         }
54         else{
55             leftLabel.setText(String.valueOf(value));
56             rightLabel.setText("");
57         }
58         if(isSelected){
59             setBackground(list.getSelectionBackground());
60             setForeground(list.getSelectionForeground());
61             leftLabel.setBackground(list.getSelectionBackground());
62             leftLabel.setForeground(list.getSelectionForeground());
63             rightLabel.setBackground(list.getSelectionBackground());
64             rightLabel.setForeground(Color.gray.brighter());
65         }
66         else{
67             setBackground(list.getBackground());
68             setForeground(list.getForeground());
69             leftLabel.setBackground(list.getBackground());
70             leftLabel.setForeground(list.getForeground());
71             rightLabel.setBackground(list.getBackground());
72             rightLabel.setForeground(Color.gray);
73         }
74         Border border = null;
75         if(hasFocus) {
76             if (isSelected) {
77                 border = UIManager.getBorder("List.focusSelectedCellHighlightBorder");
78             }
79             if (border == null) {
80                 border = UIManager.getBorder("List.focusCellHighlightBorder");
81             }
82         } else {
83             border = noFocusBorder;
84         }
85         setBorder(border);
86
87         return this;
88     }
89 }