$package("js.ui.list");

js.ui.list.AbstractListSelectionModel = function(){
	this.delegate = new js.lang.Array();
}
js.ui.list.AbstractListSelectionModel.prototype = new js.lang.BaseObject();

js.ui.list.AbstractListSelectionModel.prototype.SINGLE_SELECTION = 0;
js.ui.list.AbstractListSelectionModel.prototype.SINGLE_INTERVAL_SELECTION = 1;
js.ui.list.AbstractListSelectionModel.prototype.MULTIPLE_INTERVAL_SELECTION = 2;

js.ui.list.AbstractListSelectionModel.prototype.selectionMode = js.ui.list.AbstractListSelectionModel.prototype.MULTIPLE_INTERVAL_SELECTION;

js.ui.list.AbstractListSelectionModel.prototype.getSelectionMode = function(){
	return this.selectionMode;
}
js.ui.list.AbstractListSelectionModel.prototype.setSelectionMode = function(selectionMode){
	switch (selectionMode) {
		case this.SINGLE_SELECTION:
		case this.SINGLE_INTERVAL_SELECTION:
		case this.MULTIPLE_INTERVAL_SELECTION:
			this.selectionMode = selectionMode;
			break;
		default:
			throw props("invalid selectionMode");
	}
}
js.ui.list.AbstractListSelectionModel.prototype.isSelected = function(index){
	return this.delegate[index];
}

js.ui.list.AbstractListSelectionModel.prototype.setSelected = function(index, value){
	if(index<0){
		this.clearSelection();
		return;
	}
	if(value && this.selectionMode == this.SINGLE_SELECTION){
		this.clearSelection();
	}
	this.delegate[index] = value;
}
js.ui.list.AbstractListSelectionModel.prototype.insertSelected = function(value, index){
	this.delegate.insertItem(value, index);
}
js.ui.list.AbstractListSelectionModel.prototype.removeItemAt = function(index){
	this.delegate.removeItemAt(index);
}

js.ui.list.AbstractListSelectionModel.prototype.clearSelection = function(){
	this.delegate.length = 0;
}

js.ui.list.AbstractListSelectionModel.prototype.getSelectedIndex = function(){
	for(var i = 0; i < this.delegate.length; i++){
		if(this.isSelected(i))
			return i;
	}
	return -1;
}
js.ui.list.AbstractListSelectionModel.prototype.getSelectedIndices = function(){
	var retArray = new Array();
	for(var i = 0; i < this.delegate.length; i++){
		if(this.isSelected(i))
			retArray.addItem(i);
	}
	return retArray;
}

