Wrapped it up into a set of classes.

So, basically, it works. It's slow (and if you try to put in keyboard
input while it's scrolling itself around it's prone to misplace it) but it
behaves in the way I want it to.

It's also very, very hacky, doesn't play well with hardware keyboards
(especially not when you hit the up/down buttons and expect it to focus
the next Embedded - that doesn't happen at all!) but if you stay
exclusively in touch mode, it works.

For a certain definition of "works" of course.