Hi,

I'm using a Palette component with OptionGroupModels to show a list as below:

Region 1
        Country 1
        Country 2
        Country 3
Region 2
        Country 4
        Country 5
        Country 6

When I select individual countries from region 1, I can deselect them and they 
will return to the correct OptionGroupModel (ie region 1). If I select all 
countries from region 1, when I deselect them they will be put into Region 2.  
When selecting all countries from region 2, when I deselect them, they return 
to the correct region. If I swap the order of the option groups so that region 
2 comes first, then the same behaviour is observed, with region 1 working 
correctly and  all region 2 countries not being returned to the correct region 
when deselected.

This is my hacked together attempt to get it working, as I haven't been able to 
find any examples of using the palette with OptionGroupModels:

void onPrepare() {
             availableCountries = 
bidApplicationManager.findallUserAccessCountries();
             countryModel = new 
SelectModelImpl(createOptionGroups(this.availableCountries),null);
}

private List<OptionGroupModel>  createOptionGroups(List<Country> 
availableCountries) {
    List<OptionGroupModel> optGroupList = new ArrayList<OptionGroupModel>();
    List<OptionModel> optList = new ArrayList<OptionModel>();
    List<OptionModel> nonEEAOptList = new ArrayList<OptionModel>();
    for(Country country: availableCountries2){
        if (country.getRegion().equals("Europe (EEA)")){
            OptionModelImpl opt = new 
OptionModelImpl(country.getCountry(),country);
            optList.add(opt);
        }
        else if (!(country.getRegion().equals("Europe (EEA)"))){
        OptionModelImpl opt = new OptionModelImpl(country.getCountry(),country);
        nonEEAOptList.add(opt);
    }
  }
  OptionGroupModel groupModel = new OptionGroupModelImpl("Europe 
(EEA)",false,optList);
  OptionGroupModel NonEEAGroupModel = new OptionGroupModelImpl("Non 
EEA",false,nonEEAOptList);
  optGroupList.add(groupModel);
  optGroupList.add(NonEEAGroupModel);
  return optGroupList;
}


The Palette API documentation states that "Option groups within the 
SelectModel<http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/SelectModel.html>
 will be rendered, but are not supported by many browsers, and are not fully 
handled on the client side. "
I'm not sure if there is something that I am doing wrong, or the behaviour I'm 
seeing is due to it being  "not fully handled on the client side". Has anyone 
got a working palette using option groups? Any pointers/comments welcome.

Thanks & Regards
Jonathan


Reply via email to