…oder der Teufel steckt im Detail

Weniger bekannte Features in Eclipse Ganymede

Marc Teufel

Das Ganymede-Release führt die beliebte Entwicklungsumgebung Eclipse konsequent fort und wird von einer Vielzahl an neuen Features dominiert. JAXenter stellt in diesem Artikel einige interessante neue Eigenschaften aus dem Bereich SWT vor, über die bisher nur wenig berichtet wurde.

Überall wird fortgesetzt, weitergeführt, vorangetrieben. Was Erfolg hat wird zur Serie. Wer kennt sie nicht, Filmreihen wie Star Trek oder Rocky, von denen zusammen schon mehr als ein Dutzend Filme existieren. Motivation für die Produzenten solcher Reihen ist sicherlich und in erster Linie der finanzielle Aspekt, aber um die Serie für den Zuschauer interessant zu halten, müssen weitere spannende Handlungsbögen hinzu. Interessante neue Figuren müssen eingeführt werden, kurz, neue Features sind unabdingbar um den Erfolg einer Reihe zu garantieren.

Supermarkt

Gehen Sie oft in den Supermarkt? Dann wird Ihnen bestimmt auch schon einmal ein Geschirrspülmittel mit dem bedeutungsschwangeren Namen „Somat 7“ aufgefallen sein?  Ja, richtig. Wieder eine Fortsetzung. Das Waschmittel wurde scheinbar über die Jahre hinweg kontinuierlich weiterentwickelt, mit neuen Features ausgestattet, sodass es mittlerweile in der Version 7 angelangt zu kommen scheint. Wahrgenommen haben wir dies jedoch nicht wirklich.

Fortsetzungen finden sich überall, nicht nur, aber sehr oft in der Softwarewelt. Version folgt auf Version und oft stecken viele Änderungen im Detail beziehungsweise werden nur am Rande wahrgenommen.

Und was hat das alles bitteschön mit Ganymede zu tun?

Die von IBM angebotene Entwicklungsumgebung „Visual Age for Java“ fand seine Weiterführung in Eclipse. Die aktuelle Eclipse-Version 3.4, eine Fortsetzung. Ja, auch das Ganymede Simultanrelease ist „nur“ ein weiterer Titel einer Erfolgsreihe, die im nächsten Jahr ganz sicher ihre Fortführung erfahren wird. Und selbst dieser Text ist schlussendlich nur ein weiterer Teil einer JAXenter-Serie zum Thema Ganymede (Teil 1: 2008 – Odyssee im Weltraum? Teil 2: Buchstabenketten in Eclipse Ganymede). Fortsetzungen werden von Features getrieben, doch was ist ein Feature? Features sind neue Fähigkeiten und Eigenschaften und davon gibt es auch in Ganymede eine ganze Menge, so viele sogar, dass einige wirklich interessante Kandidaten fast vergessen werden. In diesem Artikel wollen wir uns einige Features aus dem Bereich SWT genauer ansehen, von denen aktuell nur wenig berichtet wurde, die aber trotzdem für die Anhänger der Rich Client Platform von Interesse sein dürften. Beginnen wir also, mit den netten kleinen Features, die gerne vergessen werden, uns aber trotzdem an vielen Stellen das Leben leichter machen.

Wussten Sie eigentlich dass…

…Fortschrittsbalken, die mit SWT erzeugt werden, sich nun nativ in Windows Vista einfügen?  A propos Betriebssysteme, hier sicher auch interessant, dass SWT nun in einer 64-bit Version für Windows verfügbar ist (setzt eine 64-bit JRE voraus). Und ganz speziell für Freunde von Apple-Computern gibt es nun endlich ein auf Carbon aufsetzendes SWT für das Betriebssystem Mac OS X.

Kommen wir zu ein paar programmiertechnischen Gimmicks. Interessant ist zum Beispiel die neue Eigenschaft setFullscreen in der Shell-Klasse. Mit dieser Methode ist es möglich, die Titelleiste und Clipcontrols eines Fensters komplett auszublenden. In Verbindung mit setMaximized ist man damit dann in der Lage, Shells zu konstruieren, die wirklich den gesamten Bildschirm einnehmen. Auch ganz nett in diesem Zusammenhang ist die ebenfalls in der Shell-Klasse neu hinzugekommene Eigenschaft setAlpha. Übergeben kann man hier einen Wert zwischen 0 und 255, mit der die Transparenz des Fensters eingestellt wird. Umso niedriger hier der Wert, desto durchsichtiger oder transparenter wird das Fenster. 

