
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