Package org.eclipse.gef.common.beans.property

# Class ReadOnlyMapPropertyBaseEx<K,V>

java.lang.Object
javafx.beans.binding.MapExpression<K,V>
javafx.beans.property.ReadOnlyMapProperty<K,V>
javafx.beans.property.ReadOnlyMapPropertyBase<K,V>
org.eclipse.gef.common.beans.property.ReadOnlyMapPropertyBaseEx<K,V>

Type Parameters:
  `K` - The key type of the wrapped `ObservableMap`.
  `V` - The value type of the wrapped `ObservableMap`.

All Implemented Interfaces:
  `Map<K,V>`, `Observable`, `ReadOnlyProperty<ObservableMap<K,V>>`, `ObservableMapValue<K,V>`, `ObservableObjectValue<ObservableMap<K,V>>`, `ObservableValue<ObservableMap<K,V>>`, `ObservableMap<K,V>`

public abstract class ReadOnlyMapPropertyBaseEx<K,V> extends ReadOnlyMapPropertyBase<K,V>
A replacement for `ReadOnlyMapWrapper` to fix the following JavaFX issues:

- All listeners were removed when removing one (https://bugs.openjdk.java.net/browse/JDK-8136465): fixed by keeping track of all listeners and ensuring that remaining listeners are re-added when a listener is removed.
- Change notifications are fired even when the observed value did not change.(https://bugs.openjdk.java.net/browse/JDK-8089169)

## Property Summary

### Properties inherited from class javafx.beans.binding.MapExpression

`empty, size`

## Nested Class Summary

## Nested classes/interfaces inherited from interface java.util.Map

`Map.Entry<K extends Object,V extends Object>`

## Constructor Summary

Constructors
Constructor
Description
`ReadOnlyMapPropertyBaseEx()`

## Method Summary

Modifier and Type
Method
Description
`void`
`addListener(InvalidationListener listener)`
`void`
`addListener(ChangeListener<? super ObservableMap<K,V>> listener)`
`void`
`addListener(MapChangeListener<? super K,? super V> listener)`
`protected void`
`fireValueChangedEvent()`
`protected void`
`fireValueChangedEvent(MapChangeListener.Change<? extends K,? extends V> change)`
`int`
`hashCode()`
`void`
`removeListener(InvalidationListener listener)`
`void`
`removeListener(ChangeListener<? super ObservableMap<K,V>> listener)`
`void`
`removeListener(MapChangeListener<? super K,? super V> listener)`

### Methods inherited from class javafx.beans.property.ReadOnlyMapProperty

`bindContent, bindContentBidirectional, equals, toString, unbindContent, unbindContentBidirectional`

### Methods inherited from class javafx.beans.binding.MapExpression

`asString, clear, containsKey, containsValue, emptyProperty, entrySet, get, getSize, getValue, isEmpty, isEqualTo, isNotEqualTo, isNotNull, isNull, keySet, mapExpression, put, putAll, remove, size, sizeProperty, valueAt, valueAt, values`

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

`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

### Methods inherited from interface java.util.Map

`compute, computeIfAbsent, computeIfPresent, forEach, getOrDefault, merge, putIfAbsent, remove, replace, replace, replaceAll`

### Methods inherited from interface javafx.beans.value.ObservableObjectValue

`get`

### Methods inherited from interface javafx.beans.value.ObservableValue

`getValue`

### Methods inherited from interface javafx.beans.property.ReadOnlyProperty

`getBean, getName`

## Constructor Details

### ReadOnlyMapPropertyBaseEx

public ReadOnlyMapPropertyBaseEx()

## Method Details

### addListener

public void addListener(ChangeListener<? super ObservableMap<K,V>> listener)

Specified by:
  `addListener` in interface `ObservableValue<K>`
Overrides:
  `addListener` in class `ReadOnlyMapPropertyBase<K,V>`

### addListener

public void addListener(InvalidationListener listener)

Specified by:
  `addListener` in interface `Observable`
Overrides:
  `addListener` in class `ReadOnlyMapPropertyBase<K,V>`

### addListener

public void addListener(MapChangeListener<? super K,? super V> listener)

Specified by:
  `addListener` in interface `ObservableMap<K,V>`
Overrides:
  `addListener` in class `ReadOnlyMapPropertyBase<K,V>`

### fireValueChangedEvent

protected void fireValueChangedEvent()

Overrides:
  `fireValueChangedEvent` in class `ReadOnlyMapPropertyBase<K,V>`

### fireValueChangedEvent

protected void fireValueChangedEvent(MapChangeListener.Change<? extends K,? extends V> change)

Overrides:
  `fireValueChangedEvent` in class `ReadOnlyMapPropertyBase<K,V>`

### hashCode

public int hashCode()

Specified by:
  `hashCode` in interface `Map<K,V>`
Overrides:
  `hashCode` in class `ReadOnlyMapProperty<K,V>`

### removeListener

public void removeListener(ChangeListener<? super ObservableMap<K,V>> listener)

Specified by:
  `removeListener` in interface `ObservableValue<K>`
Overrides:
  `removeListener` in class `ReadOnlyMapPropertyBase<K,V>`

### removeListener

public void removeListener(InvalidationListener listener)

Specified by:
  `removeListener` in interface `Observable`
Overrides:
  `removeListener` in class `ReadOnlyMapPropertyBase<K,V>`

### removeListener

public void removeListener(MapChangeListener<? super K,? super V> listener)

Specified by:
  `removeListener` in interface `ObservableMap<K,V>`
Overrides:
  `removeListener` in class `ReadOnlyMapPropertyBase<K,V>`