Altova MobileTogether Designer

Ein großer Vorteil von Steuerelementvorlagen ist, dass Sie eine Vorlage abhängig von der Laufzeit-Situation dynamisch auswählen lassen können. So kann z.B. je nach Benutzereingabe oder der Umgebung oder den Einstellungen des Geräts eine andere Vorlage ausgewählt werden.

 

In unserer Beispieldatei Cities4-DynamicSelection.mtd wird je nach Ausrichtung des Mobilgeräts (Hoch- oder Querformat) eine vertikale oder horizontale Vorlage ausgewählt. Wenn das Gerät im Querformat gehalten wird, werden automatisch horizontal angeordnete Optionsfelder angezeigt. Wenn der Benutzer die Ausrichtung des Geräts in Hochformat ändert, ändert sich die Anordnung der Optionsfelder automatisch in eine vertikale Anordnung. Diese Designfunktionalität wurde zum vorherigen Beispiel, Cities3-DynamicUpdates.mtd hinzugefügt.

 

Anmerkung:Sie können dieses Beispiel ausprobieren, indem Sie das Gerät drehen (zwischen Querformat- und Hochformatanzeige wechseln), während die Lösung ausgeführt wird oder indem Sie einen Wechsel der Geräteausrichtung simulieren. Um einen Wechsel der Ausrichtung zu simulieren, während eine Lösung ausgeführt wird, klicken Sie auf die Symbolleisten-Schaltfläche Ausrichtung wechseln (siehe Abbildung unten).
MTDCTExS4Sim1

In der Abbildung oben sehen Sie eine Simulation von Cities4-DynamicSelection.mtd in Querformatausrichtung. Darin wurde automatisch für beide Optionsfeldgruppen (aufgrund der Querformatausrichtung) die Steuerelementvorlage Dynamic Radio Buttons (Horizontal) ausgewählt, sodass die Optionsfelder automatisch in horizontaler Anordnung angezeigt werden.

 

Anmerkung:Die Geräteausrichtung ist uns bekannt, da sie in den beiden MobileTogether-Variablen \$MT_Landscape und \$MT_Portrait (die jeweils den Wert true() oder false() haben) gespeichert ist.

 

Funktionsweise

Um Vorlagen dynamisch auswählen zu können, müssen wir in jedem Platzhaltersteuerelement zwei Einstellungen definieren:

 

einen XPath-Ausdruck zur Definition der Bedingungen, unter denen die jeweils andere Vorlage ausgewählt werden soll (Die entsprechende Eigenschaft ist in der Abbildung unten im Fenster "Stile & Eigenschaften" markiert).

einen XPath-Ausdruck, der die Parameterwerte an die ausgewählte Steuerelementvorlage übergibt

MTDCTExS4DesPlaceholder1

 

Auswahl der Steuerelementvorlage

Der XPath-Ausdruck für den Platzhalter, der die Optionsfelder für Länder instanziiert, lautet:

 

