package org.pentaho.platform.dataaccess.datasource.wizard.models;
import org.pentaho.ui.xul.stereotype.Bindable;
import org.pentaho.ui.xul.util.AbstractModelList;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
public class ColumnInfoCollection extends AbstractModelList<ColumnInfo> {
private int selectedCount = 0;
private PropertyChangeListener selectedListener = new PropertyChangeListener(){
public void propertyChange(PropertyChangeEvent evt) {
if(evt.getPropertyName().equals("include") || evt.getPropertyName().equals("children")){
int count = 0;
for(ColumnInfo ci : getChildren()) {
if (ci.isInclude()) {
count++;
}
}
setSelectedCount(count);
}
}
};
private void setSelectedCount(int count) {
int prev = selectedCount;
selectedCount = count;
firePropertyChange("selectedCount", prev, count);
}
@Bindable
public int getSelectedCount() {
return selectedCount;
}
public ColumnInfoCollection(){
}
public void onAdd(ColumnInfo child) {
child.addPropertyChangeListener(selectedListener);
}
public void onRemove(ColumnInfo child) {
child.removePropertyChangeListener(selectedListener);
}
}