Use objects to represent form parameters. This allows us to abstract away some
of the details of HTML rendering of form parameters, and also us with the
ability to delegate other actions (such as in the filling in of default values)
to specific parameter objects.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56851 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/tools/scan-view/ScanView.py b/tools/scan-view/ScanView.py
index 76a790d..8ee28f7 100644
--- a/tools/scan-view/ScanView.py
+++ b/tools/scan-view/ScanView.py
@@ -129,8 +129,8 @@
         self.config.add_section('ScanView')
         for r in self.reporters:
             self.config.add_section(r.getName())
-            for p in r.getParameterNames():
-                self.config.set(r.getName(), p, '')
+            for p in r.getParameters():
+                self.config.set(r.getName(), p.getName(), '')
 
         # Ignore parse errors
         try:
@@ -304,19 +304,20 @@
         # Get the reporter and parameters.
         reporter = self.server.reporters[reporterIndex]
         parameters = {}
-        for o in reporter.getParameterNames():
-            name = '%s_%s'%(reporter.getName(),o)
+        for o in reporter.getParameters():
+            name = '%s_%s'%(reporter.getName(),o.getName())
             if name not in self.fields:
                 return (False, 
                         'Missing field "%s" for %s report method.'%(name,
                                                                     reporter.getName()))
-            parameters[o] = self.get_scalar_field(name)
+            parameters[o.getName()] = self.get_scalar_field(name)
 
         # Update config defaults.
         if report != 'None':
             self.server.config.set('ScanView', 'reporter', reporterIndex)
-            for o in reporter.getParameterNames():
-                self.server.config.set(reporter.getName(), o, parameters[o])
+            for o in reporter.getParameters():
+                name = o.getName()
+                self.server.config.set(reporter.getName(), name, parameters[name])
 
         # Create the report.
         bug = Reporter.BugReport(title, description, files)
@@ -529,11 +530,7 @@
             else:
                 selectedStr = ''
             reporterSelections.append('<option value="%d"%s>%s</option>'%(i,selectedStr,r.getName()))
-            options = '\n'.join(["""\
-<tr>
-  <td class="form_clabel">%s:</td>
-  <td class="form_value"><input type="text" name="%s_%s" value="%s"></td>
-</tr>"""%(o,r.getName(),o,getConfigOption(r.getName(),o)) for o in r.getParameterNames()])
+            options = '\n'.join([ o.getHTML(r,title,getConfigOption) for o in r.getParameters()])
             display = ('none','')[selected]
             reporterOptions.append("""\
 <tr id="%sReporterOptions" style="display:%s">