/*
* Copyright (C) NetStruxr, Inc. All rights reserved.
*
* This software is published under the terms of the NetStruxr
* Public Software License version 0.5, a copy of which has been
* included with this distribution in the LICENSE.NPL file. */
package er.extensions.components;
import com.webobjects.appserver.WOComponent;
import com.webobjects.appserver.WOContext;
import com.webobjects.foundation.NSArray;
import com.webobjects.foundation.NSMutableArray;
/**
* Useful when given a list of n items and you want to display m keys. This will
* construct a table nxm and push the current indexes up though the bindings.
*
* @binding list
* @binding item
* @binding repetetions
* @binding index
* @binding row
* @binding col
* @binding maxColumns
* @binding cellBackgroundColor
*/
public class ERXRepeatingTable extends WOComponent {
/**
* Do I need to update serialVersionUID?
* See section 5.6 <cite>Type Changes Affecting Serialization</cite> on page 51 of the
* <a href="http://java.sun.com/j2se/1.4/pdf/serial-spec.pdf">Java Object Serialization Spec</a>
*/
private static final long serialVersionUID = 1L;
public ERXRepeatingTable(WOContext aContext) {
super(aContext);
}
@Override
public boolean isStateless() {
return true;
}
@Override
public void reset() {
_repeatingList = null;
super.reset();
}
private NSMutableArray _repeatingList;
public NSArray repeatingList() {
if (_repeatingList == null) {
_repeatingList = new NSMutableArray();
NSArray list = (NSArray) valueForBinding("list");
Integer numberOfRepetetions = (Integer) valueForBinding("repetitions");
if (numberOfRepetetions == null) {
numberOfRepetetions = (Integer) valueForBinding("repetetions");
}
for (int i = 0; i < numberOfRepetetions.intValue(); i++) {
_repeatingList.addObjectsFromArray(list);
}
}
return _repeatingList;
}
}