package utils.nexus;
import java.awt.Rectangle;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
public class CharSets implements Iterable<CharSet>{
ArrayList<CharSet> backend = new ArrayList<CharSet>();
public CharSets() {
}
public CharSets(CharSets template){
this();
for(CharSet aCharset: template){
backend.add(aCharset.getCopy());
}
}
public Iterator<CharSet> iterator() {
return backend.iterator();
}
public int size() {
return backend.size();
}
public CharSets getCopy() {
return new CharSets(this);
}
public void add(CharSet charSet) {
backend.add(charSet);
Collections.sort(backend);
}
public int getMaxOverlapCount() {
int maxOverlapCount = 0;
for(CharSet aSet: backend){
int overlapCount = 0;
for(CharSet innerSet: backend){
// dont count intersecting itself
if(innerSet != aSet){
if(innerSet.intersects(aSet)){
overlapCount ++;
}
}
}
maxOverlapCount = Math.max(maxOverlapCount, overlapCount);
}
return maxOverlapCount;
}
public void deletePosition(int n) {
for(CharSet charset: backend){
charset.deletePosition(n);
}
Collections.sort(backend);
}
public void insertPosition(int n) {
for(CharSet charset: backend){
charset.insertPosition(n);
}
Collections.sort(backend);
}
public ArrayList<CharSet> getIntersected(Rectangle selection) {
ArrayList<CharSet> intersects = new ArrayList<CharSet>();
if(selection == null){
return intersects;
}
for(CharSet aSet: backend){
if(aSet.intersects((int)selection.getMinX(), (int)selection.getMaxX())){
intersects.add(aSet);
}
}
return intersects;
}
public void debug() {
for(CharSet aSet: backend){
aSet.debug();
}
}
}