(Edit: Ester Beitrag kopiert und Rest verschoben von http://forum.byte-welt.net/java-forum/awt-swing-javafx-swt/18062-jface-checkboxtreeviewer-aktualisieren-unglaublich-langsam.html#post127270 )
Hmja, es war schon etwas irritierend, dass bei einer Suche nach “jface download” praktisch keine Ergebnisse kommen (zumindest keine, die über “Such’ dir den Sche!ß halt selbst zusammen” hinausgehen :rolleyes: ). Zum Glück gibt es ja sowohl für SWT als auch JFace viele “Snippets”, wo man schonmal was zum Ausprobieren hat. Aber die Erklärungen kommen da (im Vergleich zu den ausführlichen “How to use…”-Seiten für die Swing Components) schon etwas zu kurz.
Insgesamt mache ich gerade die ersten Experimente mit SWT und JFace. Die Anforderungen sind (Projektseitig) noch nicht ganz klar (und wahrscheinlich werden sie wieder mal nach der Deadline geklärt, durch Beschwerden “Dies-und-das hätte aber so-und-so sein sollen!” :rolleyes: ). Aber der Baum wird wohl schon notwendig sein. Dieses “1 root, 10000 blätter” war für den Test. Im Extremfall könnte er zwar recht flach mit “mehreren hunderttausend” Blättern sein, aber der relevante(ste) Fall wäre wohl was mit ~5-10 Ebenen und ~10000 Blättern.
Mit den SWT.VIRTUAL und LazyContentProvider hatte ich auch rumprobiert (nachdem es eben erst so langsam war, waren das die Richtungen, in die die ersten Suchergebnisse gingen). Aber das schien dann schon deutlich komplizierter… gerade der LazyContentProvider wäre dann was, wo man sich etwas mehr Zeit zum Reinfräsen nehmen müßte, und soweit ich das sehe, wäre es da notwendig, dass die Knoten ihre parents kennen müßten - was nur ganz schlecht mit dem Datenmodell vereinbar wäre.
Welche Alternativen für die updates es da gibt, … ja, ich hatte ein bißchen rumgesucht und rumprobiert, und auch mal im Profiler geschaut, wo da die Zeit flöten geht, aber … die verschwindet eben irgendwo den den Tiefen von (geschätzt) >100-Zeiligen Aufrufbäumen, wo die Beantwortung der Fragen
- Was macht der da?
- Warum macht er das?
- Warum dauert das so lange?
nicht in vertretbarer Zeit möglich wäre. Und der Anwendungsfall (ein Baum mit 1000 Knoten) und die Aufgabe (Beschriftung der Knoten ändern) erschienen mir SO alltäglich, und die benötigte Zeit (ich meine, 5 Sekunden!? Haaaalllooo?) erschienen mir SO lächerlich-absurd hoch, dass ich davon ausgehen mußte, da etwas grundsätzlich falsch zu machen.
(Inzwischen finde ich, dass nicht ICH etwas falsch gemacht habe, sondern der, der meinte, “setUseHashlookup(true)” nicht zum default zu machen, aber … man muss sich wohl damit abfinden… )
Dieses “Nebula” sieht schonmal ganz interessant aus. Ich werde da mal ein Auge drauf behalten, auch wenn ich im Moment davon ausgehe, dass ich das nicht verwenden darf. (In der Leistungsbeschreibung steht sinngemäß, dass das Paket keine Abhängigkeiten haben darf. Da steht speziell(!) auch: Keine Abhängigkeiten zu Eclipse. Gut, es soll zwar ein Eclipse-Plugin sein, aber … naja, nichts wird so heiß gegessen, wie es gekocht wird :rolleyes: )