package au.com.vaadinutils.fields;
import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
import java.util.TreeSet;
public class MarkedIds
{
final Set<Object> markedIds = new TreeSet<Object>();
private boolean trackingSelected = true;
private Set<SelectionListener> selectionListeners = new HashSet<SelectionListener>();
private int containerSize;
public void addSelectionListener(SelectionListener selectionListener)
{
selectionListeners.add(selectionListener);
}
private void updateSelectionListeners()
{
int count = markedIds.size();
if (!trackingSelected)
{
count = containerSize - count;
}
for (SelectionListener listener : selectionListeners)
{
listener.selectedItems(count);
}
}
public void clear(boolean b, int containerSize)
{
markedIds.clear();
trackingSelected = b;
this.containerSize = containerSize;
updateSelectionListeners();
}
public void addAll(Collection<Long> value)
{
markedIds.addAll(value);
updateSelectionListeners();
}
public void add(Object itemId)
{
markedIds.add(itemId);
updateSelectionListeners();
}
public void remove(Object itemId)
{
markedIds.remove(itemId);
updateSelectionListeners();
}
public boolean contains(Object itemId)
{
return markedIds.contains(itemId);
}
public void removeAll(Collection<Long> ids)
{
markedIds.removeAll(ids);
updateSelectionListeners();
}
public Collection<?> getIds()
{
return markedIds;
}
// Logger logger = LogManager.getLogger();
public boolean isTrackingSelected()
{
return trackingSelected;
}
}