if (\$MT_Landscape

then 'Dynamic Radio Buttons (Horizontal)' 

else 'Dynamic Radio Buttons (Vertical)'

 

Dieser Ausdruck definiert, dass, wenn die globale Variable \$MT_Landscape den Wert true() hat, dann die Steuerelementvorlage mit dem Namen Dynamic Radio Buttons (Horizontal) verwendet werden muss. Andernfalls (wenn \$MT_Landscape=false()), ist die Steuerelementvorlage mit dem Namen Dynamic Radio Buttons (Vertical) zu verwenden. Denken Sie daran, dass das Ergebnis dieses Ausdrucks der Name der aufzurufenden Steuerelementvorlage sein muss, also Hoch- und Querformat.

 

Der XPath-Ausdruck für den Platzhalter, der die Optionsfelder für Städte instanziiert, ist etwas anders: Da für einige Länder eine große Anzahl von Städten angezeigt wird (Italien 9 und USA 12), finden selbst im Querformat eventuell nicht alle Städte dieser Länder auf der horizontalen Anzeige Platz. Wir haben daher die Auswahl der horizontalen Vorlage (im Querformat) auf diejenigen Länder beschränkt, die weniger als 9 Städte haben. Unten sehen Sie den dazugehörigen XPath-Ausdruck. Der Teil, in dem die Städte des ausgewählten Landes gezählt werden, ist gelb markiert.

 

if (\$MT_Landscape and 

count(\$COUNTRIES-AND-CITIES/Cities/Continent[@name=\$PERSISTENT/Root/@Continent ]/Country[@name = \$PERSISTENT/Root/@Country]/City/@name) lt 9) 

then 'Dynamic Radio Buttons (Horizontal)' 

else 'Dynamic Radio Buttons (Vertical)'

 

Die oben aufgelisteten Definitionen wirken sich folgendermaßen aus: (i) in der Querformatausrichtung sind alle Länderlisten horizontal, während diese in der Hochformatausrichtung alle vertikal sind; (ii) in der Querformatausrichtung werden Listen von 1 bis 8 Städten horizontal angezeigt, während Listen, die mehr als 8 Städte enthalten, vertikal angezeigt werden; in der Hochformatausrichtung werden alle Städtelisten vertikal angezeigt.

 

 

Definition der Parameterwerte, die an die Vorlagen übergeben werden sollen

Beim XPath-Ausdruck, mit dem Werte an die Parameter der ausgewählten Steuerelementvorlage übergeben werden sollen (siehe Abbildung unten), muss es sich entweder um einen Array-Ausdruck oder um einen Zuordnungsausdruck handeln. Bedenken Sie, dass Sie nicht wissen, welche Vorlage zur Laufzeit tatsächlich aufgerufen wird. Sie wissen jedoch, dass die Wahl zwischen zwei Vorlagen besteht und dass beide Vorlagen zufällig zwei Parameter mit dem exakt gleichen Namen haben. Da beide Parameter denselben Namen haben, ist der XPath-Ausdruck zum Zuweisen von Werten einfacher.

MTDCTExS4TemplateParamDefs

Für den ersten Platzhalter haben wir einen Array-Ausdruck (Codefragment unten) verwendet. Das Array muss aus zwei Sequenzen bestehen (da wir zwei Parameter haben), wobei die erste Sequenz (unten gelb markiert) den Wert des ersten Parameters und die zweite Sequenz (unten blau markiert) den Wert des zweiten Parameters liefert. Die erste Sequenz generiert den Wert des Parameters \$values. Ihr Ergebnis ist eine Liste von Ländern des ausgewählten Kontinents. Die zweite Sequenz generiert den Wert des Parameters \$sort. Ihr Ergebnis ist true() oder false(). Beachten Sie, dass die Reihenfolge der Sequenzen im Array der Reihenfolge der Parameterdefinitionen im Projekt entsprechen muss und die Werte aller etwaigen optionalen Parameter enthalten muss (Hierbei kann es sich um die leere Sequenz () handeln, wenn kein Wert erforderlich ist).

 

[

(\$COUNTRIES-AND-CITIES/Cities/Continent[@name=\$PERSISTENT/Root/@Continent]/Country/@name),

(if (\$PERSISTENT/Root/@SortCountries=1) then true() else false())

]

 

Für den zweiten Platzhalter haben wir einen Zuordnungsausdruck (Codefragment unten) verwendet. Die Zuordnung muss aus Schlüssel:Wert-Paaren bestehen, wobei der Schlüssel der Name des Parameters sein muss. Das Schlüssel:Wert-Paar kann in jeder beliebigen Reihenfolge angegeben werden.

 

map{

"values":(\$COUNTRIES-AND-CITIES/Cities/Continent[@name=\$PERSISTENT/Root/@Continent ]/Country[@name = \$PERSISTENT/Root/@Country]/City/@name),

"sort":if (\$PERSISTENT/Root/@SortCities=1) then true() else false()

}

 

© 2017-2023 Altova GmbH