Skip to content

Commit ac3cbb1

Browse files
authored
Merge pull request #47 from scijava/named-object-widget
Support named objects in (Swing)ObjectWidget
2 parents 557d792 + e1ccafa commit ac3cbb1

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)