001    package org.hackystat.projectbrowser.page.sensordata;
002    
003    import org.apache.wicket.markup.html.panel.Panel;
004    import org.hackystat.projectbrowser.ProjectBrowserSession;
005    import java.util.ArrayList;
006    import java.util.List;
007    
008    import org.apache.wicket.extensions.markup.html.repeater.data.table.DataTable;
009    import org.apache.wicket.extensions.markup.html.repeater.data.table.HeadersToolbar;
010    import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
011    import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn;
012    import org.apache.wicket.model.Model;
013    
014    /**
015     * The Panel contains a table of sensor data information, displayed in a modal window. 
016     * @author Philip Johnson
017     */
018    public class SensorDataTablePanel extends Panel {
019      
020      /** For serialization. */
021      private static final long serialVersionUID = 1L;
022      
023      /**
024       * Creates a panel to display a table of sensor data information.
025       * @param id The wicket ID. 
026       * @param page The page associated with this panel.
027       */
028      public SensorDataTablePanel(String id, SensorDataPage page) {
029        super(id);
030        
031        SensorDataSession session = ProjectBrowserSession.get().getSensorDataSession();
032        
033        SensorDataTableModel model = session.getSensorDataTableModel();
034        
035        // Set up the columns for the table.
036        List<IColumn> columns = new ArrayList<IColumn>();
037        columns.add(new PropertyColumn(new Model("Day"), "DayString"));
038        columns.add(new PropertyColumn(new Model("Total"), "Total"));
039        for (String sdt : model.getSdtSet()) {
040          columns.add(new SdtColumn(new Model(sdt), sdt));
041        }
042    
043        
044        // Add the table, making sure that all days in every month are in one page.
045        DataTable table = new DataTable("SensorDataTable", 
046            columns.toArray(new IColumn[columns.size()]), model, 32);
047        table.addTopToolbar(new HeadersToolbar(table, model));
048        add(table);
049        
050      }
051      
052      /**
053       * Returns true if this panel should be made visible.
054       * @return True if visible.
055       */
056      @Override
057      public boolean isVisible() {
058        SensorDataSession session = ProjectBrowserSession.get().getSensorDataSession();
059        SensorDataTableModel model = session.getSensorDataTableModel();
060        return !model.isEmpty();
061      }
062    }