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