com.google.gwt.editor.client.adapters

## Class OptionalFieldEditor<T,E extends Editor<? super T>>

- java.lang.Object
- - com.google.gwt.editor.client.adapters.OptionalFieldEditor<T,E>

- Type Parameters:
    `T` - The type of data being managed
    `E` - The type of Editor
  All Implemented Interfaces:
    CompositeEditor<T,T,E>, Editor<T>, HasEditorDelegate<T>, LeafValueEditor<T>, ValueAwareEditor<T>, TakesValue<T>

      public class OptionalFieldEditor<T,E extends Editor<? super T>>
      extends java.lang.Object
      implements CompositeEditor<T,T,E>, LeafValueEditor<T>

  This adapter can be used when a type being edited has an optional field that may be nullified or reassigned as part of the editing process. This consumer of this adapter will typically expose it via the `IsEditor` interface:

       class FooSelector extends Composite implements IsEditor<OptionalFieldEditor<Foo, FooEditor>> {
         private OptionalFieldEditor<Foo, FooEditor> editor = OptionalFieldEditor.of(new FooEditor());
         public OptionalFieldEditor<Foo, FooEditor> asEditor() {
           return editor;
         }
       }

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from interface com.google.gwt.editor.client.CompositeEditor

      `CompositeEditor.EditorChain<C,E extends Editor<? super C>>`

    - ### Nested classes/interfaces inherited from interface com.google.gwt.editor.client.Editor

      `Editor.Ignore, Editor.Path`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `OptionalFieldEditor(E subEditor)` Construct an OptionalFieldEditor backed by the given sub-Editor.

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `E` | `createEditorForTraversal()` Returns the sub-Editor that the OptionalFieldEditor was constructed with.
    `void` | `flush()` Indicates that the Editor cycle is finished.
    `java.lang.String` | `getPathElement(E subEditor)` Returns an empty string because there is only ever one sub-editor used.
    `T` | `getValue()` Returns the current value.
    `static <T,E extends Editor<? super T>> OptionalFieldEditor<T,E>` | `of(E subEditor)` Construct an OptionalFieldEditor backed by the given sub-Editor.
    `void` | `onPropertyChange(java.lang.String... paths)` Notifies the Editor that one or more value properties have changed.
    `void` | `setDelegate(EditorDelegate<T> delegate)` Called by the EditorDriver to provide access to the EditorDelegate the Editor is peered with.
    `void` | `setEditorChain(CompositeEditor.EditorChain<T,E> chain)` Called by the Editor framework to provide the `CompositeEditor.EditorChain`.
    `void` | `setValue(T value)` Called by the EditorDriver to set the object the Editor is peered with

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### OptionalFieldEditor

          protected OptionalFieldEditor(E subEditor)

      Construct an OptionalFieldEditor backed by the given sub-Editor.
      Parameters:
        `subEditor` - the sub-Editor that will be attached to the Editor hierarchy

  - ### Method Detail

    - #### of

          public static <T,E extends Editor<? super T>> OptionalFieldEditor<T,E> of(E subEditor)

      Construct an OptionalFieldEditor backed by the given sub-Editor.
      Type Parameters:
        `T` - The type of data being managed
        `E` - The type of Editor
      Parameters:
        `subEditor` - the sub-Editor that will be attached to the Editor hierarchy
      Returns:
        a new instance of OptionalFieldEditor

    - #### createEditorForTraversal

          public E createEditorForTraversal()

      Returns the sub-Editor that the OptionalFieldEditor was constructed with.
      Specified by:
        `createEditorForTraversal` in interface `CompositeEditor<T,T,E extends Editor<? super T>>`
      Returns:
        an `Editor` of type E

    - #### flush

          public void flush()

      Description copied from interface: `ValueAwareEditor`
      Indicates that the Editor cycle is finished. This method will be called in a depth-first order by the EditorDriver, so Editors do not generally need to flush their sub-editors.
      Specified by:
        `flush` in interface `ValueAwareEditor<T>`

    - #### getPathElement

          public java.lang.String getPathElement(E subEditor)

      Returns an empty string because there is only ever one sub-editor used.
      Specified by:
        `getPathElement` in interface `CompositeEditor<T,T,E extends Editor<? super T>>`
      Parameters:
        `subEditor` - an instance of the Editor type previously passed into `CompositeEditor.EditorChain.attach(C, E)`
      Returns:
        the path element as a String

    - #### getValue

          public T getValue()

      Description copied from interface: `TakesValue`
      Returns the current value.
      Specified by:
        `getValue` in interface `TakesValue<T>`
      Returns:
        the value as an object of type V
      See Also:
        `TakesValue.setValue(V)`

    - #### onPropertyChange

          public void onPropertyChange(java.lang.String... paths)

      Description copied from interface: `ValueAwareEditor`
      Notifies the Editor that one or more value properties have changed. Not all backing services support property-based notifications.
      Specified by:
        `onPropertyChange` in interface `ValueAwareEditor<T>`
      Parameters:
        `paths` - a list of String paths

    - #### setDelegate

          public void setDelegate(EditorDelegate<T> delegate)

      Description copied from interface: `HasEditorDelegate`
      Called by the EditorDriver to provide access to the EditorDelegate the Editor is peered with.
      Specified by:
        `setDelegate` in interface `HasEditorDelegate<T>`
      Parameters:
        `delegate` - an `EditorDelegate` of type T

    - #### setEditorChain

          public void setEditorChain(CompositeEditor.EditorChain<T,E> chain)

      Description copied from interface: `CompositeEditor`
      Called by the Editor framework to provide the `CompositeEditor.EditorChain`.
      Specified by:
        `setEditorChain` in interface `CompositeEditor<T,T,E extends Editor<? super T>>`
      Parameters:
        `chain` - an `CompositeEditor.EditorChain` instance

    - #### setValue

          public void setValue(T value)

      Description copied from interface: `ValueAwareEditor`
      Called by the EditorDriver to set the object the Editor is peered with

      ValueAwareEditors should preferentially use sub-editors to alter the properties of the object being edited.

      Specified by:
        `setValue` in interface `ValueAwareEditor<T>`
      Specified by:
        `setValue` in interface `TakesValue<T>`
      Parameters:
        `value` - a value of type T
      See Also:
        `TakesValue.getValue()`