Adobe Air (wiwobooks.com Release)
werden. Wie bei der Verwendung von JavaScript-Ereignissen üblich, kann zur Deklaration zur Deklaration von EreignisListenern innerhalb des HTML-Quelltextes in einem HTML-Element der EreignisListener oncontextmenu definiert werden, der auf eine entsprechende Funktion im Skript verweist.
10.12 Menüs in Flex
Das Flex-Framework bietet die Möglichkeit, in Web-Anwendungen ähnliche Menüs wie in Desktop-Anwendungen darzustellen.
10.12.1 Menüs in Flex für Webanwendungen
Wenn Sie Flex verwenden, um Webanwendungen zu erstellen, werden Sie eventuell schon einmal über die MenuBar -Komponente gestolpert sein. Diese stellt ergänzend zu den Rechts-/(ctrl) + Klick-Kontextmenüs eine Funktionalität bereit, die so etwas wie Fenstermenüs oder Kontextmenüs simulieren kann, die jedoch mit normalem Mausklick aktiviert werden (Sie wissen schon: Sonst erscheinen die Menüpunkte, die man nicht will). Dass diese Menüs innerhalb der Anwendung als Displayobjekte erstellt werden, hat den Nachteil, dass derart simulierte Menüs insbesondere bei kleinen Bildschirmen ganz oder teilweise vom Bildschirm verschwinden können, wie z. B. in Abbildung 10.11 zu sehen ist. Von einer Desktopanwendung wird in jedem Fall erwartet, dass die Menüpunkte über das Fenster hinausgehen, falls notwendig.
Abbildung 10.11 Mithilfe der MenuBar-Klasse: Menüs als Display-Objekte in Flex
Da in AIR ausreichend Alternativen bereitstehen, sodass Sie Menüs nicht simulieren müssen, wird auf die MenuBar -Komponente des Flex-Frameworks an dieser Stelle nicht genauer eingegangen – ich halte es lediglich für wichtig, dass Sie sie »auf dem Radar haben« und sich bewusst sind, dass sich zwischen Web- und Desktopanwendung unter Umständen Bedienungsunterschiede ergeben können.
Native Menüs in Flex10.12.2
Flex stellt für NativeMenu als Wrapper eine Klasse FlexNativeMenu bereit. Diese ermöglicht die komfortable Zuweisung der Menüpunkte via XML oder anderer als Datenprovider geeigneter Collection -Objekte. Sie können so die Struktur des Menüs bereits im MXML-Quelltext vorgeben. Auch andere Eigenschaften der Menüpunkte wie Tastaturkürzel und Menükürzel können so definiert werden.
Lösungsweg
1. Definition der Menüstruktur mithilfe XML, XMLListCollection , ArrayCollection oder einer ICollectionView implementierenden Klasse (andere Klassen werden von Flex entsprechend umgewandelt)
2. Definition eines FlexNativeMenu -Elements in MXML mit der Eigenschaft dataProvider , die auf das Element verweist, die die Menüstruktur enthält. 3. Zuweisen der FlexNativeMenu -Instanz
Als Fenstermenü/Systemmenü: ID des FlexNativeMenu -Elements der menu -Eigenschaft des WindowedApplication -Elements zuweisen Als Kontextmenü für eine InteractiveObject -Komponente: Aufruf der Funktion setContextMenu() der FlexNativeMenu -Instanz, InteractiveObject -Instanz als Parameter
So geht es
Das folgende Beispiel zeigt die Erstellung des Kontextmenüs einer Panel -Komponente in Flex, das bei einem Rechtsklick auf den Titel des Panels erscheint:
private function init():void {
myContextMenu.setContextMenu(plContextMenuExample);
}
private function itemClickHandler
(e:FlexNativeMenuEvent):void {
taMsg.text += e.label + " ausgewählt\n";
}
]]>
"{menuStructure}" labelField="@label"
keyEquivalentField="@keyEquivalent" showRoot="false"
itemClick="itemClickHandler(event)"/>
Listing 10.5 Definition eines Kontextmenüs in Flex
Abbildung 10.12 zeigt das Ergebnis.
Abbildung 10.12 Kontext-Menü in einer Flex-basierten AIR-Anwendung
AIR-Anwendungen sind nicht einfach nur Desktopanwendungen, die
Weitere Kostenlose Bücher