/*******************************************************************************
* Copyright (c) 2013 BREDEX GmbH.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* BREDEX GmbH - initial API and implementation and/or initial documentation
*******************************************************************************/
package org.eclipse.jubula.rc.javafx.components;
import java.util.List;
import javafx.collections.ListChangeListener;
import javafx.event.EventTarget;
import org.eclipse.jubula.rc.javafx.listener.ComponentHandler;
/**
* Handles List Changes in the AUT
*
* @author BREDEX GmbH
* @created 24.10.2013
*/
public class ChildListChangeHandler implements ListChangeListener<EventTarget> {
/** Hierarchy **/
private AUTJavaFXHierarchy m_hierarchy = ComponentHandler.getAutHierarchy();
@Override
public void onChanged(Change<? extends EventTarget> c) {
c.next();
List<? extends EventTarget> changedObjects = c.getRemoved();
for (EventTarget o : changedObjects) {
m_hierarchy.removeComponentFromHierarchy(o);
}
// Needed for the fact that sometimes the change getTo() has a higher value than the list itself
List<? extends EventTarget> list = c.getList();
int size = list.size();
if (c.wasAdded() && c.getTo() > size) {
changedObjects = list.subList(c.getFrom(), size);
} else {
changedObjects = c.getAddedSubList();
}
for (EventTarget o : changedObjects) {
m_hierarchy.createHierarchyFrom(o);
}
}
}