I was using FilteredList in one of my Pivot apps by setting a list of expense categories as the list data of a ListButton and filtering out the ones that the user wasn't authorized to bill to. But if it doesn't belong in the platform, I can do the filtering in application code...
-T On Sun, Aug 29, 2010 at 3:46 AM, Michael Allman <m...@allman.ms> wrote: > Np. I forgot to file the bug. I've been busy lately, but it turns out > there was a better way to do what I wanted to do than use a FilteredList > anyway. > > I have found this sort of thing valuable in my Flex work, but it wouldn't > bother me too much to implement my own version. > > Michael > > > On Fri, 27 Aug 2010, Greg Brown wrote: > >> I went ahead and made this change - if we think there is still some value >> in maintaining FilteredList, maybe we can resurrect it in the "extras" >> project or something. >> >> On Aug 27, 2010, at 2:40 PM, Greg Brown wrote: >> >>> Now that I look at FilteredList again, I have to wonder if it is worth >>> keeping. There's a lot of code there and, realistically, not that much >>> value. Also, I believe it is the only remaining class that still has the >>> potential for memory leaks if you forget to clear the source property (we >>> have gotten rid of all the others or re-implemented them such that this >>> isn't a problem). >>> >>> I think I might advocate eliminating this class for Pivot 2.0. >>> >>> G >>> >>> On Aug 25, 2010, at 8:22 AM, Greg Brown wrote: >>> >>>> Hi Michael, >>>> Can you submit your patch via JIRA? This sounds like a bug, so you can >>>> simply file it as such. >>>> Thanks! >>>> Greg >>>> >>>> On Aug 24, 2010, at 8:01 PM, Michael Allman wrote: >>>> >>>>> There appears to be some inconsistency in FilteredList with how it >>>>> behaves when the filter is null. I think if the filter is null, the list >>>>> is >>>>> supposed to show all values. In that case, the filter logic in the add() >>>>> and insert() methods is incorrect. Rather than checking >>>>> >>>>> filter != null && filter.include(item) >>>>> >>>>> it should be checking >>>>> >>>>> filter == null || filter.include(item) >>>>> >>>>> >>>>> Also, the itemUpdated() method in the listListener field sometimes adds >>>>> items to the list which are already there. The problem seems to be in the >>>>> following if block >>>>> >>>>> >>>>> if (comparator == null) { >>>>> // Add the item to the view >>>>> viewIndex = view.add(item); >>>>> listListeners.itemInserted(FilteredList.this, viewIndex); >>>>> } >>>>> >>>>> >>>>> I modified the if statement to make a correction, but I'm not sure my >>>>> patch is correct. Here's what I replaced the if statement with >>>>> >>>>> // Update the item in the view >>>>> int previousViewIndex = view.indexOf(item); >>>>> >>>>> if (previousViewIndex == viewIndex) { >>>>> // Update the item in the view >>>>> view.update(viewIndex, item); >>>>> } else { >>>>> // Remove the item from the view >>>>> Sequence<T> removed = view.remove(previousViewIndex, 1); >>>>> listListeners.itemsRemoved(FilteredList.this, previousViewIndex, >>>>> removed); >>>>> >>>>> // Re-add the item to the view >>>>> viewIndex = view.add(item); >>>>> listListeners.itemInserted(FilteredList.this, viewIndex); >>>>> } >>>>> >>>>> >>>>> Again, I'm not sure this is correct but it seems to have resolved the >>>>> issue I was having with duplicate items being added to the list. >>>>> >>>>> Cheers, >>>>> >>>>> Michael >>>> >>> >> >