http://gwt-code-reviews.appspot.com/848801/diff/1/5 File user/src/com/google/gwt/editor/client/CompositeEditor.java (right):
http://gwt-code-reviews.appspot.com/848801/diff/1/5#newcode20 user/src/com/google/gwt/editor/client/CompositeEditor.java:20: * some other type. * An interface that indicates that a given Editor is composed of an unknown * number of sub-Editors all of the same type. * <p> * For example, the {...@link com.google.gwt.editor.client.adapters.ListEditor * ListEditor} type is a * <code>CompositeEditor<List<T>, T, E extends Editor<T></code>; that * is, ListEditor will accept a List<T> and will edit some unknown number of * <code>T</code>'s using the Editor type <code>E</code>. Another example might * be: * * <pre> * class WorkgroupEditor implements CompositeEditor<Workgroup, Person, PersonSummaryEditor>{ * public void setValue(Workgroup workgroup) { * // Assuming Workgroup implements Iterable<Person> * for (Person p : workgroup) { * PersonSummaryEditor editor = new PersonSummaryEditor(); * // Attach editor to DOM * somePanel.add(editor); * // Let the generated code drive the sub-editor * editorChain.attach(p, editor); * } * } * } * </pre> http://gwt-code-reviews.appspot.com/848801/diff/1/16 File user/src/com/google/gwt/editor/client/adapters/ListEditor.java (right): http://gwt-code-reviews.appspot.com/848801/diff/1/16#newcode34 user/src/com/google/gwt/editor/client/adapters/ListEditor.java:34: public class ListEditor<T, E extends Editor<T>> implements On 2010/09/09 18:24:01, rjrjr wrote:
You need E as input to the code generator, right?
Yes, the EditorDriver generator needs to make sure that there is an EditorDelegate peer for the editor type that will display the list elements. http://gwt-code-reviews.appspot.com/848801/diff/1/26 File user/src/com/google/gwt/editor/client/testing/FakeEditorSource.java (right): http://gwt-code-reviews.appspot.com/848801/diff/1/26#newcode29 user/src/com/google/gwt/editor/client/testing/FakeEditorSource.java:29: public class FakeEditorSource<T> extends EditorSource<FakeLeafValueEditor<T>> { On 2010/09/09 18:24:01, rjrjr wrote:
Should the fakes and mocks live in user/test? Or would that make them
not
available to third parties?
The contents of user/test aren't packed into gwt-user.jar. http://gwt-code-reviews.appspot.com/848801/diff/1/37 File user/test/com/google/gwt/editor/client/SimpleBeanEditorTest.java (right): http://gwt-code-reviews.appspot.com/848801/diff/1/37#newcode299 user/test/com/google/gwt/editor/client/SimpleBeanEditorTest.java:299: class StringSource extends EditorSource<SimpleEditor<String>> { On 2010/09/09 18:24:01, rjrjr wrote:
Will I always have to create a source to use a ListEditor? Could it be generated?
I have this rough idea that you could write something like this in UiBinder: <e:ListEditor path='person.aliases'> <e:container> <g:FlowPanel /> </e:container> <e:subeditor> <g:FlowPanel> <g:TextBox e:path='name'>John Doe</g:TextBox> <g:TextBox e:path='locale'>East Nowhere</g:TextBox> <g:DateBox e:path='last_seen'>9/9/2010</g:DateBox> </g:FlowPanel> <e:subeditor> </e:ListEditor> UiBinder would generate an EditorChain that automatically creates instances of the widget described by the subeditor clause and manages their attachment to an InsertPanel described in the container clause. http://gwt-code-reviews.appspot.com/848801/show -- http://groups.google.com/group/Google-Web-Toolkit-Contributors