public MyTrackContainer() {
}
public MyTrackContainer(Iterable<Track> t) {
for (Track track : t) {
tracks.add(track);
selection.add(track);
}
}
public MyTrackContainer(Track[] t) {
this(List.of(t));
}
public boolean add(Track t) {
if (t == null) {
return false;
}
if (tracks.contains(t)) {
return false;
}
tracks.add(t);
return true;
}
public int addAll(Track[] t) {
int added = 0;
for (Track track : t) {
if (add(track)) {
added++;
}
}
return added;
}
public int filter(MyMatcher<Track> matcher) {
int removed = 0;
for (Iterator<Track> it = selection.iterator(); it.hasNext(); ) {
Track t = it.next();
if (!matcher.matches(t)) {
it.remove();
removed++;
}
}
return removed;
}
public int remove() {
int removed = selection.size();
for (Track track : selection) {
tracks.remove(track);
}
reset();
return removed;
}
public void reset() {
selection.retainAll(List.<Track>of());
selection.addAll(tracks);
}
public Track[] selection() {
return selection.toArray(new Track[0]);
}
public int size() {
return tracks.size();
}
public void sort(Comparator<Track> theComp, boolean asc) {
selection.sort(asc ? theComp : theComp.reversed());
}
}