/** * Factory method for a model, by default creates a model containing a {@link ProviderSubset}. * Depending on your {@link ITreeProvider}'s model you might consider to provide a custom * {@link Set} implementation. * <p> * Note: The contained {@link Set} has at least to implement {@link Set#add(Object)}, * {@link Set#remove(Object)} and {@link Set#contains(Object)}. * * @return model for this tree */ protected IModel<Set<T>> newModel() { return new ProviderSubset<>(provider).createModel(); }
@Override public boolean addAll(Collection<? extends T> ts) { boolean changed = false; for (T t : ts) { changed |= add(t); } return changed; }
@Override public boolean containsAll(Collection<?> cs) { for (Object c : cs) { if (!contains(c)) { return false; } } return true; }
@Override public void detach() { ProviderSubset.this.detach(); } };
public MultiSelectableContent(ITreeProvider<File> provider) { selected = new ProviderSubset<File>(provider, false); }
@Override public boolean removeAll(Collection<?> cs) { boolean changed = false; for (Object c : cs) { changed |= remove(c); } return changed; }
@Override public boolean add(T t) { return models.add(model(t)); }
@Override public void detach() { selected.detach(); }
public BootstrapMultiSelectableContent(ITreeProvider<File> provider) { selected = new ProviderSubset<File>(provider, false); }
@Override public boolean remove(Object o) { IModel<T> model = model(o); boolean removed = models.remove(model); model.detach(); return removed; }
@Override public void detach() { selected.detach(); }
@Override public boolean isSelected(File file) { return selected.contains(file); }
/** * Create a subset optionally containing all roots of the provider. * * @param provider * the provider of the complete set * @param addRoots * should all roots be added to this subset */ public ProviderSubset(ITreeProvider<T> provider, boolean addRoots) { this.provider = provider; if (addRoots) { Iterator<? extends T> roots = provider.getRoots(); while (roots.hasNext()) { add(roots.next()); } } }
@Override public boolean contains(Object o) { IModel<T> model = model(o); boolean contains = models.contains(model); model.detach(); return contains; }
@Override public void clear() { detach(); models.clear(); }
@Override public boolean isSelected(File file) { return selected.contains(file); }