/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package com.eas.grid.processing;
import com.google.gwt.event.shared.HandlerRegistration;
import java.util.HashSet;
import java.util.Set;
/**
*
* @author mg
* @param <T>
*/
public abstract class TreeAdapter<T> implements Tree<T> {
protected final Set<Tree.ChangeHandler<T>> changesHandlers = new HashSet<>();
@Override
public HandlerRegistration addChangesHandler(final Tree.ChangeHandler<T> aHandler) {
changesHandlers.add(aHandler);
return new HandlerRegistration() {
@Override
public void removeHandler() {
changesHandlers.remove(aHandler);
}
};
}
public void added(T aElement) {
for (Tree.ChangeHandler<?> handler : changesHandlers.toArray(new Tree.ChangeHandler<?>[]{})) {
((Tree.ChangeHandler<T>) handler).added(aElement);
}
}
public void removed(T aElement) {
for (Tree.ChangeHandler<?> handler : changesHandlers.toArray(new Tree.ChangeHandler<?>[]{})) {
((Tree.ChangeHandler<T>) handler).removed(aElement);
}
}
public void changed(T aElement) {
for (Tree.ChangeHandler<?> handler : changesHandlers.toArray(new Tree.ChangeHandler<?>[] {})) {
((Tree.ChangeHandler<T>) handler).changed(aElement);
}
}
protected void everythingChanged() {
for (Tree.ChangeHandler<?> handler : changesHandlers.toArray(new Tree.ChangeHandler<?>[] {})) {
((Tree.ChangeHandler<T>) handler).everythingChanged();
}
}
}