private void printInputParameters(
     final PrintWriter w, BulkParameterFactory f, ExperimentRunSettings s, boolean allParams) {
   w.println("<form action=\"#\">");
   w.println("<h2>Input parameters</h2>");
   w.println("<table>");
   for (final ParameterType t : ParameterType.values()) {
     if (!allParams && t.getDescription().isEmpty()) {
       continue;
     }
     w.println("<tr><td style=\"vertical-align:top;text-align:right\">");
     w.println(t.toString());
     w.println("</td><td style=\"vertical-align:top\">");
     w.println(this.getInputFor(t, f));
     w.println("</td><td style=\"vertical-align:top\">");
     w.println(t.getDescription());
     w.println("</td></tr>");
   }
   w.println("</table>");
   w.println("<h2>Experiment settings</h2>");
   w.println("<table>");
   for (final ExperimentRunParameters t : ExperimentRunParameters.values()) {
     w.println("<tr><td style=\"vertical-align:top;text-align:right\">");
     w.println(t.toString());
     w.println("</td><td style=\"vertical-align:top\">");
     w.println(this.getInputFor(t, s));
     w.println("</td><td style=\"vertical-align:top\">");
     w.println(t.getDescription());
     w.println("</td></tr>");
   }
   w.println("</table>");
   w.println("<button type=\"submit\">Start simulation</button>");
   w.println("</form>");
 }
 private Properties settingsToProperties(ExperimentRunSettings s) {
   final Properties ret = new Properties();
   for (final ExperimentRunParameters type : ExperimentRunParameters.values()) {
     ret.setProperty(type.name(), Double.toString(s.get(type)));
   }
   return ret;
 }
 private ExperimentRunSettings getExperimentSettings(PrintWriter w, HttpServletRequest request) {
   ExperimentRunSettings s = ExperimentRunSettings.defaultSettings();
   for (final ExperimentRunParameters t : ExperimentRunParameters.values()) {
     final String param = request.getParameter(t.name());
     if (param != null && !param.isEmpty()) {
       try {
         s = s.copyWithChangedParam(t, Double.parseDouble(param));
       } catch (final RuntimeException e) {
         this.printParseError(w, t.toString(), e);
       }
     }
   }
   return s;
 }