2929
3030package org .scijava .ui .swing .widget ;
3131
32+ import java .awt .Component ;
3233import java .awt .event .ActionEvent ;
3334import java .awt .event .ActionListener ;
3435
36+ import javax .swing .DefaultListCellRenderer ;
3537import javax .swing .JComboBox ;
38+ import javax .swing .JLabel ;
39+ import javax .swing .JList ;
3640import javax .swing .JPanel ;
41+ import javax .swing .ListCellRenderer ;
3742
43+ import org .scijava .object .ObjectService ;
3844import org .scijava .plugin .Plugin ;
3945import org .scijava .widget .InputWidget ;
4046import org .scijava .widget .ObjectWidget ;
@@ -76,6 +82,7 @@ public void set(final WidgetModel model) {
7682 setToolTip (comboBox );
7783 getComponent ().add (comboBox );
7884 comboBox .addActionListener (this );
85+ comboBox .setRenderer (new NamedObjectCellRenderer ());
7986
8087 refreshWidget ();
8188 }
@@ -96,4 +103,17 @@ public void doRefresh() {
96103 comboBox .setSelectedItem (value );
97104 }
98105
106+ private class NamedObjectCellRenderer implements ListCellRenderer <Object > {
107+
108+ private DefaultListCellRenderer defaultRenderer = new DefaultListCellRenderer ();
109+
110+ @ Override
111+ public Component getListCellRendererComponent (JList <?> list , Object value , int index , boolean isSelected ,
112+ boolean cellHasFocus ) {
113+ JLabel renderer = (JLabel ) defaultRenderer .getListCellRendererComponent (list , value , index , isSelected , cellHasFocus );
114+ renderer .setText (context ().service (ObjectService .class ).getName (value ));
115+ renderer .setToolTipText (value .toString ());
116+ return renderer ;
117+ }
118+ }
99119}
0 commit comments