/***************************************************
*
* cismet GmbH, Saarbruecken, Germany
*
* ... and it just works.
*
****************************************************/
package de.cismet.cids.editors;
import org.jdesktop.beansbinding.Converter;
import org.jdesktop.beansbinding.Validator;
import java.awt.Color;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import javax.swing.JColorChooser;
import de.cismet.cids.editors.converters.ColorToStringConverter;
/**
* DOCUMENT ME!
*
* @author jruiz
* @version $Revision$, $Date$
*/
public class DefaultBindableColorChooser extends javax.swing.JPanel implements Bindable {
//~ Static fields/initializers ---------------------------------------------
public static final String PROP_TIMESTAMP = "color"; // NOI18N
//~ Instance fields --------------------------------------------------------
private final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(this.getClass());
private Color color;
private boolean readOnly = false;
private PropertyChangeSupport propertyChangeSupport;
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton btnChooseColor;
private javax.swing.JPanel jPanel1;
private org.jdesktop.beansbinding.BindingGroup bindingGroup;
// End of variables declaration//GEN-END:variables
//~ Constructors -----------------------------------------------------------
/**
* Creates new form DefaultBindableColorChooser.
*/
public DefaultBindableColorChooser() {
initComponents();
}
//~ Methods ----------------------------------------------------------------
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public PropertyChangeSupport getPropertyChangeSupport() {
if (propertyChangeSupport == null) {
propertyChangeSupport = new PropertyChangeSupport(this);
}
return propertyChangeSupport;
}
/**
* Add PropertyChangeListener.
*
* @param listener DOCUMENT ME!
*/
@Override
public void addPropertyChangeListener(final PropertyChangeListener listener) {
if (listener != null) {
getPropertyChangeSupport().addPropertyChangeListener(listener);
}
}
/**
* Remove PropertyChangeListener.
*
* @param listener DOCUMENT ME!
*/
@Override
public void removePropertyChangeListener(final PropertyChangeListener listener) {
getPropertyChangeSupport().removePropertyChangeListener(listener);
}
/**
* This method is called from within the constructor to initialize the form. WARNING: Do NOT modify this code. The
* content of this method is always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
final java.awt.GridBagConstraints gridBagConstraints;
bindingGroup = new org.jdesktop.beansbinding.BindingGroup();
jPanel1 = new javax.swing.JPanel();
btnChooseColor = new javax.swing.JButton();
setOpaque(false);
setLayout(new java.awt.GridBagLayout());
jPanel1.setLayout(new java.awt.BorderLayout());
btnChooseColor.setToolTipText("Hier klicken um eine Farbe auszuwählen");
final org.jdesktop.beansbinding.Binding binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(
org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE,
this,
org.jdesktop.beansbinding.ELProperty.create("${color}"),
btnChooseColor,
org.jdesktop.beansbinding.BeanProperty.create("background"));
bindingGroup.addBinding(binding);
btnChooseColor.addActionListener(new java.awt.event.ActionListener() {
@Override
public void actionPerformed(final java.awt.event.ActionEvent evt) {
btnChooseColorActionPerformed(evt);
}
});
jPanel1.add(btnChooseColor, java.awt.BorderLayout.CENTER);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.weighty = 1.0;
add(jPanel1, gridBagConstraints);
bindingGroup.bind();
} // </editor-fold>//GEN-END:initComponents
/**
* DOCUMENT ME!
*
* @param evt DOCUMENT ME!
*/
private void btnChooseColorActionPerformed(final java.awt.event.ActionEvent evt) { //GEN-FIRST:event_btnChooseColorActionPerformed
if (!readOnly) {
final Color newColor = JColorChooser.showDialog(this, "Farbe auswählen", color);
if (newColor != null) {
setColor(newColor);
}
}
} //GEN-LAST:event_btnChooseColorActionPerformed
@Override
public String getBindingProperty() {
return PROP_TIMESTAMP; // NOI18N
}
@Override
public Converter getConverter() {
return new ColorToStringConverter();
}
@Override
public Validator getValidator() {
return null;
}
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public Color getColor() {
return color;
}
@Override
public Object getNullSourceValue() {
return null;
}
@Override
public Object getErrorSourceValue() {
return null;
}
/**
* DOCUMENT ME!
*
* @param color DOCUMENT ME!
*/
public void setColor(final Color color) {
if (log.isDebugEnabled()) {
log.debug("setColor: " + color); // NOI18N
}
this.color = color;
getPropertyChangeSupport().firePropertyChange(PROP_TIMESTAMP, null, getColor());
}
/**
* DOCUMENT ME!
*
* @param readOnly DOCUMENT ME!
*/
public void setReadOnly(final boolean readOnly) {
this.readOnly = readOnly;
btnChooseColor.setEnabled(readOnly);
}
}