From: "Michael Heuer" <[EMAIL PROTECTED]> > On Sat, 7 Jun 2003, Stephen Colebourne wrote: > > > Proposal #3 (Colebourne - merged from #1 and #2): > > -------------------------- > > public boolean addAll(int index, Collection c){ > > if (preAddAll(index, c)) { > > result = backingList.addAll(index, c); > > postAddAll(index, c, result); > > } > > return result; > > } > > I might be missing something here, but in order to support > oldSize/newSize in the event object in this design, I think I'd have to > pass some state from the pre to the post method, e.g.
I was thinking that the decorator could store the info as an instance variable. It should work fine. Stephen > > class AbstractXxxCollection > extends AbstractCollectionDecorator > { > public boolean add(Object o) > { > boolean result = false; > if (preAdd(o)) > { > result = super.add(o); > postAdd(o); > } > return result; > } > protected boolean preAdd(Object o) { return true; } > protected void postAdd(Object o) {} > } > > class ObservableCollection > extends AbstractXxxCollection > { > protected boolean preAdd(Object o) > { > int oldSize = size(); > return true; > } > protected void postAdd(Object o) > { > fireElementAdded(oldSize, size(), o); > } > } > > something like, > > protected boolean preAdd(Object o, Map ctx) > { > ctx.put("oldSize", new Integer(size())); > return true; > } > protected void postAdd(Object o, Map ctx) > { > int oldSize = ((Integer) ctx.get("oldSize")).intValue(); > fireElementAdded(oldSize, size(), o); > } > > michael > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]