001    package org.hackystat.projectbrowser.page.dailyprojectdata.devtime;
002    
003    import org.apache.wicket.markup.html.basic.Label;
004    import org.apache.wicket.markup.html.list.ListItem;
005    import org.apache.wicket.markup.html.list.ListView;
006    import org.apache.wicket.markup.html.panel.Panel;
007    import org.apache.wicket.model.PropertyModel;
008    import org.hackystat.projectbrowser.ProjectBrowserSession;
009    import org.hackystat.projectbrowser.page.dailyprojectdata.DailyProjectDataSession;
010    
011    
012    /**
013     * Data panel for DevTime.
014     * 
015     * @author Philip Johnson
016     */
017    public class DevTimePanel extends Panel {
018    
019      /** Support serialization. */
020      private static final long serialVersionUID = 1L;
021    
022      /**
023       * Create this panel, providing the appropriate wicket ID.
024       * 
025       * @param id The wicket component id.
026       */
027      public DevTimePanel(String id) {
028        super(id);
029        DailyProjectDataSession session = ProjectBrowserSession.get().getDailyProjectDataSession();
030        // prepare the data model.
031        DevTimeDataModel dataModel = session.getDevTimeDataModel();
032        ListView listView = new ListView("devTimeDataList", new PropertyModel(dataModel,
033            "devTimeDataList")) {
034          /** Support serialization. */
035          private static final long serialVersionUID = 1L;
036    
037          @Override
038          protected void populateItem(ListItem item) {
039            DevTimeData data = (DevTimeData) item.getModelObject();
040            item.add(new Label("project", data.getProject().getName()));
041            item.add(new Label("devtimedata", data.getDevTimeData()));
042            item.add(new Label("total", String.valueOf(data.getTotalDevTime())));
043          }
044        };
045        add(listView);
046      }
047    
048      /**
049       * Returns true if this panel should be displayed.  
050       * The panel should be displayed if its corresponding data model has information.
051       * @return True if this panel should be displayed. 
052       */
053      @Override
054      public boolean isVisible() {
055        DailyProjectDataSession session = ProjectBrowserSession.get().getDailyProjectDataSession();
056        return !session.getDevTimeDataModel().isEmpty(); 
057      }
058    }