package org.eclipse.ufacekit.ui.jfx.databinding;
import java.util.ArrayList;
import org.eclipse.core.databinding.observable.list.IListChangeListener;
import org.eclipse.core.databinding.observable.list.IObservableList;
import org.eclipse.core.databinding.observable.list.ListChangeEvent;
import com.sun.javafx.collections.ObservableListWrapper;
import javafx.collections.ListChangeListener;
import javafx.collections.ObservableList;
public class Util {
public static <E> ObservableList<E> create(final IObservableList dbList) {
final ObservableList<E> list = new ObservableListWrapper<E>(new ArrayList<E>(dbList));
final boolean[] sync = new boolean[1];
dbList.addListChangeListener(new IListChangeListener() {
@Override
public void handleListChange(ListChangeEvent event) {
if( ! sync[0] ) {
try {
sync[0] = true;
list.setAll(dbList);
} finally {
sync[0] = false;
}
}
}
});
list.addListener(new ListChangeListener<E>() {
@Override
public void onChanged(
javafx.collections.ListChangeListener.Change<? extends E> arg0) {
if( !sync[0] ) {
System.err.println("This is not yet implemented");
}
}
});
return list;
}
}