Со вчерашнего вечера прозреваю. Отркытие за открытием. Сначала наткнулся на интересную вещь в GWT.
Написал простенький тестик:
scrollPane.setScrollPosition(15 * 3);
assertEquals(15 * 3, scrollPane.getScrollPosition());
В результате тест валится, потому что scrollPane.getScrollPosition() = 0. Вечером по прозревал, забил, пошел домой спать.
Утром пришел с новыми силами. Думаю: "Я - бландинко. Ему же просто некуда скролиться. Там же всего 5 записей и их высота меньше установленных 70px". Переписал тест:
scrollPane.setHeight("15px");
scrollPane.setScrollPosition(15 * 3);
assertEquals(15 * 3, scrollPane.getScrollPosition());
Ну теперь точно все должно работать. Запускаю тест - те же яйца. ) Потом вычитал в мане, что есть метод ensureVisible решили перейти на него, да и посмотреть что в интерфейсе происходит. Переписали код. Запускаем. Происходит какая-то фигня. Появляется какой-то непонятный Exception. Ну тут пошли серьозные раскопки.
В ходе которых были выявлены проблемы.
Открытие 1: Валится Arrays.sort() хотя GWT заявляет, что его поддерживает.
Начал копать дольше.
Открытие 2: Arrays.sort() оказывается на самом деле работает не по алгоритму QuickSork, а по оптимизированному алгоритму MergeSort. По крайней мере в JDK 6.
Вот это да. Чудеса. Потом выяснелось невозможное. Оказывается в GWT class Character не Comparable. Это повергло меня в шок. )