Class ListContentsChangeManager<T>

java.lang.Object
com.amalgamasimulation.desktop.binding.ListContentsChangeManager<T>
Type Parameters:
T - - дженерик типа объектов листа

public class ListContentsChangeManager<T> extends Object
Класс, схожий по принципу работы с ObservableList, но решающий задачу отслеживания изменений в более сложных структурах данных, например, во внутренних полях всех объектов листа. Пример использования: 1. Вызов конструктора с указанием листа объектов 2. Добавление отслеживаемых полей посредством вызова методов addStructuralFeature 3. Регистрация колбеков - listeners 4. Вызов метода initialize После завершения работы менеджера или при удалении класса-овнера, необходимо вручную вызвать метод dispose
Author:
Aleksey
  • Constructor Details

    • ListContentsChangeManager

      public ListContentsChangeManager(org.eclipse.core.databinding.observable.list.IObservableList<T> observableList)
      Базовый конструктор класса
      Parameters:
      observableList - - лист, изменения которого требуется отслеживать
    • ListContentsChangeManager

      public ListContentsChangeManager(org.eclipse.core.databinding.observable.value.IObservableValue<?> observableValue, org.eclipse.emf.databinding.FeaturePath featurePath)
  • Method Details

    • addStructuralFeatures

      public ListContentsChangeManager<T> addStructuralFeatures(org.eclipse.emf.ecore.EStructuralFeature... eStructuralFeatures)
    • addStructuralFeature

      public ListContentsChangeManager<T> addStructuralFeature(org.eclipse.emf.ecore.EStructuralFeature eStructuralFeature, org.eclipse.emf.ecore.EStructuralFeature... additionalFeatures)
      Регистрирует отслеживаемое поле
      Parameters:
      eStructuralFeature - - поле объекта, изменение которого требует отслеживания
      additionalFeatures - - дополнительные дескрипторы полей, которые используются, если поле объекта является листом, а каждый объект этого листа имеет свой список отслеживаемых полей. Например, если объектом базовой коллекции являются расписания, а отслеживанию подвергаются изменения коллекции строк расписаний (=eStructuralFeature) с точки зрения их внутренних полей (=additionalFeatures) Применяется только в случае, если первый параметр (eStructuralFeature) имеет тип list!
      Returns:
      this
    • addStructuralFeature

      public ListContentsChangeManager<T> addStructuralFeature(org.eclipse.emf.ecore.EStructuralFeature eStructuralFeature, Predicate<T> predicate, org.eclipse.emf.ecore.EStructuralFeature... additionalFeatures)
      Расширенный регистратор отслеживаемых полей, имеющий возможность отфильтровать исходную коллекцию по заданному predicate
      Parameters:
      eStructuralFeature -
      predicate - - используется для фильтрации
      additionalFeatures -
      Returns:
    • addFeaturePath

      public ListContentsChangeManager<T> addFeaturePath(org.eclipse.emf.databinding.FeaturePath featurePath)
    • addFeaturePaths

      public ListContentsChangeManager<T> addFeaturePaths(org.eclipse.emf.databinding.FeaturePath... featurePaths)
    • addFeaturePath

      public ListContentsChangeManager<T> addFeaturePath(org.eclipse.emf.databinding.FeaturePath featurePath, Predicate<T> predicate)
    • addListContentStateChangeListener

      public ListContentsChangeManager<T> addListContentStateChangeListener(Consumer<ListContentStateChangeEvent> listener)
    • addListContentsChangeListener

      public ListContentsChangeManager<T> addListContentsChangeListener(Consumer<ListContentsChangeEvent<T>> listener)
    • addChildListContentsChangeListeners

      public ListContentsChangeManager<T> addChildListContentsChangeListeners(Consumer<ChildListContentsChangeEvent<T,?>> listener)
    • clearListeners

      public ListContentsChangeManager<T> clearListeners()
    • invalidateSource

      public void invalidateSource()
    • setPaused

      public void setPaused(boolean paused)
      Используется для решения проблем производительности при выполнении больших групповых операций. Отключает/включает все колбеки
      Parameters:
      paused -
    • isPaused

      public boolean isPaused()
    • initialize

      public ListContentsChangeManager<T> initialize()
    • dispose

      public void dispose()