jeudi 30 juin 2011

Transfert d'une liste à une autre

Assez souvent le besoin se fait sentir de pouvoir sélectionner des éléments d'une liste (source) pour construire une deuxième liste (destination). Un peu dans ce genre la:




Donc on va voir comment on peut réaliser cela avec smartgwt.... tout du moins après les vacances!

DynamicForm et libelle des différents FormItem

Smartgwt présente de très nombreux Composants qui ont de très nombreux attributs.
Aujourdhui j'ai passeé un bon moment à me demander pourquoi le "Title" d'un ComboBoxItem revenait à ligne sur des espaces:

Pour une fois le forum Isomorphic est venu à la rescousse (ce qui est rarement le cas....)
public class TestWidget extends VLayout{
public TestWidget(){
  DynamicForm form = new DynamicForm();
  ComboBoxItem sourcesList = new ComboBoxItem();
  sourcesList.setType("comboBox");
  this.setWidth(800);
  this.setHeight(600);
  form.setNumCols(2);
  form.setWidth("100%");
  sourcesList.setWidth("450px");
  sourcesList.setTitle("Variable data source");
  LinkedHashMap<String, String> valueMap = new   LinkedHashMap<String, String>();

  valueMap.put("CNV", "CNV");
  valueMap.put("CNM", "CNM");
  sourcesList.setValueMap(valueMap);
  form.setFields(sourcesList);
  this.addMember(form);
}
}

Donc en fait le problème était dans la longueur du titre et  les "Title" sont par défaut en mode Wrap au niveau du formulaire DynamicForm
Pour qu'il n'en soit plus ainsi: form.setWrapItemTitles(false).
Par la même occasion, partout on rencontre dans les exemple y compris le showcase :
sourcesList.setType("comboBox"); 
C'est inutile puisque réalisé par le constructeur du ComboBoxItem.

............................

By default the title of the FormItem wrap, if we have long title we want to see on only one line: form.setWrapItemTitles(false)

Btw:we don't have to set the type of the combo it's done internally by the ComboBoxItem constructor.