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

com.cedarsoft.utils.ListChangeSupport Maven / Gradle / Ivy

package com.cedarsoft.utils;

import org.jetbrains.annotations.NotNull;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * Supplies support for list change support.
 */
public class ListChangeSupport {
  private List> listeners = new ArrayList>();

  public boolean add( @NotNull List backend, @NotNull T element ) {
    int index = backend.size();
    boolean returnValue = backend.add( element );
    fireAddEvent( index, element );
    return returnValue;
  }

  public void fireAddEvent( int index, @NotNull T element ) {
    if ( listeners.isEmpty() ) return;
    for ( ListChangeListener listener : new ArrayList>( listeners ) ) {
      listener.elementAdded( index, element );
    }
  }

  public void fireRemoveEvent( int index, @NotNull T element ) {
    if ( listeners.isEmpty() ) return;
    for ( ListChangeListener listener : new ArrayList>( listeners ) ) {
      listener.elementRemoved( index, element );
    }
  }

  public boolean remove( @NotNull List backend, @NotNull T element ) {
    int index = backend.indexOf( element );
    boolean returnValue = backend.remove( element );
    fireRemoveEvent( index, element );
    return returnValue;
  }

  public void addListener( @NotNull ListChangeListener listener ) {
    listeners.add( listener );
  }

  public void removeListener( @NotNull ListChangeListener listener ) {
    listeners.remove( listener );
  }

  @NotNull
  public List> getListeners() {
    return Collections.unmodifiableList( listeners );
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy