Interface CompositeEditor<T,C,E extends Editor<? super C>>

Type Parameters:
T - the base type being edited
C - the component type to be edited
E - the type of Editor that will edit the component type
All Superinterfaces:
Editor<T>, HasEditorDelegate<T>, ValueAwareEditor<T>
All Known Implementing Classes:
HasDataEditor, ListEditor, OptionalFieldEditor

public interface CompositeEditor<T,C,E extends Editor<? super C>> extends ValueAwareEditor<T>
An interface that indicates that a given Editor is composed of an unknown number of sub-Editors all of the same type.

For example, the ListEditor type is a CompositeEditor<List<T>, T, E extends Editor<T>>; that is, ListEditor will accept a List<T> and will edit some unknown number of T's using the Editor type E. Another example might be:

 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);
     }
   }
 }