private int buildHistory(ColumnSet set, JPanel panel) {
        NumberFormat formatter = new DecimalFormat("##.##");
        int numRows = getNumRows(set);
        int numChildren = getNumChildren(set);
        
        for (int r=0; r<numRows; r++) {
            Color backColor;
            if (r % 2 == 0)
                backColor = darkColor;
            else
                backColor = lightColor;
            
            int index = 0;
            
            for (int p=0; p<set.getNumParents(); p++) {
                ColumnParent parent = set.getParent(p);
                
                for (int c=0; c<parent.getNumChildren(); c++) {
                    
                    JPanel columnPanel = new JPanel();
                    JLabel columnLabel = new JLabel();
                    
                    ColumnChild child = parent.getChild(c);
                    
                    String data = "";
                    if (r >= child.getNumData() || child.getData(r) == null)
                        data = "";
                    else
                        data = child.getData(r);
                    
                    columnLabel.setText(data);
                    columnLabel.setForeground(Color.black);
                    columnLabel.setHorizontalAlignment(SwingConstants.CENTER);
                    
                    columnPanel.add(columnLabel);
                    columnPanel.setBackground(backColor);
                    
                    GridBagConstraints constraints = getChildConstraints(index == (numChildren - 1));
                    gridbag.setConstraints(columnPanel, constraints);
                    
                    panel.add(columnPanel);
                    index++;
                }
            }
        }
        
        return numRows;
    }