OSDN Git Service

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