From: gmungoc Date: Tue, 3 Jul 2018 14:59:01 +0000 (+0100) Subject: JAL-3032 revised colour picker, now with ActionListener X-Git-Tag: Release_2_11_4_0~45^2~18^2~598 X-Git-Url: http://source.jalview.org/gitweb/?a=commitdiff_plain;h=055679f797ca8e5d52d9eb42af9951b8c83b15df;p=jalview.git JAL-3032 revised colour picker, now with ActionListener --- diff --git a/src/jalview/gui/FeatureTypeSettings.java b/src/jalview/gui/FeatureTypeSettings.java index b973708..0f997bf 100644 --- a/src/jalview/gui/FeatureTypeSettings.java +++ b/src/jalview/gui/FeatureTypeSettings.java @@ -58,6 +58,7 @@ import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JColorChooser; import javax.swing.JComboBox; +import javax.swing.JDialog; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JRadioButton; @@ -833,17 +834,38 @@ public class FeatureTypeSettings extends JalviewDialog return colourByPanel; } - private void showColourChooser(JPanel colourPanel, String key) + /** + * Shows a colour chooser dialog, and if a selection is made, updates the + * colour of the given panel + * + * @param colourPanel + * the panel whose background colour is being picked + * @param key + * message bundle key for the dialog title + */ + private void showColourChooser(final JPanel colourPanel, String key) { - Color col = JColorChooser.showDialog(this, - MessageManager.getString(key), colourPanel.getBackground()); - if (col != null) + // TODO 'final' is (currently) required here for SwingJS to work + final JColorChooser colorChooser = new JColorChooser(); + colorChooser.setColor(colourPanel.getBackground()); + + ActionListener listener = new ActionListener() { - colourPanel.setBackground(col); - colourPanel.setForeground(col); - } - colourPanel.repaint(); - colourChanged(true); + @Override + public void actionPerformed(ActionEvent e) + { + Color col = colorChooser.getColor(); + colourPanel.setBackground(col); + colourPanel.setForeground(col); + colourPanel.repaint(); + colourChanged(true); + } + }; + + JDialog dialog = JColorChooser.createDialog(this, + MessageManager.getString(key), true, colorChooser, listener, + null); + dialog.setVisible(true); } /**