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;
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);
}
/**