if (change.wasPermutated()) { Tab selectedTab = getSkinnable().getSelectionModel().getSelectedItem(); List<Tab> permutatedTabs = new ArrayList<>(change.getTo() - change.getFrom()); getSkinnable().getSelectionModel().clearSelection(); for (int i = change.getFrom(); i < change.getTo(); i++) { permutatedTabs.add(getSkinnable().getTabs().get(i));
private void replace(ListChangeListener.Change<? extends S> c) { int from = c.getFrom(); int to = c.getTo(); List<T> removed = new ArrayList<>(); Function<S, T> function = resolveMapper(); for (int i = from; i < to; i++) { elements[i] = function.apply(c.getList().get(i)); removed.add(elements[i]); } nextReplace(from, to, removed); }
/** * Sync the content of the {@code target} list with the {@code source} list. * @return a subscription that can be used to stop syncing the lists. */ public static <T> Subscription listBind( List<? super T> target, ObservableList<? extends T> source) { target.clear(); target.addAll(source); ListChangeListener<? super T> listener = change -> { while(change.next()) { int from = change.getFrom(); int to = change.getTo(); if(change.wasPermutated()) { target.subList(from, to).clear(); target.addAll(from, source.subList(from, to)); } else { target.subList(from, from + change.getRemovedSize()).clear(); target.addAll(from, source.subList(from, from + change.getAddedSize())); } } }; source.addListener(listener); return () -> source.removeListener(listener); }
if (change.wasPermutated()) { Tab selectedTab = getSkinnable().getSelectionModel().getSelectedItem(); List<Tab> permutatedTabs = new ArrayList<>(change.getTo() - change.getFrom()); getSkinnable().getSelectionModel().clearSelection(); for (int i = change.getFrom(); i < change.getTo(); i++) { permutatedTabs.add(getSkinnable().getTabs().get(i));
while (c.next()) { if (c.wasPermutated()) { int[] perm = new int[c.getTo() - c.getFrom() + 1]; int permIndex = 0; for(int i = c.getFrom(); i <= c.getTo(); i++) { perm[permIndex] = i; permIndex++; nextPermutation(c.getFrom(), c.getTo(), perm); } else if (c.wasUpdated()) { nextUpdate(c.getFrom()); replacedItems.add(removedProperty.get()); nextReplace(c.getFrom(), c.getTo(), replacedItems); } else if(c.wasAdded()) { nextAdd(c.getFrom(), c.getTo()); } else if(c.wasRemoved()) { List<S> removedItems = new ArrayList<>();
while (change.next()) { if (change.wasPermutated()) { for (int i = change.getFrom(); i < change.getTo(); ++i) {
while (change.next()) { if (change.wasPermutated()) { for (int i = change.getFrom(); i < change.getTo(); ++i) {
while (change.next()) { if (change.wasPermutated()) { List<B> beforePermutate = b.subList(change.getFrom(), change.getTo()); for (int i = 0; i < beforePermutate.size(); i++) { b.set(change.getPermutation(change.getFrom() + i), beforePermutate.get(i)); List<? extends A> updated = a.subList(change.getFrom(), change.getTo()); List<B> updatedMapped = updated.stream().map(map).collect(Collectors.toList()); for (int i = 0; i < updatedMapped.size(); i++) {
public static <T> Observable<ListChange<T>> fromObservableListChanges(final ObservableList<T> source) { return Observable.create((ObservableOnSubscribe<ListChange<T>>) subscriber -> { ListChangeListener<T> listener = c -> { while (c.next()) { if (c.wasAdded()) { c.getAddedSubList().forEach(v -> subscriber.onNext(ListChange.of(v,Flag.ADDED))); } if (c.wasRemoved()) { c.getRemoved().forEach(v -> subscriber.onNext(ListChange.of(v,Flag.REMOVED))); } if (c.wasUpdated()) { for (int i = c.getFrom(); i < c.getTo(); i++) { subscriber.onNext(ListChange.of(c.getList().get(i),Flag.UPDATED)); } } } }; source.addListener(listener); subscriber.setDisposable(JavaFxSubscriptions.unsubscribeInEventDispatchThread(() -> source.removeListener(listener))); }).subscribeOn(JavaFxScheduler.platform()); }
public static <T> Observable<ListChange<T>> fromObservableListChanges(final ObservableList<T> source) { return Observable.create((ObservableOnSubscribe<ListChange<T>>) subscriber -> { ListChangeListener<T> listener = c -> { while (c.next()) { if (c.wasAdded()) { c.getAddedSubList().forEach(v -> subscriber.onNext(ListChange.of(v,Flag.ADDED))); } if (c.wasRemoved()) { c.getRemoved().forEach(v -> subscriber.onNext(ListChange.of(v,Flag.REMOVED))); } if (c.wasUpdated()) { for (int i = c.getFrom(); i < c.getTo(); i++) { subscriber.onNext(ListChange.of(c.getList().get(i),Flag.UPDATED)); } } } }; source.addListener(listener); subscriber.setDisposable(JavaFxSubscriptions.unsubscribeInEventDispatchThread(() -> source.removeListener(listener))); }).subscribeOn(JavaFxScheduler.platform()); }
public static <T> Observable<T> fromObservableListUpdates(final ObservableList<T> source) { return Observable.create((ObservableOnSubscribe<T>) subscriber -> { ListChangeListener<T> listener = c -> { while (c.next()) { if (c.wasUpdated()) { for (int i = c.getFrom(); i < c.getTo(); i++) { subscriber.onNext(c.getList().get(i)); } } } }; source.addListener(listener); subscriber.setDisposable(JavaFxSubscriptions.unsubscribeInEventDispatchThread(() -> source.removeListener(listener))); }).subscribeOn(JavaFxScheduler.platform()); } public static <T> Observable<ListChange<T>> fromObservableListChanges(final ObservableList<T> source) {
static <E, F extends E> TransientListChange<E> fromCurrentStateOf(Change<F> ch) { List<F> list = ch.getList(); int from = ch.getFrom(); int to = ch.getTo(); List<F> removed; if(ch.wasPermutated()) { int len = to - from; removed = new ArrayList<>(len); for(int i = 0; i < len; ++i) { int pi = ch.getPermutation(from + i); removed.add(list.get(pi)); } } else { removed = ch.getRemoved(); } return new TransientListChangeImpl<>(ch.getList(), from, to, removed); } }
private void remove(ListChangeListener.Change<? extends S> c) { int from = c.getFrom(); int size = elements.length - c.getRemovedSize(); int to = c.getTo(); to = to == from ? from + c.getRemovedSize() - 1 : to; List<T> removed = new ArrayList<>(); T[] tmp = (T[]) new Object[size]; for (int i = 0, j = 0; i < elements.length; i++) { if (i < from || i > to) { tmp[j++] = elements[i]; } else { removed.add(elements[i]); } } elements = tmp; nextRemove(from, removed); }
private void configureItemChangeListener() { items.addListener((ListChangeListener<E>) c -> { while (c.next()) { if (c.wasRemoved()) getChildren().remove(c.getFrom(), c.getTo() + 1); if (c.wasAdded()) { for (int i = 0; i < c.getAddedSize(); i++) { E item = c.getAddedSubList().get(i); Node cell = getCellFactory().apply(this, item); getChildren().add(i + c.getFrom(), cell); } } } }); }
public static <T> Observable<T> fromObservableListUpdates(final ObservableList<T> source) { return Observable.create((ObservableOnSubscribe<T>) subscriber -> { ListChangeListener<T> listener = c -> { while (c.next()) { if (c.wasUpdated()) { for (int i = c.getFrom(); i < c.getTo(); i++) { subscriber.onNext(c.getList().get(i)); } } } }; source.addListener(listener); subscriber.setDisposable(JavaFxSubscriptions.unsubscribeInEventDispatchThread(() -> source.removeListener(listener))); }).subscribeOn(JavaFxScheduler.platform()); } public static <T> Observable<ListChange<T>> fromObservableListChanges(final ObservableList<T> source) {
@Override public int getTo() { return c.getTo(); }
private void update(ListChangeListener.Change<? extends S> c) { int from = c.getFrom(); int to = c.getTo(); Function<S, T> function = resolveMapper(); for (int i = from; i < to; i++) { elements[i] = function.apply(c.getList().get(i)); nextUpdate(i); } }
private void permutate(ListChangeListener.Change<? extends S> c) { int from = c.getFrom(); int to = c.getTo(); int[] perms = new int[from - to]; Function<S, T> function = resolveMapper(); for (int i = from, j = 0; i < to; i++) { perms[j++] = c.getPermutation(i); elements[i] = function.apply(c.getList().get(i)); } nextPermutation(from, to, perms); }