Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
Clear All
new posts

    RadioGroupItem with Boolean values

    I use a RadioGroupItem with two values. The value map uses Boolean values rather than String to map a value to the corresponding option. The first time the value is set the option is correctly displayed. But if I try to change it to a new value it clears the options leaving me with an empty RadioGroupItem. I think it is only a display problem, the value seems to be correct.

    I tried this with the Version 5.0p (2014-09-14) and GWT 2.6.1. Upgrading to the latest nightly build of smartgwt does not help. I had an old version of smartgwt from the year 2013 which works as indented. But unfortunately, I don't know which version that is since it is a dummy project and not under source control.

    Below is a standalone test case. As mentioned before the initial value is displayed correctly. Once you press the switch-button though the RadioGroupItem displays nothing. Sometimes the correct value is displayed for a fraction of second before cleared.

    If I replace the Boolean values in the value map with Strings ("true" and "false") and set a String value (String.valueOf(this.flag)) instead of a Boolean value, then it works. This is the workaround I've currently implemented (and which I consider ugly).

    Code:
    import java.util.LinkedHashMap;
    
    import com.google.gwt.core.client.EntryPoint;
    import com.smartgwt.client.data.Record;
    import com.smartgwt.client.widgets.Button;
    import com.smartgwt.client.widgets.events.ClickEvent;
    import com.smartgwt.client.widgets.events.ClickHandler;
    import com.smartgwt.client.widgets.form.DynamicForm;
    import com.smartgwt.client.widgets.form.ValuesManager;
    import com.smartgwt.client.widgets.form.fields.RadioGroupItem;
    import com.smartgwt.client.widgets.layout.VLayout;
    
    public class Test implements EntryPoint {
    	
    	private static final String FIELD_RADIO = "radio";
    	private boolean flag = false;
    
    	@Override
    	public void onModuleLoad() {
    		VLayout layout = new VLayout();
    		final ValuesManager mgr = new ValuesManager();
    		
    		DynamicForm form = new DynamicForm();
    		form.setValuesManager(mgr);
    		
    		RadioGroupItem item = new RadioGroupItem(FIELD_RADIO, "Do you like cookies?");
    		item.setWrapTitle(Boolean.FALSE);
    		// Value map for possible options
    		LinkedHashMap<Object, String> map = new LinkedHashMap<Object, String>();
    		map.put(Boolean.TRUE, "Yes");
    		map.put(Boolean.FALSE, "No");
    		item.setValueMap(map);
    		item.setVertical(false);
    		
    		form.setFields(item);
    		editWithNewValueForFlag(mgr);
    		layout.addMember(form);
    		
    		Button button = new Button("switch");
    		button.addClickHandler(
    			new ClickHandler() {
    				
    				@Override
    				public void onClick(ClickEvent event) {
    					Test.this.flag = !Test.this.flag;
    					editWithNewValueForFlag(mgr);
    				}
    			}
    		);
    		layout.addMember(button);
    		layout.draw();
    	}
    
    	private void editWithNewValueForFlag(final ValuesManager mgr) {
    		Record record = new Record();
    		record.setAttribute(FIELD_RADIO, Boolean.valueOf(this.flag));
    		mgr.editRecord(record);
    	}
    
    }

    #2
    Thanks for letting us know about this problem. We have just fixed the issue, you will find the fix applied in the next nightly build.

    Comment


      #3
      Thank you

      Thank you very much for the fix. I can confirm that it works now in my environment.

      Comment

      Working...
      X