@Override public List<E> getRemoved() { ArrayList<E> res = new ArrayList<>(c.getRemovedSize()); for(F e: c.getRemoved()) { res.add(mapper.apply(e)); } return res; }
/** * 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); }
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); }
} else { if (change.wasRemoved()) { list.subList(change.getFrom(), change.getFrom() + change.getRemovedSize()).clear();
} else { if (change.wasRemoved()) { target.subList(change.getFrom(), change.getFrom() + change.getRemovedSize()).clear();
b.remove(change.getFrom(), change.getFrom() + change.getRemovedSize());
@Override public void onChanged(Change<? extends TreeItem<N>> c) { if (c.next() && c.wasReplaced() && c.getRemovedSize() == 1 && c.getRemoved().get(0).getValue() == null) { TreeItem<N> next = null; for (TreeItem<N> addedNode : c.getAddedSubList()) { if (treeModel.getName(addedNode.getValue()).equals(name)) { next = addedNode; break; } } if (next != null) { selectNode(next, pathList); } else { scrollToLastItem(last); } } c.getList().removeListener(this); } });