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]

Reply via email to