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