The setFieldUpdater proved to be a better solution, thanks :-)
For some reason InternetExplorer does not send change events when
changing the value of the selectionCell.

Is this a known bug in GWT 2.1 M1 ?




On Jun 27, 2:59 pm, Paul Stockley <pstockl...@gmail.com> wrote:
> use the setFieldUpdater(fieldUpdater) on the Column class
>
> On Jun 27, 6:28 am, saklig <d3andr...@gmail.com> wrote:
>
>
>
> > Which class has the "addValueUpdateHandler" ?
>
> > On Jun 25, 4:08 pm, Paul Stockley <pstockl...@gmail.com> wrote:
>
> > > Can't you just add a ValueUpdater handler to see when the selection
> > > changes?
>
> > > On Jun 25, 4:27 am, saklig <d3andr...@gmail.com> wrote:
>
> > > > After a couple of tries Ive managed to write something that gets the
> > > > job done.
>
> > > > My example:
>
> > > > List<String> opts = new ArrayList<String>();
> > > > opts.add("Enabled");
> > > > opts.add("Disabled");
>
> > > > table.addColumn(new IdentityColumn<MyData>(new
> > > > ActiveSelectionCell(opts)), "Active");
>
> > > > private class ActiveSelectionCell implements Cell<MyData>{
>
> > > >                 private HashMap<String, Integer> indexForOption = new
> > > > HashMap<String, Integer>();
> > > >                 private final List<String> options;
>
> > > >                   public ActiveSelectionCell(List<String> options) {
> > > >                     this.options = new ArrayList<String>(options);
> > > >                     int index = 0;
> > > >                     for (String option : options) {
> > > >                       indexForOption.put(option, index++);
> > > >                     }
> > > >                   }
>
> > > >                 @Override
> > > >                 public boolean consumesEvents() {
> > > >                         return false;
> > > >                 }
>
> > > >                 @Override
> > > >                 public boolean dependsOnSelection() {
> > > >                         return false;
> > > >                 }
>
> > > >                   private int getSelectedIndex(String value) {
> > > >                     Integer index = indexForOption.get(value);
> > > >                     if (index == null) {
> > > >                       return -1;
> > > >                     }
> > > >                     return index.intValue();
> > > >                   }
>
> > > >                 @Override
> > > >                 public void setValue(Element parent, MyData value, 
> > > > Object viewData)
> > > > {
> > > >                         StringBuilder sb = new StringBuilder();
> > > >                     render(value, viewData, sb);
> > > >                     parent.setInnerHTML(sb.toString());
>
> > > >                 }
>
> > > >                 @Override
> > > >                 public Object onBrowserEvent(Element parent, MyData 
> > > > value,
> > > >                                 Object viewData, NativeEvent event,
> > > >                                 ValueUpdater<MyData> valueUpdater) {
> > > >                         String type = event.getType();
> > > >                     if ("change".equals(type)) {
> > > >                       SelectElement select = 
> > > > parent.getFirstChild().cast();
>
> > > > if( options.get(select.getSelectedIndex()).equalsIgnoreCase("Enabled"))
> > > >                           value.setActive("1");
> > > >                       else
> > > >                           value.setActive("0");
> > > >                       System.out.println(value.getName() + " - " +
> > > > options.get(select.getSelectedIndex()));
>
> > > > //                    valueUpdater.update(value);
> > > >                     }
> > > >                     return viewData;
> > > >                 }
>
> > > >                 @Override
> > > >                 public void render(MyData value, Object viewData, 
> > > > StringBuilder sb)
> > > > {
> > > >                         int selectedIndex = 0;
> > > >                         if(value.getActive().equalsIgnoreCase("1")){
> > > >                                 selectedIndex = 
> > > > getSelectedIndex("Enabled");
> > > >                         }else{
> > > >                                 selectedIndex = 
> > > > getSelectedIndex("Disabled");
> > > >                         }
>
> > > >                     sb.append("<select>");
> > > >                     int index = 0;
> > > >                     for (String option : options) {
> > > >                       if (index++ == selectedIndex) {
> > > >                         sb.append("<option selected='selected'>");
> > > >                       } else {
> > > >                         sb.append("<option>");
> > > >                       }
> > > >                       sb.append(option);
> > > >                       sb.append("</option>");
> > > >                     }
> > > >                     sb.append("</select>");
>
> > > >                 }
>
> > > >         }
>
> > > > If you think this was the wrong/not the best way to get an event from
> > > > a cell, pleas give me a comment.
>
> > > > On Jun 22, 1:25 pm, saklig <d3andr...@gmail.com> wrote:
>
> > > > > Hi,
>
> > > > > How does one handle events from cells in a CellTable( specifically a
> > > > > SelectionCell ) ?

-- 
You received this message because you are subscribed to the Google Groups 
"Google Web Toolkit" group.
To post to this group, send email to google-web-tool...@googlegroups.com.
To unsubscribe from this group, send email to 
google-web-toolkit+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-web-toolkit?hl=en.

Reply via email to