Ich habe wirklich Probleme mit der Wahl zwischen dem GWT Tree-Widget, das seit Ewigkeiten ein Teil von GWT ist; oder der neue CellTree, der von GWT 2.1 eingeführt wird.
Der Baum, den ich dem Benutzer präsentieren möchte, ist nicht besonders groß, aber ich bin sehr besorgt über die Reaktionsfähigkeit.
Die Daten an den Knoten des Baums können bearbeitet werden. Durch Klicken auf einen Knoten wird der Knoten in den Bearbeitungsmodus versetzt. Die Bearbeitung der einfacheren Knoten erfordert nur eine einzelne TextBox oder TextArea; aber andere werden mehrere Widgets beinhalten, über die ich Styling-Kontrolle via CSS haben möchte.
Ich bin vom CellTree-Ansatz angezogen, weil er eine große Flexibilität und Geschwindigkeit bietet; Der Beispielcode für die CellTree-Bearbeitung behandelt jedoch nur sehr einfache Datentypen: string, date, integer usw. Ich weiß nicht, ob CellTree geeignet ist, wenn Sie komplexere Knoten bearbeiten müssen.
Was denkst du? Ist CellTree der beste Ansatz? Ersetzt CellTree Tree im Allgemeinen? Welche Heuristiken kann ich anwenden, um zwischen ihnen zu wählen?
Ich verwende eine CellTable mit mehreren benutzerdefinierten Eingabezellen, einschließlich einer aus vielen Widgets. Es funktioniert großartig!
Ich habe ein paar Stunden gebraucht, um zu verstehen, wie man eine benutzerdefinierte Zelle implementiert, die komplexe Operationen ausführen kann - da eine einzelne Instanz der Zelle um den CellTree herumfliegt und so vorgibt, viele Instanzen zu sein, müssen Sie verstehen, wie es geht seine Daten und wann es aktualisiert und gerendert wird. Ich habe viel von der Quelle der DatePickerCell gelernt.
Ich kann nicht für CellTree sprechen, aber die CellTable ist sehr flexibel, einfach zu programmieren und spart mir Hunderte von Widget-Instanzen.
Die Verwendung von CellTree ist problematisch. Weil es keinen guten Zugriff auf die in CellTree gespeicherte Implementierung gibt. Es verursacht ein Problem (z. B. für mich: D), benutzerdefinierte Handler für das Öffnen von Knoten mit Kindern zu erstellen, indem Sie auf die gesamte übergeordnete Zelle klicken. Natürlich können Sie benutzerdefinierte Zellen von AbstractCell erstellen, wo Sie einen eigenen Renderer schreiben müssen.
Ich denke, dass dieses Widget verbessert werden muss und mehr Objekte für Benutzer sichtbar sein müssen.
Das Anpassen von CSS ist einfach. Alles, was Sie tun müssen, ist CellTree.resource zu erweitern und eigene CSS auf Basis von celltree.css Klassennamen einzufügen.