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)); addTabs(permutatedTabs, change.getFrom()); getSkinnable().getSelectionModel().select(selectedTab); insertIndex = change.getFrom();
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); }
while (c.next()) { if (c.wasAdded()) { this.buttonArea.getChildren().addAll(c.getFrom(), c.getAddedSubList().stream().map(b -> { Button bu = new Button(); bu.setUserData(b);
while (change.next()) { if (change.wasPermutated()) { for (int i = change.getFrom(); i < change.getTo(); ++i) {
while (c.next()) { if (c.wasAdded()) { this.buttonArea.getChildren().addAll(c.getFrom(), c.getAddedSubList().stream().map(b -> { Button bu = new Button(); bu.textProperty().bind(b.labelProperty());
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)); b.remove(change.getFrom(), change.getFrom() + change.getRemovedSize()); List<B> addedMapped = added.stream().map(map).collect(Collectors.toList()); b.addAll(change.getFrom(), addedMapped); 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++) { b.set(change.getFrom(), updatedMapped.get(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()); }
@SuppressWarnings("unchecked") private void onPanesChanged(final ListChangeListener.Change<? extends PartConfig<?, ?>> change) { while (change.next()) { System.out.println(change); if (change.wasPermutated()) { System.err.println("PERMUTATION -------------------------------------------------------------------"); // getView().removeTab(change.getList().get(change.getFrom())); // getView().addTab(0, change.getList().get(change.getFrom())); } if (change.wasRemoved()) { final List<PartConfig<?, ?>> rList = (List<PartConfig<?, ?>>) change.getRemoved(); callCommand(RemoveDockCommand.class, DockWaveBean.create().dockConfig(object()).parts(rList.toArray(new PartConfig<?, ?>[0]))); } if (change.wasAdded()) { // index change.getFrom() callCommand(AddDockCommand.class, DockWaveBean.create().dockConfig(object()).parts(change.getList().get(change.getFrom()))); } } }
@SuppressWarnings("unchecked") private void onTabsChangedJAT(final ListChangeListener.Change<? extends Dockable> change) { final SequentialTransition st = new SequentialTransition(); while (change.next()) { System.out.println(change); if (change.wasPermutated()) { System.err.println("PERMUTATION -------------------------------------------------------------------"); // getView().removeTab(change.getList().get(change.getFrom())); // getView().addTab(0, change.getList().get(change.getFrom())); } if (change.wasRemoved()) { st.getChildren().add(view().removeTab((List<Dockable>) change.getRemoved())); } if (change.wasAdded()) { st.getChildren().add(view().addTab(change.getFrom(), change.getList().get(change.getFrom()))); } } st.play(); }
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); }
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); } }
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) {
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 getFrom() { return c.getFrom(); }
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); }