Menü-Dateien
Übersicht: Menü-Dateien
Die oberste Zeile des Emulations-Fensters enthält normalerweise die Menü-Zeile.
Der Aufbau dieses "Menüsystems" ist nicht unabänderlich fest vorgegeben,
sondern kann an Ihre speziellen Bedürfnisse angepasst werden:
- In der Regel nimmt solche Anpassungen der System-Administrator bei der Konfigurierung des Systems vor:
er wählt aus den standardmäßig enthaltenen Menüs die für diesen Einsatz geeigneten aus
und stellt sie dann seinen Anwendern als fertige "Menü-Dateien" zur Verfügung.
- Die Anwender wählen aus dieser Liste dann lediglich die für sie passende Menü-Datei aus.
- Bei Bedarf können jedoch auch individuelle Änderungen des Menüsystems mit dem
Menü-Editor erstellt
und als Menü-Dateien abgespeichert werden.
Hier wird zu Ihrer Information der Aufbau der Belegungs-Datei beschrieben. Änderungen sollten
Sie jedoch generell immer mit dem Menü-Editor vornehmen:
- Es kann sehr aufwendig sein, solche Zuordnungen vollständig neu zu erstellen
- Sie benötigen dafür auch gute JavaScript Kenntnisse und Kenntnisse des
LogWeb/Ajax API
und verwenden speziell die Menü Basis-Funktionen von
lw.Menu
Das Menüsystem der LogWeb/Ajax Terminal-Emulation ist (wie alle Komponenten) in JavaScript realisert.
Im Folgenden wird der Aufbau der Menü-Dateien beschrieben:
Menü-Zeile: lwh.menu.bar
Der Menü-Eintrag lwh.menu.bar enthält das Hauptmenü.
- Das Hauptmenü wird normalerweise als oberste Zeile im Emulations-Fenster angezeigt,
kann aber in der Emulation mit der Menü-Funktion
[Ansicht] / [Menü-Zeile]
ein- und ausgeblendet werden.
- Die einzelnen Menü-Elemente werden mit der Basis-Funktion
lw.Menu.makeMenu(el1, el2, ..)
definiert.
- Das Haupt-Menü enthält nur Verweise auf Untermenüs ("Pull-Down Menüs").
Diese werden mit der Basis-Funktion
lw.Menu.makeLink(text, link)
definiert:
lwh.menu.bar = lw.Menu.makeMenu(
lw.Menu.makeLink("Sitzung", "lwh.menu.session" ),
lw.Menu.makeLink("Bearbeiten", "lwh.menu.edit" ),
lw.Menu.makeLink("Optionen", "lwh.menu.preferences" ),
lw.Menu.makeLink("Ansicht", "lwh.menu.layout" ),
lw.Menu.makeLink("Farben", "lwh.menu.color" ),
lw.Menu.makeLink("Schrift", "lwh.menu.font" ),
lw.Menu.makeLink("Hostfunktionen", "lwh.menu.host" ),
lw.Menu.makeSeparator(),
lw.Menu.makeLink("?", "lwh.menu.help" ),
lw.Menu.makeSeparator()
);
- Wenn Sie beispielsweise den Link "Optionen" auskommentieren,
wird der zugehörige Anker in der Menü-Zeile nicht mehr angezeigt,
und die entsprechenden Funktionen stehen
nicht mehr zur Verfügung:
...
lw.Menu.makeLink("Sitzung", "lwh.menu.session" ),
lw.Menu.makeLink("Bearbeiten", "lwh.menu.edit" ),
//lw.Menu.makeLink("Optionen", "lwh.menu.preferences" ),
lw.Menu.makeLink("Ansicht", "lwh.menu.layout" ),
...
Kontext-Menü: lwh.menu.main
Der Menü-Eintrag lwh.menu.main enthält das Kontextmenü;
der Aufbau entspricht dem Haupt-Menü.
- Das Kontext-Menü wird normalerweise nur angezeigt,
wenn der Anwender mit der Maus einen Rechts-Klick in das Emulations-Fenster macht.
- Voraussetzung dafür ist, daß die terminal-spezifische
Maus-Aktion
einen entsprechenden Eintrag enthält:
...
onclickright: '*lwk.menuMouse("lwh.menu.main")',
...
- Normalerweise zeigt das Kontextmenü dieselben Einträge wie die Menüzeile:
lwh.menu.main = lwh.menu.bar;
- Bei Bedarf könnten Sie auch einen davon unabhängigen Aufbau festlegen:
lwh.menu.main = lw.Menu.makeMenu(
lw.Menu.makeLink("Bearbeiten", "lwh.menu.edit" ),
lw.Menu.makeSeparator(),
...
lw.Menu.makeLink("Hostfunktionen", "lwh.menu.host" ),
lw.Menu.makeSeparator()
);
Unter-Menüs: lw.Menu und lw.Menu.makeLink
Der Aufbau und die Verwendung von Untermenüs wurde bereits oben bei der Menü-Zeile
beschrieben.
Aktionen in Menüs: lw.Menu.makeAction(text, action)
Normalerweise enthalten Menüs nicht nur Links auf Unter-Menüs,
sondern definieren auch Aktionen, die ausgeführt werden,
wenn der Anwender sie auswählt.
- Aktionen werden mit der Basis-Funktion
lw.Menu.makeAction(text, action)
definiert:
/** 3270 host specific menu. */
lwh.menu.host = lw.Menu.makeMenu(
lw.Menu.makeAction("ENTER", "lwk.send('<ENTER>')" ),
lw.Menu.makeAction("PA1", "lwk.send('<PA1>')" ),
...
);
Bedeutung:
- Der als erstes Argument angegebene Text wird im Menü angezeigt
(hier zum Beispiel: ENTER)
- Wenn später dieser Eintrag ausgewählt wird,
wird die hinterlegte JavaScript Anweisung ausgeführt
(hier: Die Funktion lwk.send('<ENTER>') wird aufgerufen,
und damit die Sondertaste ENTER zum Host System übertragen)
- Wenn Sie spezielle Aktionen nicht zulassen wollen,
genügt es, die entsprechenden Anweisungen auszukommentieren:
lwh.menu.preferences = lw.Menu.makeMenu(
...
//lw.Menu.makeSeparator(),
//lw.Menu.makeAction("Aktuelle Einstellungen sichern", "lwh.pref.save()" ),
//lw.Menu.makeAction("Voreinstellungen wiederherstellen", "lwh.pref.restore()" ),
lw.Menu.makeSeparator()
);
- Prinzipiell können Sie beliebige JavaScript Anweisungen
als Aktion hinterlegen:
...
lw.Menu.makeAction("logics", "window.open('http://www.logics.de', 'logics')" ),
lw.Menu.makeAction("Plus 4", "alert(prompt('Bitte Zahl eingeben:', 0) - 0 + 4)" ),
...
- Wenn Sie spezielle Funktionen der Terminal-Emulation neu aufnehmen wollen,
benötigen Sie Kenntnisse des
LogWeb/Ajax API.
Spezielle GUI Elemente in Menüs
Neben den einfachen Aktionen werden in den Menüs auch spezielle GUI-Elemente eingesetzt.
In der Regel benötigen Sie keine Detail-Kenntnisse über diese Funktionen:
Sie können sich darauf beschränken, vorhandene Links oder Aktionen auszukommentieren
oder nach Ihren Bedürfnissen neu zusammenzustellen.
- Check-Boxen werden mit der Basis-Funktion
lw.Menu.makeToggle(text, action)
definiert:
lwh.menu.prefSend = lw.Menu.makeMenu(
lw.Menu.makeToggle(
"Eingabe puffern", // text
"lwh.mac.typeahead()" // bean function
),
lw.Menu.makeSeparator()
);
Bedeutung:
- Die angegebene "bean" Funktion wird vor Darstellung des Ankreuzfeldes unverändert aufgerufen:
lwh.mac.typeahead()
- Ihr Rückgabe-Wert true bzw. false bestimmt die Darstellung des Ankreuzfeldes
- Wenn der Anwender später auf das Menü-Element klickt, wird die bean Funktion erneut aufgerufen,
wobei zusätzlich der jeweilige Zustand des Ankreuzfeldes übergeben wird, also zum Beispiel
lwh.mac.typeahead(true)
- Erst jetzt führt die bean Funktion die eigentliche Aktion aus
(hier: Eingaben werden gepuffert, während eine Sendung zum Host System noch nicht abgeschlossen ist)
- Radio-Buttons werden mit der Basis-Funktion
lw.Menu.makeRadio(text, action, init)
definiert:
lwh.menu.prefReceive = lw.Menu.makeMenu(
lw.Menu.makeRadio(
"['Keine Aktion', 'Font an Fenster anpassen', 'Fenster maximieren']", // text array
"lwk.bean('lwh.pref.pFont')" // bean function
),
lw.Menu.makeSeparator()
);
Bedeutung:
- Die Texte der Radio-Buttons werden als Feld in einem String übergeben
(hier: ein Feld mit den drei Texten
Keine Aktion, Font an Fenster anpassen, Fenster maximieren)
Dieser String wird jedesmal vor Darstellung des Radio-Buttons ausgewertet.
- Die angegebene "bean" Funktion wird vor Darstellung der Radio-Buttons unverändert aufgerufen:
lwk.bean('lwh.pref.pFont')
- Ihr Rückgabe-Wert 0, 1 oder 2 bestimmt,
welcher Radio-Button markiert dargestellt wird
- Wenn der Anwender später einen Radio-Button auswählt, wird die bean Funktion erneut aufgerufen,
wobei zusätzlich die Nummer des aktuell ausgewählten Radio-Buttons übergeben wird, also zum Beispiel
lwk.bean('lwh.pref.pFont', 1)
- Erst jetzt führt die bean Funktion die eigentliche Aktion aus
(hier: der Variablen lwh.pref.pFont wird der angegebene Wert 1 zugewiesen)
- Select-Boxen werden mit der Basis-Funktion
lw.Menu.makeSelect(text, action)
definiert:
lwh.menu.color = lw.Menu.makeMenu(
lw.Menu.makeSelect(
"['Farbschema: '].concat(lwh.color.names())", // text array
"lwh.color.schema()" // bean function
),
...
);
Bedeutung:
- Die Texte der Auswahl-Liste werden als Feld in einem String übergeben.
Der erste Text wird der Auswahl-Liste vorangestellt (hier: Farbschema: )
Die folgenden Texte werden in die Auswahl-Liste als Optionen eingetragen
(hier werden diese Texte durch Aufruf der Funktion lwh.color.names dynamisch ermittelt
und an das Feld angehängt)
- Die angegebene "bean" Funktion wird vor Darstellung der Auswahl-Liste unverändert aufgerufen:
lwh.color.schema()
- Ihr Rückgabe-Wert 0, 1.. bestimmt,
welche Option selektiert dargestellt wird
- Wenn der Anwender später eine andere Option auswählt, wird die bean Funktion erneut aufgerufen,
wobei zusätzlich die Nummer der aktuell ausgewählten Option übergeben wird, also zum Beispiel
lwh.color.schema(3)
- Erst jetzt führt die bean Funktion die eigentliche Aktion aus
(hier: das angegebene Farbschem 3 wird geladen)
- Select-Boxen können auch mit der Basis-Funktion
lw.Menu.makeSelectText(text, action)
definiert werden
lwh.menu.menu = lw.Menu.makeMenu(
lw.Menu.makeSelectText(
"['Menü laden: '].concat(lwh.config.dir.menu)", // text array
"lwh.config.menu()" // bean function
),
...
);
Bedeutung:
- Wie oben bei lw.Menu.makeSelect:
Die Texte der Auswahl-Liste werden als Feld in einem String übergeben.
Der erste Text wird der Auswahl-Liste vorangestellt (hier: Menü laden: )
Die folgenden Texte werden in die Auswahl-Liste als Optionen eingetragen
(hier werden diese Texte des vom Server geladenen Arrays lwh.config.dir.menu
dynamisch an das Feld angehängt)
- Wie oben bei lw.Menu.makeSelect:
Die angegebene "bean" Funktion wird vor Darstellung der Auswahl-Liste unverändert aufgerufen:
lwh.config.menu()
- Wie oben bei lw.Menu.makeSelect:
Ihr Rückgabe-Wert 0, 1.. bestimmt,
welche Option selektiert dargestellt wird
- Wenn der Anwender später eine andere Option auswählt, wird die bean Funktion erneut aufgerufen,
wobei zusätzlich der Text (anstelle der Nummer) der aktuell ausgewählten Option übergeben wird, also zum Beispiel
lwh.config.menu('myMenu.js')
- Wie oben bei lw.Menu.makeSelect:
Erst jetzt führt die bean Funktion die eigentliche Aktion aus
(hier: die angegebene Menüdatei myMenu.js wird geladen)
© Logics Software 2006 - 2009