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