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 }