/***************************************************
*
* cismet GmbH, Saarbruecken, Germany
*
* ... and it just works.
*
****************************************************/
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package de.cismet.cids.custom.switchon;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.text.NumberFormat;
import java.util.List;
import java.util.Locale;
import javax.swing.ListSelectionModel;
import javax.swing.UIManager;
import javax.swing.event.TableModelListener;
import javax.swing.table.TableModel;
/**
* DOCUMENT ME!
*
* @author jlauter
* @version $Revision$, $Date$
*/
public class RaineventTablePanel extends javax.swing.JPanel {
//~ Instance fields --------------------------------------------------------
private final transient Rainevent rainevent;
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JLabel lblTableHeader;
private javax.swing.JScrollPane spTable;
private javax.swing.JTable tblRainevent;
// End of variables declaration//GEN-END:variables
//~ Constructors -----------------------------------------------------------
/**
* Creates new form RaineventTablePanel.
*
* @param rainevent DOCUMENT ME!
*/
public RaineventTablePanel(final Rainevent rainevent) {
this.rainevent = rainevent;
initComponents();
init();
}
//~ Methods ----------------------------------------------------------------
/**
* DOCUMENT ME!
*/
private void init() {
tblRainevent.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
tblRainevent.getTableHeader().setReorderingAllowed(false);
tblRainevent.setCellSelectionEnabled(true);
final List<Double> precipations = rainevent.getPrecipitations();
final Object[][] data = new Object[1][precipations.size()];
int i = 0;
for (final Double d : precipations) {
final NumberFormat nf = new DecimalFormat("#0.00", new DecimalFormatSymbols(Locale.ENGLISH));
final String formated = nf.format(d.doubleValue());
data[0][i++] = Double.parseDouble(formated);
}
lblTableHeader.setForeground(UIManager.getColor("TableHeader.foreground"));
lblTableHeader.setBackground(UIManager.getColor("TableHeader.background"));
lblTableHeader.setBorder(UIManager.getBorder("TableHeader.cellBorder"));
lblTableHeader.setFont(UIManager.getFont("TableHeader.font"));
tblRainevent.setModel(new RaineventTableModel(data, rainevent.getInterval()));
// spTable.setPreferredSize(tblRainevent.getPreferredSize());
// spTable.setMaximumSize(tblRainevent.getPreferredSize());
// spTable.setMinimumSize(tblRainevent.getPreferredSize());
tblRainevent.setPreferredScrollableViewportSize(tblRainevent.getPreferredSize());
}
/**
* 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;
spTable = new javax.swing.JScrollPane();
tblRainevent = new javax.swing.JTable();
lblTableHeader = new javax.swing.JLabel();
setOpaque(false);
setLayout(new java.awt.GridBagLayout());
spTable.setViewportBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 1));
spTable.setMaximumSize(new java.awt.Dimension(300, 65));
spTable.setPreferredSize(new java.awt.Dimension(300, 65));
tblRainevent.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 1));
tblRainevent.setModel(new javax.swing.table.DefaultTableModel(
new Object[][] {},
new String[] {}));
tblRainevent.getTableHeader().setReorderingAllowed(false);
spTable.setViewportView(tblRainevent);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.weighty = 1.0;
add(spTable, gridBagConstraints);
lblTableHeader.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
lblTableHeader.setText(org.openide.util.NbBundle.getMessage(
RaineventTablePanel.class,
"RaineventTablePanel.lblTableHeader.text")); // NOI18N
lblTableHeader.setOpaque(true);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
add(lblTableHeader, gridBagConstraints);
} // </editor-fold>//GEN-END:initComponents
//~ Inner Classes ----------------------------------------------------------
/**
* DOCUMENT ME!
*
* @version $Revision$, $Date$
*/
private static final class RaineventTableModel implements TableModel {
//~ Instance fields ----------------------------------------------------
private final Object[][] data;
private final int interval;
//~ Constructors -------------------------------------------------------
/**
* Creates a new RaineventTableModel object.
*
* @param data DOCUMENT ME!
* @param interval DOCUMENT ME!
*/
public RaineventTableModel(final Object[][] data, final int interval) {
this.data = data;
this.interval = interval;
}
//~ Methods ------------------------------------------------------------
@Override
public int getRowCount() {
if ((data != null) && (data.length > 0)) {
return data.length;
}
return 0;
}
@Override
public int getColumnCount() {
if ((data != null) && (data.length > 0)) {
return data[0].length;
}
return 0;
}
@Override
public String getColumnName(final int i) {
if ((data != null) && (i < data[0].length)) {
final String time = String.valueOf(interval + (interval * i));
return time;
}
return null;
}
@Override
public Class<?> getColumnClass(final int i) {
return Double.class;
}
@Override
public boolean isCellEditable(final int i, final int i1) {
return false;
}
@Override
public Object getValueAt(final int i, final int i1) {
if ((data != null) && (i < data.length) && (i1 < data[i].length)) {
return data[i][i1];
}
return null;
}
@Override
public void setValueAt(final Object o, final int i, final int i1) {
}
@Override
public void addTableModelListener(final TableModelListener tl) {
}
@Override
public void removeTableModelListener(final TableModelListener tl) {
}
}
}