/*
* @(#)ColorPickerDialog.java
*
* $Date: 2009-05-31 17:53:28 -0500 (Sun, 31 May 2009) $
*
* Copyright (c) 2009 by Jeremy Wood.
* All rights reserved.
*
* The copyright of this software is owned by Jeremy Wood.
* You may not use, copy or modify this software, except in
* accordance with the license agreement you entered into with
* Jeremy Wood. For details see accompanying license terms.
*
* This software is probably, but not necessarily, discussed here:
* http://javagraphics.blogspot.com/
*
* And the latest version should be available here:
* https://javagraphics.dev.java.net/
*/
package com.bric.swing;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dialog;
import java.awt.Frame;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JPanel;
/** This wraps a <code>ColorPicker</code> in a simple dialog with "OK" and "Cancel" options.
* <P>(This object is used by the static calls in <code>ColorPicker</code> to show a dialog.)
*
*/
class ColorPickerDialog extends JDialog {
private static final long serialVersionUID = 1L;
ColorPicker cp;
int alpha;
JButton ok = new JButton(ColorPicker.strings.getObject("OK").toString());
JButton cancel = new JButton(ColorPicker.strings.getObject("Cancel").toString());
Color returnValue = null;
ActionListener buttonListener = new ActionListener() {
public void actionPerformed(ActionEvent e) {
Object src = e.getSource();
if(src==ok) {
returnValue = cp.getColor();
}
setVisible(false);
}
};
public ColorPickerDialog(Frame owner, Color color,boolean includeOpacity) {
super(owner);
initialize(owner,color,includeOpacity);
}
public ColorPickerDialog(Dialog owner, Color color,boolean includeOpacity) {
super(owner);
initialize(owner,color,includeOpacity);
}
private void initialize(Component owner,Color color,boolean includeOpacity) {
cp = new ColorPicker(true,includeOpacity);
setModal(true);
setResizable(false);
getContentPane().setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
c.gridx = 0; c.gridy = 0;
c.weightx = 1; c.weighty = 1; c.fill = GridBagConstraints.BOTH;
c.gridwidth = GridBagConstraints.REMAINDER;
c.insets = new Insets(10,10,10,10);
getContentPane().add(cp,c);
c.gridy++; c.gridwidth = 1;
getContentPane().add(new JPanel(),c);
c.gridx++; c.weightx = 0;
getContentPane().add(cancel,c);
c.gridx++; c.weightx = 0;
getContentPane().add(ok,c);
cp.setRGB(color.getRed(), color.getGreen(), color.getBlue());
cp.setOpacity( color.getAlpha() );
alpha = color.getAlpha();
pack();
setLocationRelativeTo(owner);
ok.addActionListener(buttonListener);
cancel.addActionListener(buttonListener);
getRootPane().setDefaultButton(ok);
}
/** @return the color committed when the user clicked 'OK'. Note this returns <code>null</code>
* if the user canceled this dialog, or exited via the close decoration.
*/
public Color getColor() {
return returnValue;
}
}