All Downloads are FREE. Search and download functionalities are using the official Maven repository.

commonMain.jetbrains.datalore.base.observable.property.SimpleCollectionProperty.kt Maven / Gradle / Ivy

There is a newer version: 4.5.3-alpha1
Show newest version
/*
 * Copyright (c) 2019. JetBrains s.r.o.
 * Use of this source code is governed by the MIT license that can be found in the LICENSE file.
 */

package jetbrains.datalore.base.observable.property

import jetbrains.datalore.base.observable.collections.CollectionItemEvent
import jetbrains.datalore.base.observable.collections.CollectionListener
import jetbrains.datalore.base.observable.collections.ObservableCollection
import jetbrains.datalore.base.registration.Registration

abstract class SimpleCollectionProperty
protected constructor(
    protected val collection: ObservableCollection,
    initialValue: ValueT) :
        BaseDerivedProperty(initialValue) {
    //        BaseDerivedProperty() {
    private var myRegistration: Registration? = null

    override fun doAddListeners() {
        myRegistration = collection.addListener(object :
            CollectionListener {
            override fun onItemAdded(event: CollectionItemEvent) {
                somethingChanged()
            }

            override fun onItemSet(event: CollectionItemEvent) {
                somethingChanged()
            }

            override fun onItemRemoved(event: CollectionItemEvent) {
                somethingChanged()
            }
        })
    }

    override fun doRemoveListeners() {
        myRegistration!!.remove()
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy