001    package org.hackystat.projectbrowser.page.sensordata;
002    
003    import org.apache.wicket.ajax.markup.html.navigation.paging.AjaxPagingNavigator;
004    import org.apache.wicket.markup.html.basic.Label;
005    import org.apache.wicket.markup.html.panel.Panel;
006    import org.apache.wicket.markup.repeater.Item;
007    import org.apache.wicket.markup.repeater.data.DataView;
008    import org.apache.wicket.model.PropertyModel;
009    import org.hackystat.projectbrowser.ProjectBrowserApplication;
010    import org.hackystat.projectbrowser.ProjectBrowserSession;
011    
012    /**
013     * Creates a panel for displaying sensor data. 
014     * @author Philip Johnson
015     */
016    public class SensorDataDetailsPanel extends Panel {
017      
018      /** For serialization. */
019      private static final long serialVersionUID = 1L;
020      
021      /**
022       * Creates a page to display a table of sensor data instances for a given SDT.
023       * This is a page rather than a panel because it is added to a modal window, and modal
024       * windows apparently want pages, not panels.  
025       * @param id The wicket ID. 
026       */
027      public SensorDataDetailsPanel(String id) {
028        super(id);
029        SensorDataSession session = ProjectBrowserSession.get().getSensorDataSession();
030        SensorDataDetailsProvider provider = session.getSensorDataDetailsProvider();
031        add(new Label("sdtName", new PropertyModel(session, "sdtName")));
032        add(new Label("tool", new PropertyModel(session, "tool")));
033        DataView dataView = new DataView("sensorDataDetailsList", provider) {
034          /** For serialization */
035          private static final long serialVersionUID = 1L;
036    
037          /** 
038           * How to populate the table.
039           * @param item The SensorDataDetails item.  
040           */
041          @Override
042          protected void populateItem(Item item) {
043            SensorDataDetails details = (SensorDataDetails) item.getModelObject();
044            item.add(new Label("timestamp", details.getTimeStamp()));
045            item.add(new Label("runtime", details.getRuntime()));
046            item.add(new Label("sdtName", details.getSdtName()));
047            item.add(new Label("resource", details.getResource()));
048            item.add(new Label("owner", details.getOwner()));
049            item.add(new Label("tool", details.getTool()));
050            item.add(new Label("properties", details.getProperties()));
051          }
052        };
053        int itemsPerPage = ((ProjectBrowserApplication)ProjectBrowserApplication.get()).
054          getProjectBrowserProperties().getSensorDataItemsPerPage();
055        dataView.setItemsPerPage(itemsPerPage);
056        add(dataView);
057        add(new AjaxPagingNavigator("navigator", dataView));
058      }
059    
060    }