I spent a long time last night and this morning hacking around issues in the TreeView and the DataSetView. Dave Murphy has been playing with the idea of adding a dataset (instead of the list) for the item view in BottomFeeder. We were never really happy with the grid spacing, so we have stayed with the list.
We started looking at it again last night, and this morning I made it a settable option - you can keep the list view, or go to the dataset. The nice thing about the dataset is that it allows sorting - although that means that we need to provide more item entities.
That wasn't the biggest problem though. Once I had the dataset in, I noticed that keyboard navigation didn't work - unless you had the shift key down, and then only with the arrows. That wasn't good; I added a few reasonable key bindings. That seemed to work - except that using the keyboard did not update the HTML widget (i.e., the description for the item) or toggle the has been read state.
Arghh. Dove into the code, ended up having to wrap the vertical navigation method in DataSetView, and toggle the changed event - which for reasons I could not fathom, wasn't happening. I decided not to hack the moveEditVerticallyBy: method directly - go have a look and you'll see why.
Thought I was done, and was pretty happy with all this. Then I noticed something about my notification code. I had added the ability to mark a feed as interesting, which means that new items will cause the feed in question to be selected. Well, the feed was getting selected. But again, the view was not updating the item list accordingly. Sigh - back to the code.
It wasn't enough to send selection: to the feedTree - I had to grab the widget and shake it.
I guess there are two ways to look at this. You could say that VW has some very limited widgets and be disturbed (although Pollock will address that). Or, you could say that - unlike similar frameworks in Java or C# - when you stumble on a problem, you can code your way out of it. If you have a limited native widget on Windows, or a limited Swing widget, you are pretty much stuffed.