# Filter in die JFace/SWT Tabelle einbauen



## mrbela (17. Okt 2014)

Hallo Leute!

Ich habe mir eine Tabelle mit JFace (TableViewer) gebaut.. Den ViewerSorter habe ich über einen column.addSelectionListener auf den Header der jeweiligen Spalte gelegt. Klappt auch soweit alles!

Jetzt müsste ich noch einen Filter einbauen.. So à la:



Nach langer, vergebener Suche gebe ich auf und frage hier in dem Forum nach...

Ich danke Euch für die Hilfe!!

P.S.: den ViewerFilter habe ich auch schon entdeckt und verstanden.. Nur muss dieser von etwas angestoßen werde, damit dann die Daten entsprechen des Filters gefiltert werden.. Und dieses anstoßen möchte ich nicht aus einem Textfeld heraus (wie oft im Internet propagiert), sondern eben aus einem Menü, das aus dem Header der jeweiligen Tabelle "rauskommt".


----------



## dzim (17. Okt 2014)

Ich bin schon eine Weile aus SWT raus und zum JavaFX-Lager gewechselt, aber ich versuche mal, die ein paar Hinweise zu geben.

Wenn ich mir die JavaDoc zu Table anschaue, bin ich eher skeptisch:
https://www.eclipse.org/swt/widgets/ (dort nach "Table" suchen und "JavaDoc" anschauen)

ob (oder vielleicht besser: wie) man den Header einer Tabelle modifiziert, kannst du ja mal hier schauen:
Table « SWT JFace Eclipse « Java
--> Place arbitrary controls in a SWT table : Table « SWT JFace Eclipse « Java (Betrifft die Zellen, kann man aber vielleicht auf den Header übertragen!)

Auch die JavaDoc des jFace TableViewer scheint nicht weiterhelfen zu können.

Du könntest jetzt mal schauen, ob eines der Widgets aus dem Nebula-Projekt dir weiterhelfen kann (Inkubator-Projekte, die noch eine "offiziellen" SWT-Widgets sind, die man aber durchaus produktiv einsetzen kann, wenn man mag):
Nebula Project
(Ich hab z.B. früher mal das PShelf daraus verwendet.)
(Schau mal nach Grid, XViewer oder NatTable!)

Alternativ kannst du es auch "hacken": Eine spontane Idee wäre, einen ViewerComparator anzuhängen, dort aber nicht zu sortieren (return 0), sondern eine undekorierte Shell mit einer Liste deiner Filter-Optionen anzuzeigen.
Nachteil: Keine Anzeige im Header der Tabelle vorhanden, dass der Header klickbar ist und auch kein Combo-Widget...

----------------------------------------

Das hilft die jetzt nicht, aber ich glaube dort kann man - wie auch in der Tabelle selbst - einfach eine Custom-Zelle erzeugen lassen, bei der man den Text gegen eine Layout austauscht. Für die regulären Zellen hab ich das schon gemacht. Ist zwar ein wenig "frickelig", aber mit ein wenig Übung jetzt nicht so schwer (Aufwand max 1h).
Wenn es denn mäglich ist, solltest du überlegen, ob die zu JavaFX wechseln kannst. Ansonsten aber ist JavaFX auch einfach direkt in SWT einzubetten ( 8 JavaFX Interoperability with SWT (Release 8) ).
In


----------



## mrbela (20. Okt 2014)

Hey dzim!

Danke Dir für Deine Tips! Ich habe mich jetzt für die NatTable aus dem Nebula Project entschieden..

Aber generell mal eine Frage zu den ganzen Projekten von Eclipse (List of Projects | projects.eclipse.org). Wie soll man da einen Überblick haben? Wäre es nicht ganz gut Dinge nach GUI und sonsitgen Kriterien zu sortieren?

Wie kamst Du bpsw. auf die Idee, dass sich hinter dem Namen "Nebula" verschiedene SWT Widgets verstecken?

Finde diese Seite gar nicht mal so übersichtlich und aussagekrätig


----------



## dzim (20. Okt 2014)

Keine Ahnung, das ist schon 6 Jahre her oder so. Da bin ich über irgendwelche Nachrichten (RSS) mal da hingekommen.
Eclipse mangelt es (leider) wirklich an einer vernünftigen Doku! Ich finde es schade, das diese ansonsten tolle Platform hier es nicht schafft, mal für Ordnung zu sorgen.
Schlimmer aber ist, dass sehr viele grosse Projekte auf Eclipse aufbauen (die Platform ist halt extrem flexibel), aber kaum einer Code an die Basis zurückgibt. Viele meckern über Performance etc., aber am Ende gibt es vielleicht 5-10 aktive Commiter, die das Rückrat von Eclipse versuchen am Laufen zu halten... :-(


----------



## mrbela (20. Okt 2014)

Okay.. Ja, das ist wirklich schade! Ich finde Eclipse n super Tool, besser als NetBeans etc.

Dennoch muss ich sagen, dass z.B. die Dokumentation von SWT wirklich unter aller Sau ist.. Man muss sich vieles selbst zusammenreimen... Und vieles entdeckt man nur per Zufall! Steht sonst nirgends, außer in den Tiefen der API..

Sehr schade..!! Weil gerade die Fähigkeit Plugins für Eclipse mittels SWT zu schreiben wirklich sehr mächtig ist..

Als Programmierer muss man sich da glaube ich einmal mit der Machete durchgekämpft haben. Anders geht es nicht.. :/


----------



## dzim (20. Okt 2014)

Ja ist so, aber ich finde z.B. das die API selbst von SWT - also wie man UIs baut - mir immer noch mehr als JavaFX gefällt! FX hat coole build-in-Features, aber wenn man per Code ein UI baut, finde ich es etwas sperrig. Vor allem die Layouts in SWT sind IMHO immer noch das beste (was ich so kenne) in der Java-Welt.

Wenn du SWT "gemeistert" hast, kann ich dir ein nächstes Eclipse-Projekt empfehlen: RAP (Remote Application Platform). Ist sozusagen SWT im Browser (aber Server-Side-UI, nicht Client-Side-UI). Es ist insofern ein cooles Projekt, als dass man RAP-"Webseiten" auch als native Anwendungen in iOS und Android rendern lassen kann (via dem kommerzielen Produkt Tabris), aber auch sonst ist es recht brauchbar. Aber wie immer gilt: Learning by doing. Wenig (brauchbare) Doku, wenn man komplexere Probleme hat.


----------

