TL; DR
podstawie art Thomas Schindl „s JFace-Viewer and Eclipse Databinding with > 10.000 Objects (co sugeruje bardzo dobry pomysł), chciałbym przekonwertować regularne TreeViewer
+ wiele ITreeContentProvider
implementacje do Nebula's GridTreeViewer
który wykorzystuje ObservableListTreeContentProvider
, a VisibleRangeChangedListener
i Eclipse Data Binding do sprawiają, że „leniwy” (leniwy) i ładowania danych na żądanie.TreeViewer do GridTreeViewer: most między istniejącymi ITreeContentProviders i "leniwej" ObservableListTreeContentProvider
W jaki sposób powinienem przepisać moje istniejące regularne implementacje ITreeContentProvider
, aby używać tych samych hierarchii z ObservableListTreeContentProvider
? Czy mogę zrobić "pomost" pomiędzy starym a nowym rozwiązaniem? Używanie DelegatingListProperty
w jakiś sposób jak this? Jakieś inne pomysły?
Znalazłem zbyt proste przykłady, ale tak naprawdę nie mam pojęcia o użyciu powiązania danych w tak złożonym hierarchicznym formacie drzewa.
Przykład drzewa & dostawców treści:
dostawcy treści 1 .:
|- A1
|-- B1
|-- MyMessage1
|- A2
|-- B2
|-- MyMessage2
Content dostawcą 2 .:
|- C1
|-- D1
|-- MyMessage1
|- C2
|-- D2
|-- MyMessage2
dłuższe objaśnienie
Mam widoku gdzie wyświetl ogromną ilość obiektów ts w hierarchicznej drzewa formacie użyciu niestandardowego TreeViewer
z klasycznym ITreeContentProvider
i LabelProvider
+ ITableLabelProvider
wdrożeń. Istnieje również menu, w którym użytkownik może wybrać, w jakim formacie chce wyświetlać tę hierarchię. Kiedy użytkownik wybiera inny format wyświetlania, jedyne, co się dzieje, to to, że kolejna implementacja ITreeContentProvider
zostaje ustawiona na przeglądarkę i programowo odświeżam przeglądarkę.
Działa, ale ze względu na ogromną liczbę elementów (w niektórych przypadkach 100-200k wierszy, proszę nie pytać o powody, po prostu musi działać), wyświetlanie elementów może być powolne, czasami interfejs zawiesza się, ponieważ w TreeItems jest tylu słuchaczy, odświeżanie widoku zajmuje dużo czasu, itd ...
Chciałbym użyć pewnego rodzaju leniwego rozwiązania mając już elementy modelu załadowane do pamięci.
Próbowałem już SWT.VIRTUAL
and ILazyTreeContentProvider
, ale działało źle (nawet jeśli używałem viewer.setUseHashlookup(true)
) i było problematyczne (podczas przewijania, załadowanie TreeItems zajęło dużo czasu, miało swoje problemy z sortowaniem, filtrowaniem itp. bugs).
Teraz czytam artykuł bloga Thomasa Schindla: JFace-Viewer and Eclipse Databinding with > 10.000 Objects. Chciałbym spróbować tego przy użyciu Eclipse Nebula Grid „s GridTreeViewer
i + ObservableListTreeContentProvider
(który jest również implementacja ITreeContentProvider
) i«leniwy»usługodawca etykieta VisibleRangeChangedListener
i (jak w artykule). Czy mogę w jakiś sposób użyć istniejących implementacji ITreeContentProvider
i zbudować "pomost" między tym a nowym ObservableListTreeContentProvider
?
BTW sprawdziłem Nebula NatTable, ale okazało się to bardzo trudne do migracji istniejących dostawców treści do tego nowego rozwiązania, jego API i jego podejście jest zupełnie inna (hierarchia począwszy od dziecka do rodzica, a nie odwrotnie stronę) , a dokumentacja związana z Trees jest nadal pusta.