Skip to content

Commit 7b4a234

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 7b4a234

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

pom.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,8 @@
102102
<license.copyrightOwners>SciJava developers.</license.copyrightOwners>
103103
<license.projectName>SciJava UI components for Java Swing.</license.projectName>
104104

105+
<scijava-common.version>2.82.0</scijava-common.version>
106+
105107
<!-- NB: Deploy releases to the SciJava Maven repository. -->
106108
<releaseProfiles>deploy-to-scijava</releaseProfiles>
107109

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

Lines changed: 20 additions & 0 deletions
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)