2010-10-28 10 views
9

Naprawdę mam problem z wyborem między widżetem drzewa GWT, który był częścią GWT od wieków; lub nowy CellTree, który został wprowadzony przez GWT 2.1.GWT 2.1 Drzewo lub CellTree?

Drzewo, które chcę przedstawić użytkownikowi, nie jest szczególnie duże, ale jestem bardzo zaniepokojony reakcją.

Dane w węzłach drzewa będą edytowalne. Klikając węzeł, użytkownik przełącza węzeł w tryb edycji. Edycja bardziej prostych węzłów będzie wymagać tylko jednego TextBox lub TextArea; ale inne będą zawierały kilka widżetów, nad którymi chcę sterować stylem za pomocą CSS.

Jestem zainteresowana podejściem CellTree, ponieważ wydaje się oferować dużą elastyczność i szybkość; jednak przykładowy kod do edycji CellTree dotyczy tylko bardzo prostych typów danych: ciąg, data, liczba całkowita itp. Nie wiem, czy CellTree jest odpowiedni, gdy masz bardziej złożone potrzeby edycji węzła.

Co myślisz? Czy CellTree to najlepsze podejście? Czy CellTree w ogóle zastępuje Drzewo? Jakie heurystyki mogę zastosować przy wyborze między nimi?

Odpowiedz

2

Używam CellTable z kilkoma niestandardowymi komórkami wejściowymi, w tym jedną zawierającą wiele widżetów. Działa świetnie!

Zajęło mi kilka godzin zrozumienie, jak zaimplementować niestandardową komórkę, która może wykonywać skomplikowane operacje - ponieważ pojedynczy egzemplarz komórki będzie przemieszczał się wokół CellTree, udając wiele instancji, musisz zrozumieć, jak to jest pobieranie danych oraz ich odświeżanie i renderowanie. Wiele się nauczyłem od źródła DatePickerCell.

Nie mogę mówić za CellTree, ale CellTable jest bardzo elastyczny, można go łatwo zaprogramować i oszczędzić setki instancji widgetów.

+0

Czy wykorzystałeś CompositeCell do komórki z wieloma widżetami? – David

+0

Rozszerzyłem klasę AbstractEditableCell. Zacząłem używać go w wersji 2.1.0.M3, zanim miały wiele dokumentów, więc może być tak, że CompositeCell jest tym, czego potrzebujesz. Widzę też, że dodali "edytor", które wyglądają schludnie. –

1

Korzystanie z CellTree jest problematyczne. Ponieważ nie ma dobrego dostępu do widoku implementacji przechowywanej w CellTree. To powoduje problem (np. Dla mnie: D) w tworzeniu niestandardowych procedur obsługi dla otwierania węzłów z dziećmi przez kliknięcie na całą komórkę nadrzędną. Oczywiście możesz tworzyć niestandardowe komórki przez AbstractCell, gdzie musisz napisać własny renderer.

Myślę, że ten widget musi być rozszerzony, a większa liczba obiektów musi być bardziej widoczna dla użytkowników.

Dostosowywanie CSS jest proste. Wszystko, co musisz zrobić, to rozszerzyć CellTree.resource i wstawić własne css na podstawie nazw klas celltree.css.