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 }