Oops, missed a detail (I was cutting and pasting from existing code
and editing madly.) Here's new code:
public abstract class CollectionEditPage extends BasePage implements
PageRenderListener {
public abstract ListEditMap getMap();
public abstract void setMap(ListEditMap map);
public abstract List getCollections(); // I'm going to assume each
collection can be iterated like a list
// Builds the master list
public void pageBeginRender(PageEvent event) {
super.pageBeginRender(event);
ListEditMap map = new ListEditMap();
List collections = getCollections();
int counter = 0;
for (Iterator iter = collections.iterator(); iter.hasNext();) {
Collection collection = (Collection) iter.next();
for (Iterator itemIter = collection.iterator();
itemIter.hasNext();) {
ItemWrapper wrapper = new ItemWrapper(collection,
itemIter.next());
map.add(new Integer(counter++), wrapper); // key by a
sequential count
}
setMap(map);
}
// Use currentItem.item and currentItem.toBeDeleted on your page
public abstract void setCurrentItem(ItemWrapper info);
public void synchronize(IRequestCycle cycle) {
ItemWrapper info = (ItemWrapper) getMap().getValue();
setCurrentItem(info); // You should handle the case where
info == null; often by throwing an exception
}
public void doFormSubmission(IRequestCycle cycle) {
for (Iterator iter = map.getAllValues().iterator();
iter.hasNext();) {
ItemWrapper wrapper = (ItemWrapper) iter.next();
if (wrapper.isToBeDeleted())
wrapper.getCollection().remove(wrapper.getItem());
}
}
}
public class ItemWrapper {
private Collection collection;
private Object item;
private boolean toBeDeleted;
public ItemWrapper(Collection c, Object i) {
collection = c;
item = i;
toBeDeleted = false;
}
public Collection getCollection() { return collection; }
public Object getItem() { return item; }
public boolean isToBeDeleted() { return toBeDeleted; }
public void setToBeDeleted(boolean delete) { toBeDeleted = delete; }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]