Skip to content

Commit 2411016

Browse files
committed
Support named objects in ObjectWidget
1 parent a993ff3 commit 2411016

File tree

2 files changed

+24
-0
lines changed

2 files changed

+24
-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: 21 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
}
@@ -96,5 +103,19 @@ public void doRefresh() {
96103
if (value == comboBox.getSelectedItem()) return; // no change
97104
comboBox.setSelectedItem(value);
98105
}
106+
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+
return renderer;
117+
}
118+
119+
}
99120

100121
}

0 commit comments

Comments
 (0)