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