/***************************************************
*
* cismet GmbH, Saarbruecken, Germany
*
* ... and it just works.
*
****************************************************/
package de.cismet.cids.custom.switchon.objectrenderer;
import Sirius.navigator.ui.RequestsFullSizeComponent;
import org.openide.util.NbBundle;
import java.awt.BorderLayout;
import java.awt.Color;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;
import de.cismet.cids.custom.switchon.AbstractCidsBeanRenderer;
import de.cismet.cids.custom.switchon.Rainevent;
import de.cismet.cids.custom.switchon.RaineventPanel;
/**
* DOCUMENT ME!
*
* @author martin.scholl@cismet.de
* @version 1.0
*/
public class RaineventRenderer extends AbstractCidsBeanRenderer implements RequestsFullSizeComponent {
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JCheckBox chkForecast;
private javax.swing.JLabel lblDescription;
private javax.swing.JLabel lblDescriptionValue;
private javax.swing.JPanel pnlRainevent;
private org.jdesktop.beansbinding.BindingGroup bindingGroup;
// End of variables declaration//GEN-END:variables
//~ Constructors -----------------------------------------------------------
/**
* Creates new form RaineventRenderer.
*/
public RaineventRenderer() {
initComponents();
}
//~ Methods ----------------------------------------------------------------
/**
* 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() {
java.awt.GridBagConstraints gridBagConstraints;
bindingGroup = new org.jdesktop.beansbinding.BindingGroup();
lblDescription = new javax.swing.JLabel();
chkForecast = new javax.swing.JCheckBox();
pnlRainevent = new javax.swing.JPanel();
lblDescriptionValue = new javax.swing.JLabel();
setOpaque(false);
setLayout(new java.awt.GridBagLayout());
lblDescription.setFont(new java.awt.Font("Lucida Grande", 1, 13)); // NOI18N
lblDescription.setText(org.openide.util.NbBundle.getMessage(
RaineventRenderer.class,
"RaineventRenderer.lblDescription.text")); // NOI18N
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START;
gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
add(lblDescription, gridBagConstraints);
chkForecast.setText(org.openide.util.NbBundle.getMessage(
RaineventRenderer.class,
"RaineventRenderer.chkForecast.text")); // NOI18N
chkForecast.setContentAreaFilled(false);
chkForecast.addItemListener(new java.awt.event.ItemListener() {
@Override
public void itemStateChanged(final java.awt.event.ItemEvent evt) {
chkForecastItemStateChanged(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 2;
gridBagConstraints.gridy = 0;
gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
gridBagConstraints.insets = new java.awt.Insets(5, 10, 5, 0);
add(chkForecast, gridBagConstraints);
pnlRainevent.setOpaque(false);
pnlRainevent.setLayout(new java.awt.BorderLayout());
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.gridwidth = 3;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.weighty = 0.8;
add(pnlRainevent, gridBagConstraints);
lblDescriptionValue.setVerticalAlignment(javax.swing.SwingConstants.TOP);
final org.jdesktop.beansbinding.Binding binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(
org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE,
this,
org.jdesktop.beansbinding.ELProperty.create("${cidsBean.description}"),
lblDescriptionValue,
org.jdesktop.beansbinding.BeanProperty.create("text"));
binding.setSourceNullValue(NbBundle.getMessage(
RaineventRenderer.class,
"RaineventRenderer.lblDescriptionValue.text.nullSourceValue")); // NOI18N
binding.setSourceUnreadableValue(NbBundle.getMessage(
RaineventRenderer.class,
"RaineventRenderer.lblDescriptionValue.text.unreadableSourceValue")); // NOI18N
bindingGroup.addBinding(binding);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 0;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START;
gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
add(lblDescriptionValue, gridBagConstraints);
bindingGroup.bind();
} // </editor-fold>//GEN-END:initComponents
/**
* DOCUMENT ME!
*
* @param evt DOCUMENT ME!
*/
private void chkForecastItemStateChanged(final java.awt.event.ItemEvent evt) { //GEN-FIRST:event_chkForecastItemStateChanged
if (cidsBean != null) {
final Boolean forecast = (Boolean)cidsBean.getProperty("forecast");
chkForecast.setSelected(forecast.booleanValue());
}
} //GEN-LAST:event_chkForecastItemStateChanged
@Override
protected void init() {
bindingGroup.unbind();
bindingGroup.bind();
final String data = (String)cidsBean.getProperty("data");
final Integer interval = (Integer)cidsBean.getProperty("interval");
final String[] valuesSplit = data.split(":");
final List<Double> values = new ArrayList<Double>();
try {
for (final String s : valuesSplit) {
values.add(new Double(s));
}
} catch (NumberFormatException e) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
if (pnlRainevent != null) {
pnlRainevent.removeAll();
}
final JLabel lblError = new JLabel(
org.openide.util.NbBundle.getMessage(
RaineventRenderer.class,
"RaineventRenderer.init().lblError.text"));
lblError.setForeground(Color.red);
pnlRainevent.add(
lblError,
BorderLayout.CENTER);
}
});
return;
}
final Rainevent rainevent = new Rainevent(interval, values);
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
if (pnlRainevent != null) {
pnlRainevent.removeAll();
}
pnlRainevent.add(new RaineventPanel(rainevent), BorderLayout.CENTER);
RaineventRenderer.this.invalidate();
RaineventRenderer.this.validate();
}
});
}
}