diff -r cf877b985bc2 lib/galaxy/tools/parameters/basic.py
--- a/lib/galaxy/tools/parameters/basic.py	Fri Sep 24 14:46:56 2010 +0100
+++ b/lib/galaxy/tools/parameters/basic.py	Fri Sep 24 17:20:50 2010 +0100
@@ -277,7 +277,7 @@
         checked = self.checked
         if value: 
             checked = form_builder.CheckboxField.is_checked( value )
-        return form_builder.CheckboxField( self.name, checked )
+        return form_builder.CheckboxField( self.name, checked, self.refresh_on_change )
     def from_html( self, value, trans=None, other_values={} ):
         return form_builder.CheckboxField.is_checked( value )  
     def to_python( self, value, app ):
diff -r cf877b985bc2 lib/galaxy/tools/parameters/grouping.py
--- a/lib/galaxy/tools/parameters/grouping.py	Fri Sep 24 14:46:56 2010 +0100
+++ b/lib/galaxy/tools/parameters/grouping.py	Fri Sep 24 17:20:50 2010 +0100
@@ -362,12 +362,15 @@
         return "Conditional (%s)" % self.name
     def get_current_case( self, value, trans ):
         # Convert value to user representation
-        str_value = self.test_param.filter_value( value, trans )
+        # Do we care about the transaction object?
+        str_value = self.test_param.to_param_dict_string( value )
         # Find the matching case
         for index, case in enumerate( self.cases ):
             if str_value == case.value:
                 return index
-        raise Exception( "No case matched value:", self.name, str_value )
+        raise Exception( "No case matched %r value %r (could have: %s)" \
+                        % (self.name, str_value,
+                           ", ".join(repr(case.value) for case in self.cases)))
     def value_to_basic( self, value, app ):
         rval = dict()
         current_case = rval['__current_case__'] = value['__current_case__']
diff -r cf877b985bc2 lib/galaxy/web/form_builder.py
--- a/lib/galaxy/web/form_builder.py	Fri Sep 24 14:46:56 2010 +0100
+++ b/lib/galaxy/web/form_builder.py	Fri Sep 24 17:20:50 2010 +0100
@@ -93,21 +93,33 @@
     >>> print CheckboxField( "bar", checked="yes" ).get_html()
     <input type="checkbox" name="bar" value="true" checked><input type="hidden" name="bar" value="true">
     """
-    def __init__( self, name, checked=None ):
+    def __init__( self, name, checked=None, refresh_on_change=False ):
+        assert refresh_on_change, "Forcing traceback"
         self.name = name
         self.checked = ( checked == True ) or ( isinstance( checked, basestring ) and ( checked.lower() in ( "yes", "true", "on" ) ) )
+        self.refresh_on_change = refresh_on_change
+        if self.refresh_on_change: 
+            self.refresh_on_change_text = ' refresh_on_change="true"'
+        else:
+            self.refresh_on_change_text = ''
     def get_html( self, prefix="", disabled=False ):
         if self.checked:
             checked_text = "checked"
         else:
             checked_text = ""
+        if self.refresh_on_change:
+            refresh_on_change_test = ' refresh_on_change="true"'
+        else:
+            refresh_on_change_test = ""
+
         # The hidden field is necessary because if the check box is not checked on the form, it will
         # not be included in the request params.  The hidden field ensure that this will happen.  When
         # parsing the request, the value 'true' in the hidden field actually means it is NOT checked.
         # See the is_checked() method below.  The prefix is necessary in each case to ensure functional
         # correctness when the param is inside a conditional.
-        return '<input type="checkbox" name="%s%s" value="true" %s%s><input type="hidden" name="%s%s" value="true"%s>' \
-            % ( prefix, self.name, checked_text, self.get_disabled_str( disabled ), prefix, self.name, self.get_disabled_str( disabled ) )
+        return '<input type="checkbox" name="%s%s" value="true"%s%s%s><input type="hidden" name="%s%s" value="true"%s%s>' \
+            % ( prefix, self.name, checked_text, self.get_disabled_str( disabled ), self.refresh_on_change_text,
+               prefix, self.name, self.get_disabled_str( disabled ), self.refresh_on_change_text )
     @staticmethod
     def is_checked( value ):
         if value == True:
diff -r cf877b985bc2 tools/ncbi_blast_plus/ncbi_blastn_wrapper.xml
--- a/tools/ncbi_blast_plus/ncbi_blastn_wrapper.xml	Fri Sep 24 14:46:56 2010 +0100
+++ b/tools/ncbi_blast_plus/ncbi_blastn_wrapper.xml	Fri Sep 24 17:20:50 2010 +0100
@@ -42,10 +42,7 @@
             -->
         </param>
         <conditional name="adv_opts">
-            <param name="adv_opts_selector" type="select" label="Advanced Options">
-              <option value="basic" selected="True">Hide Advanced Options</option>
-              <option value="advanced">Show Advanced Options</option>
-            </param>
+            <param name="adv_opts_selector" type="boolean" label="Advanced Options" truevalue="advanced" falsevalue="basic" checked="false" />
             <when value="basic">
                 <param name="filter_query" type="hidden" value="yes" />
             </when>
