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    }