Skip to content

Commit 20ef16e

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 a993ff3 commit 20ef16e

File tree

2 files changed

+23
-0
lines changed

2 files changed

+23
-0
lines changed

pom.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,9 @@
103103
Wisconsin-Madison.</license.copyrightOwners>
104104
<license.projectName>SciJava UI components for Java Swing.</license.projectName>
105105

106+
<scijava-common.version>2.81.1-SNAPSHOT</scijava-common.version>
107+
<enforcer.skip>true</enforcer.skip>
108+
106109
<!-- NB: Deploy releases to the SciJava Maven repository. -->
107110
<releaseProfiles>deploy-to-scijava</releaseProfiles>
108111
</properties>

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

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,18 @@
3030

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

33+
import java.awt.Component;
3334
import java.awt.event.ActionEvent;
3435
import java.awt.event.ActionListener;
3536

37+
import javax.swing.DefaultListCellRenderer;
3638
import javax.swing.JComboBox;
39+
import javax.swing.JLabel;
40+
import javax.swing.JList;
3741
import javax.swing.JPanel;
42+
import javax.swing.ListCellRenderer;
3843

44+
import org.scijava.object.ObjectService;
3945
import org.scijava.plugin.Plugin;
4046
import org.scijava.widget.InputWidget;
4147
import org.scijava.widget.ObjectWidget;
@@ -77,6 +83,7 @@ public void set(final WidgetModel model) {
7783
setToolTip(comboBox);
7884
getComponent().add(comboBox);
7985
comboBox.addActionListener(this);
86+
comboBox.setRenderer(new NamedObjectCellRenderer());
8087

8188
refreshWidget();
8289
}
@@ -97,4 +104,17 @@ public void doRefresh() {
97104
comboBox.setSelectedItem(value);
98105
}
99106

107+
private class NamedObjectCellRenderer implements ListCellRenderer<Object> {
108+
109+
private DefaultListCellRenderer defaultRenderer = new DefaultListCellRenderer();
110+
111+
@Override
112+
public Component getListCellRendererComponent(JList<?> list, Object value, int index, boolean isSelected,
113+
boolean cellHasFocus) {
114+
JLabel renderer = (JLabel) defaultRenderer.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
115+
renderer.setText(context().service(ObjectService.class).getName(value));
116+
renderer.setToolTipText(value.toString());
117+
return renderer;
118+
}
119+
}
100120
}

0 commit comments

Comments
 (0)