1 package fr.ifremer.quadrige3.ui.swing.component;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 import fr.ifremer.quadrige3.core.dao.technical.Assert;
25 import fr.ifremer.quadrige3.core.dao.technical.enumeration.EnumValue;
26
27 import javax.swing.DefaultComboBoxModel;
28 import javax.swing.DefaultListCellRenderer;
29 import javax.swing.JComboBox;
30 import javax.swing.JList;
31 import java.awt.Component;
32
33
34
35
36 @SuppressWarnings("unchecked")
37 public class EnumValueComboBox<V extends EnumValue> extends JComboBox<V> {
38
39 public <E extends Enum<E>> EnumValueComboBox(Class<E> enumClass) {
40 super();
41 Assert.isTrue(EnumValue.class.isAssignableFrom(enumClass), "The enumeration class must implement EnumValue");
42
43 setModel(new DefaultComboBoxModel<>((V[]) enumClass.getEnumConstants()));
44
45 setRenderer(new DefaultListCellRenderer() {
46 @Override
47 public Component getListCellRendererComponent(JList<?> list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
48 value = ((V) value).getLabel();
49 return super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
50 }
51 });
52 }
53
54 @Override
55 public V getSelectedItem() {
56 return (V) super.getSelectedItem();
57 }
58 }