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!
Hinterlasse einen Kommentar