Fließende Bänder: Ribbons unter Java

So wird’s gemacht

Ein Ribbon besteht im Wesentlichen aus einer Art Tab, wobei jeder Tab ein Band darstellt, das wieder aus unterschiedlichen Gruppen von Buttons, Checkboxen, Dropdown-Menus und so weiter besteht (Abb. 2). In Tabelle 1 ist eine Auswahl der wichtigsten, verfügbaren Elemente zusammengefasst, die bereits heute verwendet werden können.

Tabelle 1: Eine Auswahl wichtigsten Klassen des SWT-Ribbon
Element Klasse Beschreibung
Fenster RibbonShell Fenster inklusive Menü und „großer Knopf“ (Big Button).
Reiter RibbonTabFolder Wird von RibbonShell zur Verfügung gestellt.
Reiter RibbonTab Jeder Reiter stellt ein befüllbares Ribbon bereit, über den Konstruktor wird RibbonTabFolder und Titel festgelegt.
Tooltip RibbonToolTip Erzeugt einen Tooltip mit wahlweise Titel, Text und Bild; kann nahezu jedem Element hinzugefügt werden.
Gruppen RibbonGroup Erzeugt eine Gruppe in der einzelne Bedienelemente gruppiert untergebracht werden können. Im Konstruktur wird Titel und RibbonTab angegeben, zu dem diese Gruppe gehört.
Knopf RibbonButton Erzeugt einen Knopf, der Knopf darf bei Bedarf auch aus einem Bild bestehen und muss an eine RibbonGroup angehängt werden. Knöpfe können unterschiedliche Einstellungen haben (Toggle, Split, Enabled, Disabled usw).
Checkbox RibbonCheckbox Erzeugt eine Checkbox
Toolbar RibbonToolbar
RibbonToolbarGrouping
Zum Erzeugen und Gruppieren von Toolbars

Tabelle 2 zeigt dagegen die Bestandteile des Ribbons, die zum Zeitpunkt dieses Artikels nicht implementiert waren. In den Sourcen zur Ribbon-Implementierung ist ferner auch ein gutes Beispiel (RibbonTester.java) enthalten. Durch Studium dieses Beispiel sollte man relativ schnell in der Lage sein, eigene Ribbons zu bauen. Da das SWT-Ribbon eine Vielzahl von Unterklassen zum Komponieren der bunten Bändchen zur Verfügung stellt, sollen nun die interessantesten Klassen näher beleuchtet werden.

Tabelle 2: Features, die bislang noch nicht im SWT-Ribbon verfügbar sind
Feature Beschreibung
Großer Knopf Die schöne Shell, die erscheint, wenn man auf den großen Knopf drückt, ist bisher noch nicht umgesetzt. Anstelle der Shell besteht zur Zeit nur die Möglichkeit eines Popups.
Label Man kann noch keine einfachen Labels mit Bildern einfügen.
Gruppe In der Microsoft-Implementierung der Ribbons gibt es schöne Fade-Effekte, wenn man mit der Maus über eine Gruppe fährt. Diese fehlt in der SWT-Version bislang.
Gruppen Das Ausdocken von Gruppen (mittels Pfeil in der Titelleiste der jeweiligen Gruppe) ist noch nicht verfügbar.

Anstelle einer normalen Shell verwendet man die RibbonShell, die in ihrer Grundeinstellung zunächst nur den großen Button (engl. Big Button), ein leeres Menü und ein leeres Band enthält. Das Bild für den großen Button kann geändert werden. Hier sollte man jedoch darauf  achten, dass das Bild mit einem transparenten Hintergrund ausgestattet ist, damit der Hover/Klick-Effekt sauber funktioniert.  Der große Knopf sieht schön aus, ist aber in der aktuellen Fassung noch nicht ganz ausgereift: Zurzeit kann man lediglich ein Drop-Down-Menu an den großen Knopf hängen, die schöne Shell, die man beispielsweise von Word 2007 kennt, ist noch nicht implementiert. Bei Bedarf kann man den großen Knopf auch mit einem stylischen Tooltip ausstatten, hierzu existiert die Klasse RibbonTooltip. Ein Tooltip kann dabei einen Titel, einen Text und sogar ein Bild enthalten. RibbonTooltips sind nicht nur auf den großen Knopf beschränkt, sondern können an beliebige Elemente, etwa einen RibbonButton, gehängt werden.

Um die einzelnen Tabs zu realisieren, mit denen man später durch die Ribbons navigiert, holt man sich direkt von der RibbonShell über die Methode getRibbonTabFolder einen entsprechenden RibbonTabFolder. Schönes Detail hier: der Hilfe-Knopf ist ebenfalls schon implementiert und sogar dieser kann  mit einem RibbonTooltip ausgestattet werden. Um nun die eigentlichen Reiter auf den Bildschirm zu zaubern, erzeugt man sich so viele Instanzen von RibbonTab wie man Reiter benötigt. Wichtig an dieser Stelle ist, dass man im Konstruktor von RibbonTab den RibbonTabFolder und natürlich den Titel des Reiters entsprechend übergibt.
Nun kann man dazu übergehen, die Bänder in den einzelnen Reitern mit Leben zu befüllen. Hierzu gibt es mit den Klassen RibbonGroup, RibbonButton, RibbonButtonGroup, RibbonCheckbox und RibbonToolbar beliebig kombinierbare Möglichkeiten (Tabelle 1). An dieser Stelle sei auch nochmal auf das der Komponente beiliegende Beispiel (RibbonTester.java) verwiesen, das wirklich viele der Klassen der Ribbon-Komponente anschaulich darstellt.

Fazit

Die Ribbons werden sich behaupten. Und gerade deshalb tut man gut daran, das Thema nicht aus dem Blickfeld zu verlieren oder gar zu ignorieren. Es ist ein auf SWT basierendes Ribbon-Widget auf dem Weg, das vielleicht eines Tages sogar in Eclipse aufschlagen wird. Das Widget sieht bereits heute vielversprechend aus und ist (auch wenn aktuell nur in einer Alpha-Version erhältlich) in jedem Falle einen näheren Blick wert.

Schöne, bunte neue Welt!

Marc Teufel arbeitet als Software-Entwickler bei der Firma 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.
Kommentare

Schreibe einen Kommentar

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