Der Klasse FileDialog hat man die neue Eigenschaft setOverride spendiert. Wird diese auf true gesetzt (die Standardeinstellung lautet false), dann wird ein Dialog zum Speichern von Dateien immer dann nachfragen, ob die betreffende Datei überschrieben werden soll, wenn sie existiert.

Tristate Buttons

Checkboxen sind beliebt, das kann man so sagen. Sehr oft zum Einsatz kommen sie sicherlich, wenn es darum geht, irgendwelche Optionen oder Einstellungen darzustellen (an/aus, aktiv/nicht aktiv). Ein weiterer beliebter Einsatzzweck stellt das Verwenden von Checkboxen beispielsweise in Vorlaufmasken dar, auf die etwa eine Datenbankabfrage folgt. Checkboxen können hier wunderbar zur Anwendung kommen, um Werte für Boolean-Felder entgegen zu nehmen, die dann wiederum in der resultierenden Datenbankabfrage berücksichtigt werden.

Abb. 1: Tristate Buttons, ab Eclipse 3.4 verfügbar

Bis zur Eclipse Version 3.3 konnte eine Checkbox über die Eigenschaft setSelection nur zwei Status entgegennehmen, nämlich ob sie selektiert ist (true) oder eben nicht (false). Das führt in der Datenbankabfrage jedoch gegebenenfalls zu Problemen, nämlich immer dann, wenn man weder auf true oder false oder gar nicht auf das entsprechende Feld abfragen will. Was in der Welt von .NET schon lange geht, haben wir mit dem aktuellen Eclipse Release nun endlich auch für unsere RCP-Anwendungen beziehungsweise Plug-ins zur Verfügung: den lange gewünschten Tristate Button (Abb. 1).  Die Verwendung des dritten Status kann leichter nicht sein. Die neue Eigenschaft setGrayed ist es, mit welcher der dritte Status gesteuert wird. Listing 1 zeigt ein kleines Beispiel.

Listing 1 : Tristate Buttons
Button checkbox = new Button (shell, SWT.CHECK);
checkbox.setText("JAXenter");

// Status 1: Häckchen an
checkbox.setSelection(true);

// Status 2: Häckchen aus
checkbox.setSelection(true);

// Status 3: Ausgegraut
checkbox.setGrayed(true);

In der ersten Zeile wird ein neuer Button in Form einer Checkbox erzeugt. Danach wird durch Setzen von setSelection auf true der erste Zustand geschaltet (Häckchen an). Durch Umschalten auf false in derselben Eigenschaft wird in den zweiten Zustand geschaltet (Häckchen aus). Am Ende wird schließlich durch Ansteuerung von setGrayed der dritte Status bedient.  Eigentlich hätte man jetzt erwartet, dass durch Setzen von setGrayed auf true der dritte Status aktiviert ist und in der laufenden Anwendung durch entsprechend häufiges Klicken die Checkbox irgendwann nacheinander in alle Status versetzt wird. Dem ist aber nicht so! Wenn man setGrayed setzt, kann man lediglich zwischen dem Grayed-Status und einer ungecheckten Box hin- und herschalten. Will man jedoch alle drei Status bedienbar machen, wird man nicht um zusätzliche Programmierung herumkommen.

Fazit

Der Artikel hat deutlich gemacht, dass Fortsetzungen durch neue Features geprägt und viele dieser Neuigkeiten oft gar nicht richtig wahrgenommen werden. Im Zusammenhang mit Eclipse Ganymede, das ja aus einer Vielzahl an neuen Features besteht, wurden einige weniger bekannte neue Eigenschaften aus dem Bereich SWT besprochen. Neben den vielen kleinen Details ist mit dem Tristate Button beispielsweise nun endlich die Grundlage geschaffen worden, um bei Checkboxen einen dritten Status darstellen zu können. Mit  Ecken und Kanten zwar, und dies ist im doppelten Sinne zu verstehen, aber es geht.

Marc Teufel arbeitet als Software-Entwickler bei der hama GmbH & Co und ist dort für die Entwicklung großer Java-Anwendungen im Logistikzentrum zuständig. Er ist Autor zahlreicher Fachartikel zu Java und .NET, hat zwei Bücher zu Web Services publiziert und spricht regelmäßig auf Fachkonferenzen. Unter www.teufel.net ist er im Web zu erreichen.
Geschrieben von
Marc Teufel
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.