From: gmungoc Date: Tue, 7 Nov 2017 09:07:03 +0000 (+0000) Subject: JAL-2069 JAL-2808 utility method to build combobox with tooltips X-Git-Tag: Release_2_11_0~149 X-Git-Url: http://source.jalview.org/gitweb/?a=commitdiff_plain;h=7187810b17d6d9be06208dd596e08fa4a5709b75;p=jalview.git JAL-2069 JAL-2808 utility method to build combobox with tooltips --- diff --git a/src/jalview/gui/JvSwingUtils.java b/src/jalview/gui/JvSwingUtils.java index 0a765cb..ef96fa6 100644 --- a/src/jalview/gui/JvSwingUtils.java +++ b/src/jalview/gui/JvSwingUtils.java @@ -24,14 +24,19 @@ import jalview.util.MessageManager; import java.awt.BorderLayout; import java.awt.Color; +import java.awt.Component; import java.awt.Font; import java.awt.GridLayout; import java.awt.Rectangle; import java.awt.event.ActionListener; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.util.List; import java.util.Objects; import javax.swing.AbstractButton; import javax.swing.JButton; +import javax.swing.JComboBox; import javax.swing.JComponent; import javax.swing.JLabel; import javax.swing.JMenu; @@ -304,4 +309,46 @@ public final class JvSwingUtils comp.setFont(JvSwingUtils.getLabelFont()); } + /** + * A helper method to build a drop-down choice of values, with tooltips for + * the entries + * + * @param entries + * @param tooltips + */ + public static JComboBox buildComboWithTooltips( + List entries, List tooltips) + { + JComboBox combo = new JComboBox<>(); + final ComboBoxTooltipRenderer renderer = new ComboBoxTooltipRenderer(); + combo.setRenderer(renderer); + for (String attName : entries) + { + combo.addItem(attName); + } + renderer.setTooltips(tooltips); + final MouseAdapter mouseListener = new MouseAdapter() + { + @Override + public void mouseEntered(MouseEvent e) + { + int j = combo.getSelectedIndex(); + if (j > -1) + { + combo.setToolTipText(tooltips.get(j)); + } + } + @Override + public void mouseExited(MouseEvent e) + { + combo.setToolTipText(null); + } + }; + for (Component c : combo.getComponents()) + { + c.addMouseListener(mouseListener); + } + return combo; + } + }