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-toolkit@googlegroups.com.
To unsubscribe from this group, send email to google-web-toolkit+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
No comments:
Post a Comment