title: Editor not getting ListBox changes
body: <p>Issue: On load of a form, ParentEditor, a sub-editor, ThisEditor, properly
  popluates all its fields including a listbox(dropdown) widget, MyWidget. However,if I select a new option in the listbox and save, it doesn't save the newly selected option; though edits to other widgets are saving fine. It appears that on a driver flush, the editor does not get the value in my listBox. In debug mode, on driver.edit, I can see the TakesValueEditor call setValue(value) on all form widgets including the listbox. But on flush, I can see the TakesValueEditor call its getValue() on other form widgets but
  not on my listbox.</p>
  
  <p>The editor hierarchy: ParentEditor > ThisEditor > MyWidget.  ParentEditor is the entire form. ThisEditor is a sub-section of the form. MyWidget is a custom listbox in ThisEditor section.</p>
  
  <p>I'm using MVP pattern. Below are sample code snippets of the View and Presenter:</p>
  
  <pre><code>VIEW:
  
      /** ThisEditor is a sub-section of ParentEditor (the Form) and contains a 
      MyWidget (custom listbox). */
      public class ThisEditor extends Composite implements Editor&lt;ThisProxy&gt;, ThisView {
     ... //rfeDriver interface defined and created here
  
     @UiField
          MyWidget my;  //getMy and setMy methods in ThisProxy
  
     ... //other field declarations
  
          public ThisEditor() {
              initWidget(binder.createAndBindUi(this));
          }
  
    @Override
         public MyView getMy() {
             return my;
         }
    ... //other methods
      }
  
      /** This is the View interface that MyWidget implements */
      public interface MyView extends HasOptions, HasValue&lt;MyProxy&gt;, Focusable {
          interface Presenter {
         ...
     }
     ...
      }
  
      public class MyWidget extends Composite implements MyView,    
              IsEditor&lt;LeafValueEditor&lt;MyProxy&gt;&gt; {
     ...
     @UiField
          ListBox listBox; //single-select dropdown 
     ...
  
     public MyWidget() {
              initWidget(binder.createAndBindUi(this));
         addChangeHandler(); //listen to changes to listBox and setSelectedIndex (?)
     }
     ...
     @Override
     public int getSelectedIndex() {
              return listBox.getSelectedIndex();
          }
  
          @Override
          public void setSelectedIndex(int index) {
              listBox.setSelectedIndex(index);
          }
     ...
  
          /**
           * Called by the TakesValueEditor on rfeDriver.edit.
           */
     @Override
          public MyProxy getValue() {
              //ask presenter for the MyProxy object -- presenter calls
              //getSelectedIndex() on this widget and returns the object associated 
              //with the index 
              return presenter.getValue();
          }
  
      /**
       * Called by the TakesValueEditor on rfeDriver.flush.
       */
       @Override
       public void setValue(MyProxy value) {
       //pass the value to the presenter to parse and set the index that corresponds  
       //to this object
           presenter.setValue(value);
       }
  
  PRESENTER
  
      public class MyPresenter implements MyView.Presenter,     
              ValueLookupCompleteEventHandler {
          ...
     protected HasOptions view;
     private List&lt;MyProxy&gt; myList;
  
     public MyPresenter(ParentPresenter parent) {
         //setParent for this child presenter
     }
  
     ... //methods to set view and create association between view and presenter
  
     @Override
     public MyProxy getValue() {
         //identify the current selection
         String selectedId = view.getValue(view.getSelectedIndex());
  
         if (selectedId != null) {
             //iterate myList to find the MyProxy object whose id.equals(selectedId)
             for (Iterator&lt;MyProxy&gt; i = myList.iterator(); i.hasNext();) {
            MyProxy value = i.next();
            if (selectedId.equals(value.getCode().toString())) {
                return value;
            }
        } 
              }
         return null;
          }
  
     @Override
     public void setValue(MyProxy value) {
         //handle null value
          String selectedId = value.getCode().toString();
     ... //verify the value is in myList
  
     //traverse dropdown list and set selected index corresponding to value object
     for (int i = 0; i &lt; view.getItemCount(); ++i) {
         if (selectedId.equals(view.getValue(i))) {
             view.setSelectedIndex(i);
         }
     }
      }
  }
  </code></pre>