Interface IMapProperty<S,​K,​V>

  • Type Parameters:
    S - type of the source object
    K - type of the keys to the map
    V - type of the values in the map
    All Superinterfaces:
    IProperty
    All Known Subinterfaces:
    IBeanMapProperty
    All Known Implementing Classes:
    DelegatingMapProperty, MapProperty, SimpleMapProperty

    public interface IMapProperty<S,​K,​V>
    extends IProperty
    Interface for map-typed properties
    Since:
    1.2
    See Also:
    MapProperty, SimpleMapProperty
    Restriction:
    This interface is not intended to be implemented by clients. Clients should instead subclass one of the classes that implement this interface. Note that direct implementers of this interface outside of the framework will be broken in future releases when methods are added to this interface.
    • Method Detail

      • getKeyType

        Object getKeyType()
        Returns the element type of the map's key set or null if the key set is untyped.
        Returns:
        the element type of the map's key set or null if the key set is untyped.
      • getValueType

        Object getValueType()
        Returns the element type of the map's values collection or null if the collection is untyped.
        Returns:
        the element type of the map's values collection or null if the collection is untyped.
      • getMap

        Map<K,​V> getMap​(S source)
        Returns an unmodifiable Map with the current contents of the source's map property.
        Parameters:
        source - the property source (may be null)
        Returns:
        a Map with the current contents of the source's map property
        Since:
        1.3
      • setMap

        void setMap​(S source,
                    Map<K,​V> map)
        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 IObservableMap than through the property directly.

        Parameters:
        source - the property source (may be null)
        map - the new map
        Since:
        1.3
      • updateMap

        void updateMap​(S source,
                       MapDiff<K,​V> diff)
        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 IObservableMap than through the property directly.

        Parameters:
        source - the property source (may be null)
        diff - a diff describing the change
        Since:
        1.3
      • observe

        IObservableMap<K,​V> observe​(S source)
        Returns an observable map observing this map property on the given property source
        Parameters:
        source - the property source
        Returns:
        an observable map observing this map-typed property on the given property source
      • observe

        IObservableMap<K,​V> observe​(Realm realm,
                                          S source)
        Returns an observable map observing this map property on the given property source
        Parameters:
        realm - the observable's realm
        source - the property source
        Returns:
        an observable map observing this map-typed property on the given property source
      • mapFactory

        IObservableFactory<S,​IObservableMap<K,​V>> mapFactory()
        Returns a factory for creating observable maps tracking this property of a particular property source.
        Returns:
        a factory for creating observable maps tracking this property of a particular property source.
      • mapFactory

        IObservableFactory<S,​IObservableMap<K,​V>> mapFactory​(Realm realm)
        Returns a factory for creating observable maps in the given realm, tracking this property of a particular property source.
        Parameters:
        realm - the realm
        Returns:
        a factory for creating observable maps in the given realm, tracking this property of a particular property source.
      • observeDetail

        <U extends SIObservableMap<K,​V> observeDetail​(IObservableValue<U> master)
        Returns an observable map on the master observable's realm which tracks this property of the values in the entry set of master.
        Parameters:
        master - the master observable
        Returns:
        an observable map on the master observable's realm which tracks this property of the values in the entry set of master.
      • values

        <T> IMapProperty<S,​K,​T> values​(IValueProperty<? super V,​T> detailValues)
        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 values collection, 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 entries for keys not already contained in the master map's key set. Modifications made through the returned property are delegated to the detail property, using the corresponding entry value from the master property as the source.
        Parameters:
        detailValues - the detail property
        Returns:
        the nested combination of the master map and detail value properties.