Skip to content

Commit e1ccafa

Browse files
committed
Support named objects in (Swing)ObjectWidget
The dropdown list now shows the object names (retrieved by ObjectService.getName), while the tooltip shows the object's toString() value for each entry.
1 parent 557d792 commit e1ccafa

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

src/main/java/org/scijava/ui/swing/widget/SwingObjectWidget.java

+20
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,18 @@
2929

3030
package org.scijava.ui.swing.widget;
3131

32+
import java.awt.Component;
3233
import java.awt.event.ActionEvent;
3334
import java.awt.event.ActionListener;
3435

36+
import javax.swing.DefaultListCellRenderer;
3537
import javax.swing.JComboBox;
38+
import javax.swing.JLabel;
39+
import javax.swing.JList;
3640
import javax.swing.JPanel;
41+
import javax.swing.ListCellRenderer;
3742

43+
import org.scijava.object.ObjectService;
3844
import org.scijava.plugin.Plugin;
3945
import org.scijava.widget.InputWidget;
4046
import 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

Comments
 (0)