001 package org.hackystat.projectbrowser.page.projectportfolio.configurationpanel; 002 003 import org.apache.wicket.Component; 004 import org.apache.wicket.markup.html.basic.Label; 005 import org.apache.wicket.markup.html.list.ListItem; 006 import org.apache.wicket.markup.html.list.ListView; 007 import org.apache.wicket.markup.html.panel.Panel; 008 import org.hackystat.projectbrowser.ProjectBrowserSession; 009 import org.hackystat.projectbrowser.page.projectportfolio.detailspanel. 010 PortfolioMeasureConfiguration; 011 import org.hackystat.projectbrowser.page.telemetry.TelemetrySession; 012 import org.hackystat.projectbrowser.page.telemetry.inputpanel.TelemetryInputForm; 013 import org.hackystat.telemetry.service.resource.chart.jaxb.ParameterDefinition; 014 015 /** 016 * Panel for Project Portfolio configuration panel to input telemetry parameters. 017 * 018 * @author Shaoxuan Zhang 019 * 020 */ 021 public class TelemetryParameterPanel extends Panel { 022 /** Support serialization. */ 023 private static final long serialVersionUID = -1318097127363264398L; 024 PortfolioMeasureConfiguration measure; 025 026 /** 027 * @param id the wicket id. 028 * @param m the {@link PortfolioMeasureConfiguration} to configure. 029 */ 030 public TelemetryParameterPanel(final String id, final PortfolioMeasureConfiguration m) { 031 super(id); 032 this.measure = m; 033 TelemetrySession telemetrySession = ProjectBrowserSession.get().getTelemetrySession(); 034 ListView parameterList = 035 new ListView("parameterList", telemetrySession.getParameterList(measure.getName())) { 036 /** Support serialization. */ 037 public static final long serialVersionUID = 1L; 038 @Override 039 protected void populateItem(ListItem item) { 040 ParameterDefinition paramDef = (ParameterDefinition)item.getModelObject(); 041 item.add(new Label("name", paramDef.getName())); 042 Component component = TelemetryInputForm.getComponent("field", paramDef.getType()); 043 if (item.getIndex() >= measure.getParameters().size() && component.getModel() != null) { 044 measure.getParameters().add(component.getModel()); 045 } 046 else { 047 component.setModel(measure.getParameters().get(item.getIndex())); 048 } 049 item.add(component); 050 } 051 052 @Override 053 public boolean isVisible() { 054 return measure.isEnabled(); 055 } 056 }; 057 add(parameterList); 058 } 059 060 /** 061 * If this panel is visible. 062 * @return true if the associated measure is enabled, false otherwise. 063 */ 064 @Override 065 public boolean isVisible() { 066 return measure.isEnabled(); 067 } 068 }