Which class has the "addValueUpdateHandler" ? On Jun 25, 4:08 pm, Paul Stockley <[email protected]> wrote: > Can't you just add a ValueUpdater handler to see when the selection > changes? > > On Jun 25, 4:27 am, saklig <[email protected]> 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 <[email protected]> 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 [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
