private void addInsideAFieldLayoutExample ( ) { add ( new WHeading ( HeadingLevel . H3 , "WRadioButtonSelect inside a WFieldLayout" ) ) ; add ( new ExplanatoryText ( "When a WRadioButtonSelect is inside a WField its label is exposed in a way which appears and behaves like a regular HTML label." + " This allows WRadioButtonSelects to be used in a layout with simple form controls (such as WTextField) and produce a consistent" + " and predicatable interface.\n" + "The third example in this set uses a null label and a toolTip to hide the labelling element. This can lead to user confusion and" + " is not recommended." ) ) ; // Note: the wrapper WPanel here is to work around a bug in validation. See https://github.com/BorderTech/wcomponents/issues/1370 final WPanel wrapper = new WPanel ( ) ; add ( wrapper ) ; final WMessages messages = new WMessages ( ) ; wrapper . add ( messages ) ; WFieldLayout layout = new WFieldLayout ( ) ; layout . setLabelWidth ( 25 ) ; wrapper . add ( layout ) ; WButton resetThisBit = new WButton ( "Reset this bit" ) ; resetThisBit . setCancel ( true ) ; resetThisBit . setAjaxTarget ( wrapper ) ; resetThisBit . setAction ( new Action ( ) { @ Override public void execute ( final ActionEvent event ) { wrapper . reset ( ) ; } } ) ; layout . addField ( resetThisBit ) ; String [ ] options = new String [ ] { "Dog" , "Cat" , "Bird" , "Turtle" } ; WRadioButtonSelect select = new WRadioButtonSelect ( options ) ; layout . addField ( "Select an animal" , select ) ; String [ ] options2 = new String [ ] { "Parrot" , "Galah" , "Cockatoo" , "Lyre" } ; select = new WRadioButtonSelect ( options2 ) ; select . setMandatory ( true ) ; layout . addField ( "You must select a bird" , select ) ; select . setFrameless ( true ) ; //a tooltip can be used as a label stand-in even in a WField String [ ] options3 = new String [ ] { "Carrot" , "Beet" , "Brocolli" , "Bacon - the perfect vegetable" } ; select = new WRadioButtonSelect ( options3 ) ; //if you absolutely do not want a WLabel in a WField then it has to be added using null cast to a WLabel. layout . addField ( ( WLabel ) null , select ) ; select . setToolTip ( "Veggies" ) ; WButton btnValidate = new WButton ( "validate" ) ; btnValidate . setAction ( new ValidatingAction ( messages . getValidationErrors ( ) , layout ) { @ Override public void executeOnValid ( final ActionEvent event ) { // do nothing } } ) ; layout . addField ( btnValidate ) ; wrapper . add ( new WAjaxControl ( btnValidate , wrapper ) ) ; }
When a WRadioButtonSelect is added to a WFieldLayout the legend is moved . The first CheckBoxSelect has a frame the second doesn t