Class SetProperty<S,​E>

  • Type Parameters:
    S - type of the source object
    E - type of the elements in the set
    All Implemented Interfaces:
    IProperty, ISetProperty<S,​E>
    Direct Known Subclasses:
    DelegatingSetProperty, SimpleSetProperty, UnionSetProperty

    public abstract class SetProperty<S,​E>
    extends Object
    implements ISetProperty<S,​E>
    Abstract implementation of ISetProperty
    Since:
    1.2
    Implementation Note:
    If methods are added to the interface which this class implements then implementations of those methods must be added to this class.
    • Constructor Detail

      • SetProperty

        public SetProperty()
    • Method Detail

      • getSet

        public Set<E> getSet​(S source)
        By default, this method returns Collections.EMPTY_SET in case the source object is null. Otherwise, this method delegates to doGetSet(Object).

        Clients may override this method if they e.g. want to return a specific default set in case the source object is null.

        Specified by:
        getSet in interface ISetProperty<S,​E>
        Parameters:
        source - the property source (may be null)
        Returns:
        an unmodifiable Set with the current contents of the source's set property
        Since:
        1.3
        See Also:
        doGetSet(Object)
      • doGetSet

        protected Set<E> doGetSet​(S source)
        Returns a Set with the current contents of the source's set property
        Parameters:
        source - the property source
        Returns:
        a Set with the current contents of the source's set property
        Since:
        1.6
        Restriction:
        This method is not intended to be referenced by clients.
      • setSet

        public final void setSet​(S source,
                                 Set<E> set)
        Description copied from interface: ISetProperty
        Updates the property on the source with the specified change.

        Note: This method is made available to facilitate basic property access. However if the property source lacks property change notification, then observables on the source object may not be notified of the change. In most cases it is preferable to modify the source through an IObservableSet than through the property directly.

        Specified by:
        setSet in interface ISetProperty<S,​E>
        Parameters:
        source - the property source (may be null)
        set - the new set
        Since:
        1.3
      • doSetSet

        protected void doSetSet​(S source,
                                Set<E> set)
        Updates the property on the source with the specified change.
        Parameters:
        source - the property source
        set - the new set
        Since:
        1.6
        Restriction:
        This method is not intended to be referenced by clients.
      • updateSet

        public final void updateSet​(S source,
                                    SetDiff<E> diff)
        Description copied from interface: ISetProperty
        Updates the property on the source with the specified change.

        Note: This method is made available to facilitate basic property access. However if the property source lacks property change notification, then observables on the source object may not be notified of the change. In most cases it is preferable to modify the source through an IObservableSet than through the property directly.

        Specified by:
        updateSet in interface ISetProperty<S,​E>
        Parameters:
        source - the property source (may be null)
        diff - a diff describing the change
        Since:
        1.3
      • doUpdateSet

        protected void doUpdateSet​(S source,
                                   SetDiff<E> diff)
        Updates the property on the source with the specified change.
        Parameters:
        source - the property source
        diff - a diff describing the change
        Since:
        1.6
        Restriction:
        This method is not intended to be referenced by clients.
      • observe

        public IObservableSet<E> observe​(S source)
        Description copied from interface: ISetProperty
        Returns an observable set observing this set property on the given property source
        Specified by:
        observe in interface ISetProperty<S,​E>
        Parameters:
        source - the property source
        Returns:
        an observable set observing this set property on the given property source
      • setFactory

        public IObservableFactory<S,​IObservableSet<E>> setFactory()
        Description copied from interface: ISetProperty
        Returns a factory for creating observable sets tracking this property of a particular property source.
        Specified by:
        setFactory in interface ISetProperty<S,​E>
        Returns:
        a factory for creating observable sets tracking this property of a particular property source.
      • setFactory

        public IObservableFactory<S,​IObservableSet<E>> setFactory​(Realm realm)
        Description copied from interface: ISetProperty
        Returns a factory for creating observable sets in the given realm, tracking this property of a particular property source.
        Specified by:
        setFactory in interface ISetProperty<S,​E>
        Parameters:
        realm - the realm
        Returns:
        a factory for creating observable sets in the given realm, tracking this property of a particular property source.
      • observeDetail

        public <U extends SIObservableSet<E> observeDetail​(IObservableValue<U> master)
        Description copied from interface: ISetProperty
        Returns an observable set on the master observable's realm which tracks this property of the current value of master.
        Specified by:
        observeDetail in interface ISetProperty<S,​E>
        Parameters:
        master - the master observable
        Returns:
        an observable set on the given realm which tracks this property of the current value of master.
      • values

        public final <T> IMapProperty<S,​E,​T> values​(IValueProperty<? super E,​T> detailValues)
        Description copied from interface: ISetProperty
        Returns the nested combination of this property and the specified detail value property. Note that because this property is a projection of value properties over a set, the only modifications supported are through the IObservableMap.put(Object, Object) and Map.putAll(java.util.Map) methods. In the latter case, this property does not put entries for keys not already in the master key set. Modifications made through the returned property are delegated to the detail property, using the corresponding set element from the master property as the source.
        Specified by:
        values in interface ISetProperty<S,​E>
        Parameters:
        detailValues - the detail property
        Returns:
        the nested combination of the master set and detail value properties