exsys GbR Emden Java applets and applications java.exsys.net |
Die Erstellung eines vollständigen Projektes ist in 3 Bereiche eingeteilt. Diese setzen sich zusammen aus:
HTML-Datei
Die Angaben in der HTML-Datei wurden so
gering wie möglich gehalten und bestehen lediglich aus der
notwendigen Angabe der Projekt-Datei sowie der Angabe der Farben
und des Textes, die während des Ladevorganges ausgegeben werden.
Projekt-Datei
In der Projekt-Datei wird die Grundstruktur
des Projektes beschrieben und einige Einstellungen vorgenommen,
die zum Zeitpunkt des Programmstarts gültig sind, wie z.B. die
Grundeinstellungen des Scrollbars.
Die Grundstruktur des Projektes wird durch Auflistung der
verwendeten Layers festgelegt, bei denen die Namen der
entsprechenden Layers, die zugehörigen Daten-Dateien und die vom
Endanwender zu Beginn kontrollierte Layer angegeben werden.
Layer-Dateien
Der Inhalt jeder einzelnen Layer wird in einer eigenen Datei
angegeben. In dieser Datei wird die Struktur, der Inhalt und das
Verhalten der entsprechenden Layer spezifiziert. Jede Layer hat
über den Layer-Namen, der in der Projekt-Datei angegeben wurde,
Zugriff auf fremde Layer und kann diese somit direkt
beeinflussen.
Die darzustellenden Informationen werden innerhalb der Layer-Datei durch Blöcke strukturiert, d.h., dass sie aus einer Menge aus Daten- und Organisationsblöcken bestehen, auf die bestimmte Operationen ausgeführt werden können.
Der elementarste Block ist der ContainerBlock, der zur Aufnahme weiterer Blöcke dient und in dem festgelegt wird, ob die enthaltenen Blöcke reihen- oder spaltenorientiert dargestellt werden. Innerhalb der ContainerBlöcke können auch Voreinstellungen, wie Textfarbe oder Target der Hyperlinks, vorgenommen werden, die an aufgenommene Blöcke vererbt werden, dort aber wieder überschrieben werden können. ContainerBlöcke können eine beliebige Anzahl weiterer ContainerBlöcke, TextBöcke und ImageBlöcke enthalten.
TextBlöcke (TB) und ImageBlöcke (IB) enthalten die eigentlichen Darstellungsdaten, also Texte bzw. Bilder.
Da die verschiedenen Themenbereiche i.A. durch Containerblöcke
auf höchster Ebene strukturiert und somit voneinander getrennt werden, können
auf diese Kontext-Blöcke durch Anwendung von SpaceBlöcken gezielt zusätzliche
Operationen ausgeführt werden.
Jeder ContainerBlock auf der höchsten Ebene
kann durch SpaceBlöcke (SB) bezüglich des vorangegangenen und
des folgenden Containerblocks vertikal ausgerichtet werden. In
der einfachsten Form geschieht dies durch Hinzufügen eines in
Pixel fest angegebenen Leerbereiches, kann aber auch aus der
Angabe einer bestimmten Regel bestehen, wie das automatische
Hinzufügen von Leerbereichen, um den Container zu zentrieren
oder oben bzw. unten bündig darzustellen, ohne dass ein anderer
Containerblock der höchsten Ebene zu sehen ist.
Befehle können durch Betätigung einer Aktiven Komponente, dem Eintreten eines Ereignisses oder in Abhängigkeit der Darstellungsposition ausgeführt werden. Deratige positionsabhängige Befehlssequenzen werden ebenfalls auf höchster Ebene definiert und können mit SpaceBlöcken kombiniert werden, um z.B. das automatische Scrolling nach Zentrierung des Containerblockes für eine angegebene Zeitdauer zu pausieren.
Befehlssequenzen aller Arten, also auch Freie Macros und Event-Macros, werden durch Auflistung der auzuführenden Befehle angegeben. Hierbei beziehen sich die Befehle auf die in der Sequenz als letzte angegebene Layer oder, falls entsprechend angegeben, auch auf alle Layer.
Befehle können sich von jeder Layer auf jede Layer beziehen und können auch während der Laufzeit umbelegt bzw. umdefiniert werden.
Einfügen von Kommentaren
Kommentare können innerhalb der Projekt-Datei und der Layer-Datei an beliebiger Stelle eingefügt werden. Diese werden durch // eingeleitet und gelten bis zum Ende der Zeile.
Beispiel:
// comment: Definition of event macros
Init={start} // comment: will start the
automatic scrolling after initializing this layer
// comment: Definition of used images
Images={
img1='images/logo.gif'
}
// comment: Definition and Layout of the display information
{ Columns
TB = { Width='30'
Text='This
text will be displayed in the first column'
}
// comment: this container organizes its
components in rows and will be centered within its parent container
{ Rows; Center
TB={ Width='70'
Text='This text will be displayed in the first row of the second column'
}
IB={ Width='70';
Center // comment: image will be centered in the second row of the second column
Image='img1'
}
}
TB = { Width='100'
Text='This
text will be displayed in the third column'
}
}
SB='Center' // comment: This will center the whole
container
Commands={Pause='3000'} // comment: the automatic
scrolling will be paused for 3 seconds after centering the container
SB='1' // comment: layer will only scroll, if it is larger than the display area
2 Einbindung des Applets in der HTML-Datei
Das zur Verfügung stehende Applet und alle zugehörigen Klassen sind in einer einzigen komprimierten Datei untergebracht. Dies reduziert sowohl die zu übertragenden Daten, als auch die zum Server aufzubauenden Verbindungen.
Folgendes darin enthaltene Applet kann eingesetzt werden:
Die Menge an Parametern, die in der HTML-Datei angegeben werden können bzw. müssen, wurde so gering wie möglich gehalten und beinhaltet somit lediglich Informationen, die zum Zeitpunkt des Startens benötigt werden.
Wichtig:
Das Applet benötigt den
Autor-Parameter, der mit folgender Angabe identisch sein muss:
<PARAM NAME="Author" VALUE="JET - Java Extended Ticker - (c) exsys GbR Emden - www.java.exsys.net">
Bitte fügen sie diese Zeile per copy and paste ein, um Schreibfehler zu vermeiden.
Parameter:
Name: | ProjectFile (erforderlich) |
Beschreibung: | Informationen, die für das gesamte Projekt relevant sind. Hierzu gehört insbesondere die Angabe der verwendeten Layer. Die Belegung dieser Datei wird weiter unten näher beschrieben. Die empfohlende Endung für Projekt-Dateien ist .prj |
Werte: | Name der Projekt-Datei |
Default: | - |
Name: | LoadingBGColor (optional) |
Beschreibung: | Hintergrundfarbe während des Lade- und Bearbeitungsvorganges |
Werte: | hexadezimaler Farbwert in der Form: 0xrrggbb oder #rrggbb |
Default: | schwarz |
Name: | LoadingTextColor (optional) |
Beschreibung: | Textfarbe, mit der die Ladenachricht <LoadingMessage> ausgegeben wird |
Werte: | hexadezimaler Farbwert in der Form: 0xrrggbb oder #rrggbb |
Default: | weiss |
Name: | LoadingMessage (optional) |
Beschreibung: | Text, der während des Lade- und Bearbeitungsvorganges ausgegeben wird |
Werte: | Text |
Default: | - |
Beispiel:
<APPLET CODE="Ticker.class" WIDTH="360" HEIGHT="240" ARCHIVE="jet.jar" NAME="jet_name" MAYSCRIPT>
<PARAM NAME="Author" VALUE="JET - Java Extended Ticker - (c) exsys GbR Emden - www.java.exsys.net">
<PARAM NAME=ProjectFile VALUE="demo.prj">
<PARAM NAME=LoadingBGColor VALUE="0x000000">
<PARAM NAME=LoadingTextColor VALUE="0x999999">
<PARAM NAME=LoadingMessage VALUE="Loading...">
</APPLET>
Bedenken Sie, daß die JAR-Datei beim Appletaufruf angegeben werden muß.
Die MAYSCRIPT-Angabe ist nur notwendig, wenn vom Applet aus JavaScript-Aufrufe erfolgen sollen.
Die Vergabe eines Namens (im Beispiel: Name="jet_name") ist nur notwendig, wenn das Applet von JavaScript aus gesteuert werden soll.
Zur Zeit wird die Kommunikation zwischen Java und JavaScript nicht von jedem Browser unterstützt.
In der Projektdatei werden Grundeinstellungen des Projektes vorgenommen,
von denen einige aber auch während der Laufzeit verändert werden können.
Neben der Konfiguration des Scrollbars, dem Aktivieren oder Deaktivieren des
Drag-Modus und dem Setzen der Hintergrundfarbe, werden die verwendeten Layer
und deren Hierarchie angegeben. Die empfohlende Endung für Projekt-Dateien
ist .prj
Parameter:
Name: | BGColor |
Beschreibung: | Hintergrundfarbe während der Darstellung |
Werte: | hexadezimaler Farbwert in der Form: 0xrrggbb oder #rrggbb |
Default: | schwarz |
Name: | DragMode |
Beschreibung: | Ziehen des Sichtbereiches mit der Maus ein- bzw. ausschalten |
Werte: | Yes, On, True bzw. No, Off, False |
Default: | Yes |
Name: | ScrollbarPosition |
Beschreibung: | Angabe der Position des Scrollbars bzw. dessen Ausschaltung und somit die Unterbindung seiner Darstellung |
Werte: | Left, Right, Hide |
Default: | Right |
Name: | ScrollbarActive |
Beschreibung: | Festlegung, ob der Scrollbar zu Beginn im aktiven oder inaktiven Zustand dargestellt wird. Im inaktiven Zustand wird der Scrollbar zwar angezeigt, ist aber mit keiner Layer verbunden und hat somit keine Funktionalität |
Werte: | Yes, On, True bzw. No, Off, False |
Default: | Yes |
Name: | ScrollbarWidth |
Beschreibung: | Darstellungsbreite des Scrollbars |
Werte: | ganze Zahl ab 9 |
Default: | 11 |
Name: | ScrollbarLeftMargin |
Beschreibung: | Linker Rand am Scrollbar |
Werte: | ganze Zahl |
Default: | 0 |
Name: | ScrollbarRightMargin |
Beschreibung: | Rechter Rand am Scrollbar |
Werte: | ganze Zahl |
Default: | 0 |
Name: | ScrollbarBGColor |
Beschreibung: | Hintergrundfarbe des Scrollbars |
Werte: | hexadezimaler Farbwert in der Form: 0xrrggbb oder #rrggbb |
Default: | schwarz |
Name: | ScrollbarMarginColor |
Beschreibung: | Farbe der durch ScrollbarLeftMargin und ScrollbarRightMargin erzeugten Randbereiche |
Werte: | hexadezimaler Farbwert in der Form: 0xrrggbb oder #rrggbb |
Default: | schwarz |
Name: | ScrollbarButtonColor |
Beschreibung: | Grundfarbe der Buttons am Scrollbar zum Hoch- und Runterscrollen |
Werte: | hexadezimaler Farbwert in der Form: 0xrrggbb oder #rrggbb |
Default: | grau (0xAAAAAA) |
Name: | ScrollbarSliderColor |
Beschreibung: | Farbe des Schiebereglers |
Werte: | hexadezimaler Farbwert in der Form: 0xrrggbb oder #rrggbb |
Default: | grau (0xAAAAAA) |
Name: | ScrollbarLineColor |
Beschreibung: | Farbe der Verbindungslinie zwischen den Buttons zum Hoch- und Runterscrollen, auf der sich der Schieberegler bewegt |
Werte: | hexadezimaler Farbwert in der Form: 0xrrggbb oder #rrggbb |
Default: | grau (0xAAAAAA) |
Name: | ScrollbarArrowColor |
Beschreibung: | Farbe der Pfeile auf den Buttons zum Hoch- und Runterscrollen |
Werte: | hexadezimaler Farbwert in der Form: 0xrrggbb oder #rrggbb |
Default: | schwarz |
Name: | ScrollbarActiveArrowColor |
Beschreibung: | Farbe der aktiven Pfeile auf den Buttons zum Hoch- und Runterscrollen. Die Pfeile werden aktiv, sobald sich die Maus auf ihnen befindet |
Werte: | hexadezimaler Farbwert in der Form: 0xrrggbb oder #rrggbb |
Default: | rot |
Name: | Layer |
Beschreibung: | Jede verwendete
Layer ist mittels des Schlüsselwortes Layer
in der Projektdatei anzugeben, wobei durch die Reihenfolge ihrer
Definition auch ihre Darstellungshierarchie angegeben wird. Hierbei steht
die als erste definierte Layer in der Hierarchie am höchsten und wird
somit über alle anderen Layer dargestellt. Demnach steht die als letzte
definierte Layer in der Hierarchie am niedrigsten. Die Darstellung der Layers erfolgt erst, nachdem sie alle vollständig eingeladen wurden. Alternativ können Layer aber auch während der Laufzeit eingeladen werden, um somit die Verzögerung der Darstellung beim Start zu verringern, wobei dann die Darstellung asynchron stattfindet, d.h. jede Layer wird unabhängig vom Zustand der Restlichen zum frühest möglichen Zeitpunkt dargestellt. Die Definition einer Layer wird mit dem Schlüsselwort Layer eingeleitet und die Angabe der Schlüsselwörter erfolgt innerhalb geschweifter Klammern |
Werte: | siehe Beschreibung in 'Schlüsselwörter zu Layer' |
Default: | - |
Schlüsselwörter zu Layer:
Die Spezifizierung einer Layer erfolgt durch folgende Schlüsselworte:
Name: | Name |
Beschreibung: | Der Name der Layer ist das einzige Schlüsselwort, das zwingend erforderlich ist. Der frei wählbare Name der Layer ist für die gesamte Laufzeit gültig und wird verwendet um die Layer von einer fremden Layer aus ansprechen zu können. Der Name ist auch dann gültig, wenn der Inhalt der Layer durch eine Ladeoperation neu belegt wird |
Werte: | Text |
Default: | - |
Name: | File |
Beschreibung: |
Angabe der Datei, die die Darstellungsdaten der entsprechenden Layer enthält. Dieser Parameter ist optional, so dass die Layer auch erst während der Laufzeit mit Daten belegt werden kann. |
Werte: | Name der Layer-Datei |
Default: | - |
Name: | UserControl |
Beschreibung: | Diesem Schlüsselwort wird kein Wert zugewiesen. Die Layer, die dieses Schlüsselwort enthält, ist diejenige, die der Benuzer über den Scrollbar und durch Ziehen des Sichtbereiches mit der Maus zu Beginn kontrollieren kann |
Werte: | - |
Default: | - |
Beispiel einer Projekt-Datei:
BGColor = '0x000000'
DragMode='no'
ScrollbarActive='no'
ScrollbarPosition='Right'
ScrollbarWidth='11'
ScrollbarLeftMargin='3'
ScrollbarRightMargin='0'
ScrollbarBGColor='0x000000'
ScrollbarMarginColor='0x000000'
ScrollbarButtonColor='0xAAAAAA'
ScrollbarSliderColor='0xAAAAAA'
ScrollbarLineColor='0xAAAAAA'
ScrollbarArrowColor='0x000000'
ScrollbarActiveArrowColor='0xFF0000'
Layer={
Name='loading'; File='loadinglayer.jet'
}
Layer={
Name='menu'; File='menulayer.jet'
}
Layer={
Name='help'; File='helplayer.jet'
}
Layer={
Name='info'; File='info_eng.jet'
UserControl
}
Layer={
Name='bg'; File='bglayer1.jet'
}
Eine Layer-Datei enthält alle Informationen, die zu ihrer Darstellung und Verarbeitung notwendig sind. Die Position jeder einzelnen Layer in der Darstellungshierarchie (auf welcher Ebene die verschiedenen Layers stehen) sowie die Namen der einzelnen Layer werden in der Projekt-Datei angegeben und sind für die gesamte Laufzeit gültig. Die empfohlende Endung für Layer-Dateien ist .jet
Eine Layer-Datei besteht aus folgenden Bereichen:
Beispiel einer Layer-Datei:
// comment: Definition of event macros
Init={start} // comment: starts the automatic scrolling
after initializing this layer
MouseEnter={stop} //
comment: stops automatic scrolling when mouse enters area
MouseExit={Start} // comment: starts automatic scrolling
when mouse leaves area
// comment: Definition of used fonts
Fonts={
Name='normalFont'; Size='12'; Style='bold';
font='TimesRoman' |
Name='bigFont';
Size='18'; Style='bold'+'italic'; font='TimesRoman'
}
// comment: Definition of used images
Images={
img1='images/logo.gif' |
offImg='images/passive.gif' |
onImg='images/active.gif'
}
// comment: Definition and Layout of the display information
Label='Main' // comment: sets a label to
jump to this position using the jump command
{ Columns
TB = {
Width='30'
Text='This text will be displayed in the first column'
}
// comment: this container organizes its
components in rows and will be centered within its parent container
{ Rows; Center
TB={ Width='70'
Text='This
text will be displayed in the first row of the second column'
}
IB={ Width='70';
Center // comment: image will be centered in the second row of the second column
Image='img1'
}
}
TB = { Width='100'
Text='This text will be
displayed in the third column'
}
}
SB='Center' // comment:
This will center the whole container
Commands={Pause='3000'}
// comment: the automatic scrolling will be paused for 3 seconds after centering
the container
{ Target='_blank'; Font='normalFont' // comment: default is
rows
TB={ Center;
TextAlignment='Right' // comment: the block will be centered and ist content
aligned to the right side
Text='This text contains
a '
URL='www.exsys.net'
Commands={Jump='Main'}
UnderLine='yes'
Font='bigFont'
ActiveText='link' //
comment: Active Component executes hyperlink call and command
UnderLine='no'
Font='normalFont'
Text=' that will be
underlined and displayed with a bigger font and executes a hyperlink call and a
command'
}
IB = {
Image='offImg';
ActiveImage='onImg' //comment: switches between both images in dependency of the
mouse position
}
}
SB='Bottom' // comment:
this container will be alligned to the bottom when the first container leaves
the visible area
Die Grundeinstellungen in einer Layer-Datei legen entweder Werte fest, die für die Verarbeitung der folgenden Daten als Grundwert dienen oder zusätzliche Leistungsmerkmale, die einmalig für jede Layer-Datei angegeben werden können.
Parameter:
Name: | BaseWidth (optional) |
Beschreibung: |
Dieser Wert gibt
an, welche Breite 100% entsprechen. Durch Angabe der zur Verfügung
stehenden Auflösung ist ein pixelgenaues Positionieren möglich. |
Werte: | ganze Zahl |
Default: | 100 |
Beispiel: | BaseWidth='100' |
Name: | ReloadInterval (optional) |
Beschreibung: | Angabe nach welcher Zeit in Sekunden der Inhalt der Layer neu geladen wird. Das Nachladen der Layer erfolgt periodisch, d.h., dass der Timer nach Ablauf neu gestartet wird. Der Mindestwert beträgt 5 Sekunden |
Werte: | ganze Zahl ab 5 (Zeitdauer in Sekunden) |
Default: | - |
Beispiel: | ReloadInterval='60' |
Name: | ReloadFile (optional) |
Beschreibung: | Angabe der Layer-Datei, die nach Ablauf der durch ReloadInterval angegebenen Zeit nachgeladen wird. Durch Angabe einer neuen Layer-Datei ist es möglich den Inhalt der Layer auszutauschen und somit z.B. verschiedene Produkte zyklisch zu präsentieren, ohne daß eine Interaktion durch den Benutzer notwendig ist. Wird dieser Parameter nicht angegeben, wird die aktuelle Layer-Datei nachgeladen |
Werte: | Name der Layer-Datei |
Default: | - |
Beispiel: | ReloadFile='info2.jet' |
Name: | ScrollingMode (optional) |
Beschreibung: | Dieser Parameter legt das Verhalten des Scrollbars und des Ziehens des Sichtbereiches mit der Maus fest. Im Modus Normal wird als letzte Position der Layer der zuletzt vorhandene Datenblock dargestellt. Der Ticker Modus, der bei automatisch scrollenden Layern verwendet werden sollte, fügt am Ende der Layer einen Übergang zum Anfang der Layer ein, so dass ein kontinuierliches Scrollen erfolgen kann. |
Werte: |
Normal: Empfohlen, wenn die Layer kein automatisches
Scrollen verwendet |
Default: | Ticker |
Beispiel: | ScrollingMode='normal' |
4.2 Definition der Ereignis-Macros
Ereignis-Macros sind Befehlssequenzen, die beim Eintreten eines Ereignisses automatisch ausgeführt werden. Die Angabe von Ereignis-Macros ist optional. Dennoch ist die Angabe des Start-Befehls innerhalb des Init Ereignis-Macros erforderlich, um das automatische Scrollen einzuleiten.
Bei der Definition der Ereignis-Macros gelten folgende Regeln:
Beispiele: Ereignis-Macros:
Init={start} // comment: will start the
automatic scrolling after initializing this layer
MouseEnter='MouseOnApplet' // comment:
executed when mouse enters area; Assignment of Free Macro name
MouseExit='MouseOffApplet' // comment:
executed when mouse leaves area; Assignment of Free Macro name
ReloadRequest={Layer='LoadMsg';
ShowIncrement} // comment: executed when layer requests
reloading
ReloadIndication={Layer='LoadMsg';
HideIncrement} // comment: executed when layer is
reloaded
Auflistung der Ereignis-Macros:
Init:
Ausführung, nachdem
die Layer mit neuen Daten belegt wurde. Dies ist beim ersten Einladen einer
Layer-Datei der Fall oder wenn die Layer durch den Load-Befehl mit dem
Inhalt einer anderen Layer-Datei belegt wird. Beim Nachladen der Layer mit der
aktuell dargestellten Layer-Datei (z.B. durch den Reload-Befehl), wird dieses
Macro nicht ausgeführt.
Soll die Layer zu
Beginn automatisch scrollen, muss hier zumindest der Start-Befehl (mit oder ohne
Prioritätsangabe) aufgeführt sein. Es wird empfohlen im Init-Macro auch die
Scroll-Geschwindigkeit und die Richtung des Scrollings festzulegen.
ReloadRequest:
Wird bei
der Ausführung eines Load- bzw. Reload-Befehls ausgeführt, sofern die Layer
bereits Daten enthält. D.h., dass dieses Ereignis-Macro nicht beim Programmstart
oder bei bisher unbelegten Layer ausgeführt wird, da in beiden Fällen noch kein
ReloadRequest-Macro definiert ist. Diese beiden Fälle können aber über das
Init-Macro der eingeladenen Layer-Datei behandelt werden.
ReloadIndication:
Die
Ausführung erfolgt immer, wenn der Inhalt einer bereits belegten Layer
nachgeladen wurde – sei es durch eine neue oder die gleiche Layer-Datei. Zu
bedenken ist, dass dieses Ereignis-Macro nach dem Ladevorgang und somit aus der
neu eingeladenen Layer-Datei ausgeführt wird.
MouseEnter:
Wird jedes Mal
ausgeführt, wenn die Maus den Applet-Bereich betritt.
MouseExit:
Wird jedes Mal
ausgeführt, wenn die Maus den Applet-Bereich verläßt.
MouseOnLink:
Wird
ausgeführt, sobald sich die Maus auf einer Aktiven Komponente
befindet.
MouseOffLink:
Wird
ausgeführt, sobald die Maus den Bereich einer Aktiven Komponente
verläßt.
MousePressed:
Wird immer
dann ausgeführt, wenn die Maustaste auf dem Appletbereich gedrückt wird. Diese
Ereignis-Macro wird, falls der Drag-Modus aktiv ist, nicht von der vom Anwender
kontrollierten Layer ausgeführt. In dem Fall wird das Ereignis-Macro ignoriert
und das automatische scrolling pausiert.
MouseReleased:
Wird immer
dann ausgeführt, wenn eine gedrückte Maustaste losgelassen wird. Diese
Ereignis-Macro wird, falls der Drag-Modus aktiv ist, nicht von der vom Anwender
kontrollierten Layer ausgeführt. In dem Fall wird das Ereignis-Macro ignoriert
und das automatische Scrolling, sofern es zuvor pausiert wurde, erneut
gestartet.
ShowLayer:
Das
ShowLayer-Macro wird ausgeführt, wenn eine zuvor unsichtbare Layer sichtbar
geschaltet wird.
HideLayer:
Das
HideLayer-Macro wird ausgeführt, wenn eine Layer unsichtbar geschaltet
wird.
LayerResized:
Wird dann
ausgeführt, wenn sich die Darstellungsgrösse des Applets verändert. Dies kann
durch Veränderung der Appletgröße oder durch Ein- bzw. Ausschalten des
Scrollbars geschehen.
Diese Ereignis-Macro wird im
Normalfall nur bei speziellen Effekten benötigt.
4.3 Definition der Freien Macros
Freie Macros sind Befehlssequenzen, die lediglich für die Zuweisung an Ereignis-Macros und Befehle dienen. Entweder, um sich wiederholende Befehlssequenzen nur einmalig definieren zu müssen, oder um das zyklische Umschalten zwischen verschiedene Zustände eines Befehles zu ermöglichen. Die Angabe von Ereignis-Macros ist optional.
Bei der Definition der Ereignis-Macros gelten folgende Regeln:
Beispiel: Freie Macros
// Definition of Free Macros
Macros={
helpOn={Layer='help'; Show;
Set='helpOff'} |
helpOff={Layer='help'; Hide;
Set='helpOn'}
}
// Assignment of a Free Macro
{
TB={
Commands='helpOn' // comment: Assignment of a Free Macro, that rotates between 2
states
ActiveText='Help
on/off'
}
}
4.4 Definition der verwendeten Fonts
Alle Fonts, die in einer Layer verwendet werden, sind in der Fontliste zu definieren und können später über ihren Namen angesprochen werden.
Bei der Erstellung der Fontliste gelten folgende Regeln:
Anmerkung:
Die Farben der Textausgaben werden in den
entsprechenden Container- und/oder Textblöcken vorgenommen.
Beispiel:
Fonts={
Name='F1'; Size = '20'; Style='bold' + 'italic'; font='Serif' |
Name='F2'; Size = '9'; Style='plain';
font='SansSerif'
}
// Some Data followed by more font-styles
Fonts={
Name='F3' Size = '12' Style='italic' font='Serif' |
Name='F4' Size = '12' Style='plain'
font='MonoSpaced'
}
Parameter:
Name: | Fonts |
Beschreibung: | Auflistung der verwendeten Fonts |
Werte: | siehe Beschreibung in 'Schlüsselwörter zu Fonts' |
Default: | - |
Schlüsselwörter zu Fonts:
Name: | Name |
Beschreibung: | Frei vergebbarer Name, um den Font innerhalb der Blöcke direkt ansprechen zu können |
Werte: | Text |
Default: | - |
Name: | Font |
Beschreibung: | Verwendeter Font |
Werte: |
|
Default: | SansSerif |
Anmerkung:
Unter dem MS IE
wird bei der Fontangabe zwischen Groß- und Kleinschreibung
unterschieden
Name: | Size |
Beschreibung: | Größe des Fonts |
Werte: | ganze Zahl |
Default: | 9 |
Name: | Style |
Beschreibung: | Verwendete Schriftart.Die verschiedenen Schriftarten können durch das ‘+‘-Zeichen miteinander kombiniert werden (siehe obiges Beispiel), wobei Doppelnennungen zu Verfälschungen führen können |
Werte: |
|
Default: | Plain |
4.5 Definition der verwendeten Bilder
Alle Bilder und Animationen, die in einer Layer verwendet werden, sind in der Bilderliste zu definieren und können später über ihren Namen angesprochen werden.
Bei der Erstellung der Bilderliste gelten folgende Regeln:
Beispiel:
Images={
img1='img/square1.jpg' |
img2='img/square2.jpg'
}
// Some Data followed by more images
Images={
img3='img/product_animation.gif' |
img4='img/cube.gif'
}
4.6 Design: Angabe der Darstellungsinformationen
Die Strukturierung der
Darstellungsinformationen (Layout) erfolgt hauptsächlich mittels Container- und
SpaceBlöcke, wohingegen die eigentlichen Daten in Text- und Imageblöcken
innerhalb der Containerblöcke angegeben werden.
Hierbei
können Containerblöcke mit flexiblen und mit Eigenschaften behafteten Tabellen
verglichen werden, in denen primär die Darstellungsstruktur (zeilen- oder
spaltenorientiert) der enthaltenen Blöcke festgelegt wird.
Spaceblöcke werden hingegen dazu eingesetzt, um zwischen
Containerblöcken der höchsten Ebene, die i.A. verschiedene Themenbereiche
behandeln, einen festen oder einer Regel entsprechenden Abstand einzubauen.
Jedem Block, mit Ausnahme des Spaceblocks, kann außerdem
eine Ausrichtung innerhalb seines Containers mitgeteilt werden, wobei der
Container eines Containerblocks auf höchster Ebene das Appletfenster selbst ist.
Diese Ausrichtungen können den Block zentrieren, links- oder rechtsbündig bzw.
oben oder unten bündig darstellen. Zusätzlich können die Inhalte der Datenblöcke
nach den selben Regeln ausgerichtet werden.
Der elementarste Block
zur Strukturierung der Informationen ist der ContainerBlock, der zur Aufnahme
weiterer Blöcke dient und in dem angegeben wird, ob die enthaltenen Blöcke
zeilen- oder spaltenorientiert aufgebaut werden. Um die gewünschte
Darstellungsstruktur realisieren zu können, ist es möglich Containerblöcke
beliebig ineinander zu verschachteln, so dass auch eine spaltenweise Darstellung
innerhalb einer zeilenweisen Darstellung problemlos realisiert werden kann.
Innerhalb der ContainerBlöcke können ebenfalls
Voreinstellungen, wie Textfarbe oder Target der Hyperlinks, vorgenommen werden,
die an enthaltene Blöcke vererbt werden, dort aber wieder überschrieben werden
können. ContainerBlöcke können eine beliebige Anzahl weiterer ContainerBlöcke,
TextBöcke und ImageBlöcke enthalten.
Syntax:
Ein Containerblock wird mit
dem {-Zeichen geöffnet und mit dem }-Zeichen geschlossen.
Beispiel:
{ ROWS; CENTER; Color='0xFF0000';
Target='_blank' // comment: opening first container block
{ COLUMNS // comment:
opening second container block
IB = {
// specify
image block content
}
TB = {
// specify
text block content
}
} // comment: closing second
container block
TB= {
// specify text block
content
}
} // comment: closing first container
block
Parameter:
Namen: | Columns, Rows |
Beschreibung: | Legt die Struktur des Containers fest, also ob die enthaltenen Blöcke spalten- oder zeilenweise dargestellt werden |
Werte: | - |
Default: | Rows |
Namen: | Center, Top, Bottom, Left, Right |
Beschreibung: | Ausrichtung des Containers innerhalb des ihn enthaltenden Containers. Falls der Container in einem Container enthalten ist, der zeilenweise darstellt, werden als Parameter nur Center, Left und Right berücksichtigt. Bei spaltenweiser Darstellung des Vater-Containers hingegen nur Center, Top und Bottom |
Werte: | - |
Default: | Innerhalb
zeilenorientierter Container: Left Innerhalb spaltenorientierter Container: Top |
Anmerkung:
Der
Haupt-Container (Applet-Fenster) stellt seine enthaltenen Container zeilenweise
dar.
Name: | BGColor |
Beschreibung: | Angabe der Hintergrundfarbe, mit der der Container unterlegt werden soll. Der Gültigkeitsbereich kann durch die verschiedenen BGMargin-Parameter beschränkt werden |
Werte: | hexadezimaler Farbwert in der Form: 0xrrggbb oder #rrggbb |
Default: | - |
Name: | BGImage |
Beschreibung: | Angabe des Hintergrundbildes (über den vergebenen Namen in der Bilderliste), mit dem der Container unterlegt werden soll. Der Gültigkeitsbereich kann durch die verschiedenen BGMargin-Parameter beschränkt werden |
Werte: | Name des Bildes, der in der Bilderliste vergeben wurde |
Default: | - |
Namen: | BGMargin, BGTopMargin, BGBottomMargin, BGLeftMargin, BGRightMargin |
Beschreibung: | Diese Ränder werden lediglich benötigt, wenn der Container
eine Hintergrundfarbe und/oder ein Hintergrundbild enthält. Mit diesen Werten
wird der jeweilige Abstand zwischen Blockrand und Hintergrundrand angegeben. Mit BGMargin können alle Ränder gleichzeitig gesetzt werden. Wird eines dieser Parameter ohne Wertzuweisung angegeben, so wird der entsprechende Rand auf 0 zurückgesetzt |
Werte: | ganze Zahlen ab 0 oder kein Wert, um auf 0 zurückzusetzen |
Default: | 0 |
Name: | Font |
Beschreibung: | Vorbelegung des verwendeten Fonts aller im Container enthaltenen Textblöcke. Diese Voreinstellung kann in enthaltenen Containern oder Textblöcken überschrieben werden |
Werte: | Name des Fonts, der in der Fontliste angegeben wurde |
Default: | Falls kein Font vererbt wurde: Name:Default; Font: SansSerif; Size: 9; Style: Plain |
Name: | Color |
Beschreibung: | Vorbelegung der normalen Textfarbe aller im Container enthaltenen Textblöcke. Diese Voreinstellung kann in enthaltenen Containern oder Textblöcken überschrieben werden |
Werte: | hexadezimaler Farbwert in der Form: 0xrrggbb oder #rrggbb |
Default: | weiss |
Name: | OffMouseColor |
Beschreibung: | Vorbelegung der Farbe der Aktiven Textkomponenten (Links, JavaScript-Aufrufe und Commands) aller im Container enthaltenen Textblöcke. Diese Voreinstellung kann in enthaltenen Containern oder Textblöcken überschrieben werden |
Werte: | hexadezimaler Farbwert in der Form: 0xrrggbb oder #rrggbb |
Default: | rot |
Name: | OnMouseColor |
Beschreibung: | Vorbelegung der Farbe der Aktiven Textkomponenten (Links, JavaScript-Aufrufe und Commands) im aktiven Zustand (Maus über der Komponente). Es werden alle im Container enthaltenen Container- und Textblöcke vorbelegt, gleichgültig auf welcher Ebene der Hierarchie sie sich befinden. Diese Voreinstellung kann in enthaltenen Containern oder Textblöcken überschrieben werden |
Werte: | hexadezimaler Farbwert in der Form: 0xrrggbb oder #rrggbb |
Default: | gelb |
Name: | Target |
Beschreibung: | Vorbelegung des Targets (in welchem Fenster/Frame eine Seite eingeladen werden soll) für Aktive Komponenten, die einen Hyperlink ausführen. Es werden alle im Container enthaltenen Blöcke vorbelegt, gleichgültig auf welcher Ebene der Hierarchie sie sich befinden |
Werte: |
|
Default: | - |
Anmerkung:
Wenn Target und URL in einem Container angegeben sind, werden alle
darin enthaltenen Aktive Komponenten miteinander verbunden.
Name: | URL |
Beschreibung: | Vorbelegung der URL (welche Seite eingeladen werden soll) für Aktive Komponenten, die einen Hyperlink ausführen. Es werden alle im Container enthaltenen Blöcke vorbelegt, gleichgültig auf welcher Ebene der Hierarchie sie sich befinden |
Werte: | Entweder eine relative Adresse zur CodeBase (Verzeichnis, in dem das Applet liegt) oder eine absolute Adresse |
Default: | - |
Anmerkung:
Da bei gleichzeitiger Angabe des Targets und der URL in einem Container
alle enthaltenen Aktive Komponenten miteinander verbunden werden, wird die URL
i.A. nur zu diesem Zweck in einem Container angegeben
Name: | JSCall |
Beschreibung: | Angabe einer JavaScript-Funktion. Wie bei der Angabe eines Targets und einer URL bzw. eines Commands in einem Container, werden durch die Angabe einer JavaScript-Anweisung in einem Containerblock alle in ihm enthaltenen Aktiven Komponenten miteinander verbunden. Bei Anwahl einer dieser Aktiven Komponenten wird die angegebene JavaScript-Anweisung ausgeführt |
Werte: | JavaScript Funktion inklusive der Parameter |
Default: | - |
Name: | Commands |
Beschreibung: | Angabe einer Befehlssequenz. Wie bereits bei der Angabe eines Targets und einer URL bzw. einer JavaScript-Anweisung (JSCall) in einem Container, werden durch die Angabe einer Befehlssequenz in einem Containerblock alle in ihm enthaltenen Aktiven Komponenten miteinander verbunden. Bei Anwahl einer dieser Aktiven Komponenten werden die in der Befehlssequenz enthaltenen Befehle ausführen |
Werte: | Befehlssequenz oder Name eines Freien Macros |
Default: | - |
Name: | TB |
Beschreibung: | Definition eines Textblocke zur Darstellung von Texten |
Werte: | Beschreibung und Inhalt des Textblocks |
Default: | - |
Name: | IB |
Beschreibung: | Definition eines Imageblocks (Bildblocks) zur Darstellung eines Bildes, bzw. zwei Bildern bei Aktiven Komponenten |
Werte: | Beschreibung und Inhalt des Imageblocks |
Default: | - |
Weitere ContainerBlöcke
Zur
weiteren Strukturierung des Containers können weitere Containerblöcke
aufgenommen werden, auf die die selben Regeln und Parameter angewendet werden
können.
Vererbte Informationen:
Textblöcke (TB) werden
stets innerhalb eines Containerblocks angegeben und enthalten die auszugebenden
Texte.
Hierbei setzt sich der gesamte auszugebende Text
des Blocks aus einer unbeschränkten Menge von Text- und ActiveText-Angaben (Aktive Textkomponenten) zusammen,
die aber letztendlich als durchgehender Text ausgegeben werden. Jede einzelne
Text- und ActiveText-Angabe erhält dabei die zum Zeitpunkt ihrer
Definition gesetzten Eigenschaften, wie Farben, Font, Tief- oder Hochstellen und
Unterstreichen.
Bei der Angabe von Texten kann an jeder beliebiger Position eine optionale Worttrennung angegeben werden. Diese Umbrüche, die in beliebiger Anzahl definiert werden können, werden nur aktiv, wenn das gesamte Wort nicht vollständig in die aktuelle Zeile passt. In einem solchen Fall wird eine Trennung an der optimalsten angegebenen Stelle vorgenommen. Derartige optionale Worttrennungen verringern im Vergleich zu festen Umbrüchen bei Nachbearbeitungen oder Veränderungen der Appletgröße, des Inhaltes oder des Layouts enorm den Wartungsaufwand. Sie sind aber auch bei Veränderung der Darstellungsgröße während der Laufzeit durch sichtbar bzw. unsichtbar schalten des Scrollbars nützlich, da der Text in diesen Fällen neu formatiert wird und sich somit dem neuen Format anpaßt.
Bei Text- und ActiveText-Angaben ist weiterhin zu beachten, dass enthaltene Zeilenumbrüche bei der Darstellung wiedergegeben werden. Tabulatoren hingegen werden vor der Darstellung herausgefiltert und können somit zur Formatierung des Quelltextes eingesetzt werden.
Syntax der optionalen Worttrennung:
Optionale Worttrennungen werden durch \- angegeben, wobei die Sequenz durch das Voransetzen eines weiteren \ Zeichens selbst dargestellt wird, dafür aber die Funktion der optionale Worttrennung verliert. Durch das Voransetzen weiterer \ Zeichen kann die Ausgabe des \ Zeichens mit der Funktionalität der optionalen Worttrennung kombiniert werden.
Beispiele: Optionale Worttrennungen
In\-for\-ma\-tion: enthält 3 optionale Worttrennung
\\- wird als \- ausgegeben und enthält keine optionale
Worttrennung
\\\- wird als \ ausgegeben und enthält eine
optionale Worttrennung
\\-\- wird als \- ausgegeben und
enthält eine optionale Worttrennung
In jedem Textblock kann ebenfalls angegeben werden wie der enthaltene Text innerhalb des Blocks ausgerichtet werden soll. Bei dieser mit TextAlignment angegebene Ausrichtung wird zwischen Center (zentriert), Left (linksbündig) und Right (rechtsbündig) unterschieden, wobei sich die Ausrichtung auf jede einzelne Zeile des Blocks bezieht. Wie bei jedem anderen Block, kann der gesamte Textblock auch innerhalb seines Containers ausgerichtet werden.
Wie bereits bei Containerblöcken beschrieben, können auch Textblöcke eine Hintergrundfarbe und/oder ein Hintergrundbild enthalten, was insbesondere bei der Gestaltung von Tabellen oder der Erzeugung von Menüpunkten von Nutzen ist. Bei Tabellen ist es aber in den meisten Fällen sinnvoller die Hintergundfarbe und/oder das Hintergrundbild im Container anzugeben, der die jeweilige Zeile bzw. Spalte darstellt.
Beispiel:
TB= { Right; TextAlignment='Center'; BGColor='0xFFFFFF';
OffMouseColor='0xFF0000'; OnMouseColor='0x00ff00'; Target='_blank'
Font='standartFont'; Color='0x000000';
Text='This textblock will be aligned to the right
side of its container and each line of its content will be centerd within the
textblock.
'
Color='0x0000FF';
Text='This text starts in a new line, will be
displayed in blue and contains an '
Font='newFont'
URL='www.exsys.net'
Commands={Layer='all'; Stop}
ActiveText='Active Component'
Font='standartFont'
Text=' that will be displayed in another font and
performs a hyperlink call and a command sequence.'
}
Parameter:
Name: | Text |
Beschreibung: | Angabe des auszugebenden Textes |
Werte: | Text |
Default: | - |
Name: | ActiveText |
Beschreibung: | Angabe des Textes einer Aktiven Komponente, d.h. der Text, der einen Hyperlink, eine JavaScript-Anweisung und/oder eine Befehlssequenz ausführen soll |
Werte: | Text |
Default: | - |
Name: | File |
Beschreibung: | Der
dargestellte Text besteht aus dem Inhalt der angegebenen Datei. Bei der
Ausgabe des enthaltenen Textes gelten alle bis zu diesem Zeitpunkt
angegebenen Zustände, wie Textfarbe, Font, etc. Die einzigen Zeichen, die
bei der Ausgabe herausgefiltert werden, sind die Tabulatoren, so dass auch
Hochkommata (‘) dargestellt werden. Die durch File ausgegebenen Texte können nicht als Aktive Komponente definiert werden |
Werte: | Name der Textdatei |
Default: | - |
Name: | Font |
Beschreibung: | Angabe des
Fonts, der für die folgenden Text- und ActiveText-Angaben verwendet werden
soll. Wenn verschiedene Fonts mit unterschiedlichen Größen in einer Zeile
auftreten, werden die Texte mit den kleineren Fonts von der Höhe her
entsprechend angepasst, so dass der gesamte Text der Zeile auf gleicher
Höhe geschrieben steht. Der Font kann innerhalb eines Textblocks beliebig oft umgeschaltet werden |
Werte: | Name des Fonts, der in der Fontliste angegeben wurde |
Default: | Falls kein Font vererbt wurde: Name:Default; Font: SansSerif; Size: 9; Style: Plain |
Name: | Color |
Beschreibung: | Angabe der
Farbe, mit der folgende Text-Angaben ausgegeben werden. Farbwerte können innerhalb eines Textblocks beliebig oft umgeschaltet werden und gelten bis zur nächsten Umschaltung |
Werte: | hexadezimaler Farbwert in der Form: 0xrrggbb oder #rrggbb |
Default: | weiss |
Name: | OffMouseColor |
Beschreibung: | Angabe der
Farbe, mit der nachfolgende ActiveText-Angaben (Aktive Textkomponenten,
die Hyperlinks, JavaScript-Funktionen und/oder Befehlssequenzen
ausführen) ausgegeben werden. Farbwerte können innerhalb eines Textblocks beliebig oft umgeschaltet werden und gelten bis zur nächsten Umschaltung |
Werte: | hexadezimaler Farbwert in der Form: 0xrrggbb oder #rrggbb |
Default: | rot |
Name: | OnMouseColor |
Beschreibung: | Angabe der
Farbe, mit der nachfolgende ActiveText-Angaben (Aktive Textkomponenten,
die Hyperlinks, JavaScript-Funktionen und/oder Befehlssequenzen ausführen)
ausgegeben werden, wenn sich die Maus über den entsprechenden Text
befindet. Farbwerte können innerhalb eines Textblocks beliebig oft umgeschaltet werden und gelten bis zur nächsten Umschaltung |
Werte: | hexadezimaler Farbwert in der Form: 0xrrggbb oder #rrggbb |
Default: | gelb |
Name: | UnderLine |
Beschreibung: | Legt fest, ob
folgende Text-Angaben (Text und ActiveText) unterstrichen ausgegeben
werden. Die Farbe zum Unterstreichen des Textes entspricht der des Textes.
Diese Einstellung kann beliebig oft umgeschaltet werden und gilt bis zur nächsten Umschaltung |
Werte: | Yes, On, True bzw. No, Off, False |
Default: | No |
Name: | Up |
Beschreibung: | Angabe um
welchen Betrag in Pixel die folgenden Text-Angaben (Text und ActiveText)
hochgestellt werden. Wird durch das Hochsetzen die aktuelle Zeilenhöhe
überschritten, so wird diese um den entsprechenden Betrag erhöht. Dieser Parameter steht in einer Wechselwirkung mit dem Down-Parameter, so daß von beiden lediglich der zuletzt Gesetzte gültig ist. Diese Einstellung kann beliebig oft umgeschaltet werden und gilt bis zur nächsten Umschaltung |
Werte: | ganze Werte ab 0 oder kein Parameter, um den Wert auf 0 zu setzen |
Default: | 0 |
Name: | Down |
Beschreibung: | Angabe um
welchen Betrag in Pixel die folgenden Text-Angaben (Text und ActiveText)
tiefer gestellt werden. Wird durch das tiefer Setzen die aktuelle
Zeilenhöhe überschritten, so wird diese um den entsprechenden Betrag
erhöht. Dieser Parameter steht in einer Wechselwirkung mit dem Up-Parameter, so daß von beiden lediglich der zuletzt Gesetzte gültig ist. Diese Einstellung kann beliebig oft umgeschaltet werden und gilt bis zur nächsten Umschaltung |
Werte: | ganze Werte ab 0 oder kein Parameter, um den Wert auf 0 zu setzen |
Default: | 0 |
Name: | LineHeight |
Beschreibung: | Mit LineHeight läßt sich eine Mindest-Zeilenhöhe für die
folgenden Text-Angaben (Text und ActiveText) angeben. Diese Option ist besonders
bei Tabellen sinnvoll, die spaltenorientiert aufgebaut sind und deren Spalten
verschiedene Fonts verwenden. Durch die Festlegung einer Mindest-Zeilenhöhe
ist es möglich die sich ergebenden Zeilen trotz verschiedener Fonts auf
selber Höhe darzustellen. Um diese Einstellung zu vereinfachen, kann man
abgesehen von einem Wert in Pixel, auch ein Referenzfont angeben, dessen
Höhe dann als Mindesthöhe verwendet wird. Diese Einstellung kann beliebig oft umgeschaltet werden und gilt bis zur nächsten Umschaltung |
Werte: | Referenzfont aus der Bilderliste oder ganze Werte ab 0 bzw. kein Parameter, um den Wert auf 0 zu setzen |
Default: | 0 |
Name: | Target |
Beschreibung: | Angabe, in
welchem Fenster/Frame die unter URL angegebene Seite nach Betätigung einer
Aktiven Komponente (ActiveText) eingeladen werden soll. Es werden nur
Seiten eingeladen, wenn der Aktiven Komponente eine URL und ein Target
zugewiesen wird. Diese Einstellung kann beliebig oft umdefiniert werden und gilt bis zur nächsten Umdefinition. Wenn Target und URL in einem Container angegeben sind, werden alle im Container enthaltenen Aktive Komponenten miteinander verbunden |
Werte: |
|
Default: | - |
Name: | URL |
Beschreibung: | URL (Adresse)
der einzuladenden Seite bei Betätigung einer Aktiven Komponenten
(ActiveText). Es werden nur Seiten eingeladen, wenn der Aktiven Komponente
eine URL und ein Target zugewiesen wird. Diese Einstellung kann beliebig oft umdefiniert werden und gilt bis zur nächsten Umdefinition. Wenn Target und URL in einem Container angegeben sind, werden alle im Container enthaltenen Aktive Komponenten miteinander verbunden |
Werte: | Entweder eine relative Adresse zur CodeBase (Verzeichnis, in dem das Applet liegt) oder eine absolute Adresse |
Default: | - |
Name: | JSCall |
Beschreibung: | Angabe einer
JavaScript-Funktion (inklusiv Parameter), die bei Anwahl nachfolgend
definierter Aktiver Komponenten (ActiveText) ausgeführt werden soll. Diese Einstellung kann beliebig oft umdefiniert werden und gilt bis zur nächsten Umdefinition oder der Zuweisung eines leeren Wertes (JSCall=’’). Wie auch bei der Angabe eines Targets und einer URL bzw. eines Commands in einem Container, werden durch die Angabe eines JSCall in einem Containerblock alle in ihm enthaltenen Aktiven Komponenten miteinander verbunden |
Werte: | JavaScript Funktion inklusive der Parameter |
Default: | - |
Name: | Commands |
Beschreibung: | Angabe einer
Befehlssequenz, die bei Anwahl nachfolgend definierter Aktiver Komponenten
(ActiveText) ausgeführt werden soll. Diese Einstellung kann beliebig oft umdefiniert werden und gilt bis zur nächsten Umdefinition oder der Zuweisung einer leeren Befehlssequenz (Commands=’’ oder Commands={}). Wie auch bei der Angabe eines Targets und einer URL bzw. eines JSCall in einem Container, werden durch die Angabe einer Befehlssequenz in einem Containerblock alle in ihm enthaltenen Aktiven Komponenten miteinander verbunden |
Werte: | Befehlssequenz oder Name eines Freien Macros |
Default: | - |
Name: | TextAlignment |
Beschreibung: | Festlegung der
Ausrichtung der einzelnen Zeilen innerhalb des Textblocks. Diese Einstellung gilt für den gesamten Textblock, so dass bei mehrfacher Angabe lediglich die zuletzt vorgenommene Einstellung gültig ist |
Werte: | Center, Left oder Right |
Default: | Left |
Namen: | Center, Top, Bottom, Left, Right |
Beschreibung: | Ausrichtung des
gesamten Textblocks innerhalb des ihn enthaltenden Containers. Falls der
Textblock in einem Container enthalten ist, der zeilenweise darstellt,
werden als Parameter nur Center, Left und Right berücksichtigt. Bei
spaltenweiser Darstellung des Vater-Containers hingegen nur Center, Top
und Bottom. Diese Einstellung gilt für den gesamten Textblock, so dass bei mehrfacher Angabe lediglich die zuletzt vorgenommene Einstellung gültig ist |
Werte: | - |
Default: | Innerhalb
zeilenorientierter Container: Left Innerhalb spaltenorientierter Container: Top |
Name: | Width |
Beschreibung: | Durch diesen
Wert kann die Breite eines TextBlocks (oder ImageBlocks) begrenzt
werden. Wenn dieser Wert nicht angegeben ist, belegen Datenblöcke soviel Platz wie möglich bzw. nötig und reichen daher meist bis zum rechten Rand. Da bei spaltenorientiertem Aufbau jede Spalte eine bestimmte Breite haben soll, ist i.A. eine Begrenzung der Breite der einzelnen Spalten mit Ausnahme der Letzten notwendig. Der dem Parameter Width zugewiesene Wert bezieht sich auf den in BaseWidth angegebenen Wert. Somit kann bei einer BaseWidth, die der Darstellungsbreite in Pixel entspricht, eine pixelgenaue Positionierung vorgenommen werden. Da sich die Breitenangabe auf den Wert von BaseWidth bezieht, kann die Grösse des Applets nachträglich verändert oder die Layer-Datei in andere Projekte wiederverwendet werden, ohne dass die Layer-Datei überarbeitet werden muss. Die angegebene Struktur folgt weiterhin den vorgegebenen Regeln und hält somit das Verhältnis der Breitenangaben ein. Die Width-Angabe stellt im eigentlichen Sinne nicht die Breite des Datenblocks dar, sondern die Position seines rechten Randes. Die Position des linken Randes ist automatisch 0 oder wird durch die Position des rechten Randes der vorangegangenen Spalte vorgegeben. Daher werden 3 Spalten, die jeweils 33% des Platzes einnehmen sollen und in deren Layer-Datei eine BaseWidth von 100 angegeben wurde, mit einem Width-Wert von 33, 66 und 99 belegt. Durch die Begrenzung der Breite eines Datenblocks und zusätzlicher Ausrichtung des gesamten Blocks, lassen sich auch auf einfache Weise Ränder an der linken und/oder rechten Seite erzeugen, sofern der Container groß genug ist, um eine Ausrichtung des Datenblocks zu ermöglichen |
Werte: | ganze Zahlen ab 0 |
Default: | 100 |
Name: | BGColor |
Beschreibung: | Angabe der Hintergrundfarbe, mit der der Textblock unterlegt werden soll. Der Gültigkeitsbereich kann durch die verschiedenen BGMargin-Parameter beschränkt werden |
Werte: | hexadezimaler Farbwert in der Form: 0xrrggbb oder #rrggbb |
Default: | - |
Name: | BGImage |
Beschreibung: | Angabe des Hintergrundbildes (über den vergebenen Namen in der Bilderliste), mit dem der Textblock unterlegt werden soll. Der Gültigkeitsbereich kann durch die verschiedenen BGMargin-Parameter beschränkt werden |
Werte: | Name des Bildes, der in der Bilderliste vergeben wurde |
Default: | - |
Namen: | Margin, TopMargin, BottomMargin, LeftMargin, RightMargin |
Beschreibung: | Durch diese
Parameter können die Ränder des Textblocks gesetzt werden, um somit
Abstände zu anderen Blöcken zu erzeugen. Die Ränder werden innerhalb des
Blocks erzeugt, so dass vorgegebene Blockgrößen erhalten bleiben. Mit dem Parameter Margin können alle Ränder gleichzeitig gesetzt werden. Wird kein Wert angegeben, so wird der entsprechende Rand auf 0 zurückgesetzt |
Werte: | ganze Zahlen ab 0 oder kein Wert, um auf 0 zurückzusetzen |
Default: | 0 |
Namen: | BGMargin, BGTopMargin, BGBottomMargin, BGLeftMargin, BGRightMargin |
Beschreibung: | Diese Art von
Ränder werden lediglich benötigt, wenn der Textblock eine Hintergrundfarbe
und/oder ein Hintergrundbild enthält. Mit diesen Werten wird der jeweilige
Abstand zwischen Blockrand und Hintergrundrand angegeben. Mit BGMargin können alle Ränder gleichzeitig gesetzt werden. Wird kein Wert angegeben, so wird der entsprechende Rand auf 0 zurückgesetzt |
Werte: | ganze Zahlen ab 0 oder kein Wert, um auf 0 zurückzusetzen |
Default: | 0 |
Imageblöcke (IB)
werden stets innerhalb eines Containerblocks angegeben und enthalten die
auszugebenden Bilder, die auch aus einer gif-Animation bestehen können.
Jeder ImageBlock enthält ein Bild bzw. zwei Bilder, falls
es sich um eine Aktive Komponente handelt, die zwischen den beiden Bildern
umschaltet. Bei solchen Aktiven Komponenten ist die Grösse des ersten Bildes
maßgebend, wodurch das aktive Bild die Grösse des Standardbildes annimmt.
Ebenso wie bei Textblöcken, können auch Imageböcke
innerhalb ihres Containers ausgerichtet werden. Auch eine Ausrichtung des Bildes
innerhalb seines Blocks ist möglich, wenn dem Block eine feste Grösse zugewiesen
wurde, die grösser als das Bild selbst ist.
Beispiel:
IB= { Bottom; Width='100'; ImageAlignment='Center';
Target='_blank'
URL='www.exsys.net'
Commands={Layer='info'; Load='exsysInfo.jet'}
Image='img1'
ActiveImage='img2'
}
Parameter:
Name: | Image |
Beschreibung: | Angabe des Standardbildes, das dargestellt werden soll |
Werte: | Name des Bildes, der in der Bilderliste vergeben wurde |
Default: | - |
Name: | ActiveImage |
Beschreibung: | Angabe des Bildes, das dargestellt werden soll, wenn sich die Maus auf dem entsprechenden Bereich befindet. Durch Angabe dieses Bildes, wird der ImageBlock automatisch zu einer Aktiven Komponente |
Werte: | Name des Bildes, der in der Bilderliste vergeben wurde |
Default: | - |
Name: | Target |
Beschreibung: | Angabe, in
welchem Fenster/Frame die unter URL angegebene Seite nach Betätigung der
Maustaste auf dem Bild der Aktiven Komponente eingeladen werden soll. Es
werden nur Seiten eingeladen, wenn der Aktiven Komponente eine URL und ein
Target zugewiesen wird. Durch Angabe dieser beiden Werte wird der
ImageBlock zu einer Aktiven Komponente. Wenn Target und URL in einem Container angegeben sind, werden alle im Container enthaltenen Aktive Komponenten miteinander verbunden |
Werte: |
|
Default: | - |
Name: | URL |
Beschreibung: | URL (Adresse)
der einzuladenden Seite nach Betätigung der Maustaste auf dem Bild der
Aktiven Komponente. Es werden nur Seiten eingeladen, wenn der Aktiven
Komponente eine URL und ein Target zugewiesen wird. Durch Angabe dieser
beiden Werte wird der ImageBlock zu einer Aktiven Komponente. Wenn Target und URL in einem Container angegeben sind, werden alle im Container enthaltenen Aktive Komponenten miteinander verbunden |
Werte: | Entweder eine relative Adresse zur CodeBase (Verzeichnis, in dem das Applet liegt) oder eine absolute Adresse |
Default: | - |
Name: | JSCall |
Beschreibung: | Angabe einer
JavaScript-Funktion (inklusiv Parameter), die bei Anwahl nachfolgend
definierter Aktiver Komponenten ausgeführt werden soll. Durch Angabe
einer JavaScript-Funktion wird der ImageBlock zu einer Aktiven
Komponente. Wie auch bei der Angabe eines Targets und einer URL bzw. eines Commands in einem Container, werden durch die Angabe eines JSCall in einem Containerblock alle in ihm enthaltenen Aktiven Komponenten miteinander verbunden |
Werte: | JavaScript Funktion inklusive der Parameter |
Default: | - |
Name: | Commands |
Beschreibung: | Angabe einer
Befehlssequenz, die bei Anwahl des Bildes mit der Maus ausgeführt werden
soll. Durch Angabe einer Befehlssequenz wird der ImageBlock zu einer
Aktiven Komponente. Wie bereits bei der Angabe eines Targets und einer URL bzw. eines JSCall in einem Container, werden durch die Angabe einer Befehlssequenz in einem Containerblock alle in ihm enthaltenen Aktiven Komponenten miteinander verbunden |
Werte: | Befehlssequenz oder Name eines Freien Macros |
Default: | - |
Name: | ImageAlignment |
Beschreibung: | Festlegung der Ausrichtung des Bildes (bzw. der Bilder) innerhalb des Imageblocks, sofern der Block durch Angabe einer Breite (Width-Parameter) größer als das durch Image angegebene Standardbild ist |
Werte: | Center, Left oder Right |
Default: | Left |
Namen: | Center, Top, Bottom, Left, Right |
Beschreibung: | Ausrichtung des gesamten Imageblocks innerhalb des ihn enthaltenden Containers. Falls der Imageblock in einem Container enthalten ist, der zeilenweise darstellt, werden als Parameter nur Center, Left und Right berücksichtigt. Bei spaltenweiser Darstellung des Vater-Containers hingegen nur Center, Top und Bottom |
Werte: | - |
Default: | Innerhalb
zeilenorientierter Container: Left Innerhalb spaltenorientierter Container: Top |
Name: | Width |
Beschreibung: | Durch diesen
Wert kann die Breite eines ImageBlocks (oder TextBlocks) begrenzt
werden. Wenn dieser Wert nicht angegeben ist, belegen Datenblöcke soviel Platz wie möglich bzw. nötig und reichen daher meist bis zum rechten Rand. Da bei spaltenorientiertem Aufbau jede Spalte eine bestimmte Breite haben soll, ist i.A. eine Begrenzung der Breite der einzelnen Spalten mit Ausnahme der Letzten notwendig. Der dem Parameter Width zugewiesene Wert bezieht sich auf den in BaseWidth angegebenen Wert. Somit kann bei einer BaseWidth, die der Darstellungsbreite in Pixel entspricht, eine pixelgenaue Positionierung vorgenommen werden. Da sich die Breitenangabe auf den Wert von BaseWidth bezieht, kann die Grösse des Applets nachträglich verändert oder die Layer-Datei in andere Projekte wiederverwendet werden, ohne dass die Layer-Datei überarbeitet werden muss. Die angegebene Struktur folgt weiterhin den vorgegebenen Regeln und hält somit das Verhältnis der Breitenangaben ein. Die Width-Angabe stellt im eigentlichen Sinne nicht die Breite des Datenblocks dar, sondern die Position seines rechten Randes. Die Position des linken Randes ist automatisch 0 oder wird durch die Position des rechten Randes der vorangegangenen Spalte vorgegeben. Daher werden 3 Spalten, die jeweils 33% des Platzes einnehmen sollen und in deren LayerDatei eine BaseWidth von 100 angegeben wurde, mit einer Width von 33, 66 und 99 belegt. Durch die Begrenzung der Breite eines Datenblocks und zusätzlicher Ausrichtung des gesamten Blocks, lassen sich auch auf einfache Weise Ränder an der linken und/oder rechten Seite erzeugen, sofern der Container groß genug ist, um eine Ausrichtung des Datenblocks zu ermöglichen |
Werte: | ganze Zahlen ab 0 |
Default: | 100 |
Namen: | Margin, TopMargin, BottomMargin, LeftMargin, RightMargin |
Beschreibung: | Durch diese
Parameter können die Ränder des Imageblocks gesetzt werden, um somit
Abstände zu anderen Blöcken zu erzeugen. Die Ränder werden innerhalb des
Blocks erzeugt, so dass vorgegebene Blockgrößen erhalten bleiben. Mit dem Parameter Margin können alle Ränder gleichzeitig gesetzt werden. Wird kein Wert angegeben, so wird der entsprechende Rand auf 0 zurückgesetzt |
Werte: | ganze Zahlen ab 0 oder kein Wert, um auf 0 zurückzusetzen |
Default: | 0 |
SpaceBlöcke (SB) werden verwendet, um ContainerBlöcke, die auf der höchsten Ebene (also nicht innerhalb eines Container- oder Datenblocks) definiert wurden, vertikal auszurichten oder um einen Abstand zum folgenden ContainerBlock und somit zu seinem Inhalt herzustellen. Daraus ergibt sich, dass SpaceBlöcke ebenfalls nur auf der höchsten Ebene definiert werden können.
Im Allgemeinen bestehen die Informationen einer Layer aus verschiedenen Themenbereichen, die durch verschiedene Containerblöcke strukturiert werden und somit einen bestimmten Kontext wiedergeben. Oft ist es erwünscht diese Kontexte durch Hinzufügen von Leerräumen sichtbar voneinander zu trennen oder gar dafür zu sorgen, dass sie einzeln dargestellt werden. Eine übliche Anwendung wäre z.B. das automatische Scrolling zu pausieren, nachdem der KontextBlock (wiedergegeben durch einen ContainerBlock) auf dem Sichtbereich zentriert wurde, ohne dass ein fremder Kontext-Block sichtbar ist. Dies kann natürlich durch Einfügen fester Leeräume erreicht werden, hat aber den Nachteil, dass diese bei einer Veränderung der Appletgröße oder des Kontextblockes angepasst werden müssen. Einfacher und wartungsfreundlicher ist es, eine der vorhandenen Regeln anzuwenden, die automatisch den jeweils vorangegangenen ContainerBlock zentrieren bzw. oben oder unten bündig darstellen und dafür sorgen, dass sich fremde KontextBlöcke außerhalb des Sichtbereiches befinden. Befehlssequenzen, die nach dem SpaceBlock angegeben wurden, werden erst nach Erreichen der vorgegebenen Position ausgeführt.
Die Position eines Labels (Sprungmarke) wird ebenfalls durch Spaceblöcke beeinflusst. Da SpaceBlöcke, die einen Leerbereich vor dem KontextBlock setzen (Center und Bottom), einen durch den vorangegangenen Kontextblock bereits gesetzten Leerbereich berücksichtigen, also aufrechnen, ist die Positionierung eines Labels am oberen Rand des ausgerichteten Blocks nicht ohne weiteres möglich. Bedenken Sie, dass der Leerbereich durch den bereits vorhandenen Leerbereich des vorangegangenen Blocks geringer ausfällt und das Label somit tiefer liegt. Um in einem solchen Fall dennoch das Label an der gewünschten Stelle positionieren zu können, gibt es für die Regeln Center und Bottom die Ersatzregeln FixCenter und FixBottom, die vorangegangene Leerbereiche ignorieren und somit den geforderten Leerbereich vollständig einfügen.
Beispiel:
Label='main'
{
TB = {
// specify text
block content
}
}
SB = 'Top'
Commands={Pause='3000'}
Label='intro'
{
TB = {
// specify text block
content
}
}
SB = 'FixCenter'
Commands={Pause='5000'}
Werte eines SpaceBlockes
Fester Wert: ganze Zahl größer
0:
Fügt einen festen Leerraum ein, der in der Größe
dem angegebenen Wert entspricht
Center:
Zentrierung des vorangegangen Containerblocks, ohne dass fremde ContainerBlöcke
sichtbar sind. Hierbei werden bereits vorhandene Leerbereiche berücksichtigt,
indem die zu setzenden Leerräume um deren Größe verringert werden.
Top:
Fügt hinter dem
vorangegangenen ContainerBlock einen Leerbereich ein, der so groß ist, dass der
folgende ContainerBlock noch nicht zu sehen ist, wenn der auszurichtende
Container am oberen Rand des Sichtbereiches dargestellt wird.
Bottom:
Fügt vor dem vorangegangenen
ContainerBlock einen Leerbereich ein, der so groß ist, dass der vorherige
ContainerBlock nicht mehr zu sehen ist, wenn der auszurichtende Container am
unteren Rand des Sichtbereiches dargestellt wird. Hierbei werden bereits
vorhandene Leerbereiche berücksichtigt, indem die zu setzenden Leerräume um
deren Größe verringert werden.
FixCenter:
Zentrierung des
vorangegangen Containerblocks, so dass fremde ContainerBlöcke nicht sichtbar
sind. Hierbei werden, im Gegensatz zu Center, bereits vorhandene Leerbereiche
nicht berücksichtigt.
FixBottom:
Fügt vor dem vorangegangenen
ContainerBlock einen Leerbereich ein, der so groß ist, dass der vorherige
ContainerBlock nicht mehr zu sehen ist, wenn der auszurichtende Container am
unteren Rand des Sichtbereiches dargestellt wird. Hierbei werden, im Gegensatz
zu Bottom, bereits vorhandene Leerbereiche nicht berücksichtigt.
ClearScreen:
Fügt einen Leerberreich ein,
der so groß wie der Sichtbereich ist, wobei bereits vorhandene Leerbereiche
berücksichtigt werden, indem der zu setzende Leerraum um dessen Größe verringert
wird.
FullScreen:
Fügt einen Leerberreich ein,
der so groß wie der Sichtbereich ist. Hierbei werden, im Gegensatz zu
ClearScreen, bereits vorhandene Leerbereiche nicht berücksichtigt.
Wie bereits in den Beschreibungen der Text- und ImageBlöcke erläutert, sind Aktive Komponenten Bilder oder Textkomponenten, die eine Funktion beinhalten. Diese Funktion kann aus der Ausführung eines Hyperlinks, einer JavaScript-Anweisung und/oder einer Befehlssequenz bestehen, die bei Anwahl der Komponente mit der Maus aktiviert werden. Aktive Komponenten können aber auch funktionslos sein und stellen dann lediglich durch die optische Änderung ihres Zustandes eine Aktive Komponente dar.
Textbereiche, die eine Aktive Komponente darstellen sollen, werden mittels ActiveText, statt der normalen Textangabe durch Text, angegeben. Der Aktiven Komponente kann durch Angabe einer Befehlssequenz, einer JavaScript-Anweisung und/oder einer URL und eines Targets eine Funktionalität zugewiesen werden.
Bei Bildern, die eine Aktive Komponente darstellen sollen, reicht die Angabe eines alternativen Bildes aus, das angezeigt wird, sobald sich die Maus auf dem entsprechenden Bereich befindet. Diesen Bildern kann dann ebenfalls durch Angabe einer Befehlssequenz, einer JavaScript-Anweisung und/oder einer URL und eines Targets eine Funktionalität zugewiesen werden. Bei Bildern reicht bereits die Angabe einer Funktion aus, um sie zu Aktiven Komponenten zu machen, ohne dass ihnen ein alternatives Bild zugewiesen werden muss.
4.7.1 Verknüpfung Aktiver Komponenten – Container Links
Um eine Aktive Komponente zu erzeugen, die aus Bildern und Texten
besteht, ist es möglich verschiedene Aktive Komponenten miteinander zu verbinden.
Dabei ist es ohne Bedeutung welcher Art diese sind, also ob Text oder Bild,
oder wieviele Komponenten miteinander verbunden werden sollen.
Miteinander verbundene Aktive Komponenten verhalten sich
wie eine einzige Aktive Komponente, indem sie alle gleichzeitig ihren Zustand
wechseln, sobald sich die Maus auf dem Bereich einer dieser Komponenten
befindet. Da sich die verbundenen Komponenten wie eine einzige Komponente verhalten,
sind die von ihnen auszuführenden Funktionen auch die Selben, gleichgültig welche
dieser Komponenten ausgewählt wird. Die Funktionalität und automatisch auch
die Verknüpfung der Aktiven Komponenten wird in dem ContainerBlock festgelegt,
der die Aktiven Komponenten beinhaltet. Zu diesem Zweck kann natürlich auch
speziell ein Container erzeugt werden. Individuelle Funktionalitäten, die direkt
bei einer Aktiven Komponente angegeben wurden, werden bei Container Links ignoriert.
Die Verknüpfung Aktiver Komponenten erfolgt durch Angabe einer Befehlssequenz, einer JavaScript-Funktion und/oder einer URL und eines Targets innerhalb eines Containers.
Beispiel:
{ CENTER; Columns;
URL='www.exsys.net'; Target='_blank'; JSCall='openWindow("parameter1",
"parameter 2")'
TB={ Width='45'
Text='This is the first column including the first
connected '
ActiveText='Active Component'
}
TB={ Width= '90'
Text='This is the second column including the second
connected '
ActiveText='Active Component'
}
}
4.8 Befehle & Befehlssequenzen
Befehle dienen zur Steuerung und Beeinflussung der verschiedenen
Layers während der Laufzeit. Die Angabe eines Befehls erfolgt stets als Bestandteil
einer Befehlssequenz, welche eine Auflistung der auszuführenden Befehle darstellt,
und deren Bestandteile beim Eintreten der auslösenden Bedingung in der angegebenen
Reihenfolge ausgeführt werden.
Durch Angabe einer Bezugslayer innerhalb der Befehlssequenz
können Befehle direkt an fremde Layer gerichtet werden, um dort ausgeführt zu
werden und so das Verhalten der fremden Layer zu steuern, was insbesondere bei
Menü-Layern oder zum Nachladen fremder Layer erforderlich ist.
Um die Bezugslayer anzugeben, wird dem Layer-Parameter der
Layer-Name zugewiesen, der in der Projekt-Datei festgelegt wurde. Die Bezugslayer
kann innerhalb der Befehlssequenz an beliebiger Stelle und beliebig oft angegeben
und umdefiniert werden. Jeder Befehl bezieht sich bei seiner Ausführung auf
die zum Zeitpunkt seines Auftretens zuletzt angegebene Bezugslayer, wobei bei
fehlender Angabe die eigene Layer als Bezugslayer verwendet wird.
Neben der Angabe einer Bezugslayer über den
Layernamen, stehen noch die Schlüsselworte 'Self' zur Referenzierung der eigenen
Layer und 'All', um die Befehle auf alle Layer zu beziehen, zur
Verfügung.
Befehlssequenzen werden innerhalb geschweifter Klammern angegeben und enthalten eine Auflistung der auszuführenden Befehle und eine beliebig oft und optionale Angabe der Bezugslayer. Die einzelnen Befehle bzw. Anweisungen der Sequenz können durch Semikolons voneinander getrennt werden.
Prinzipiell kann
zwischen drei Arten ausführender Befehlssequenzen unterschieden werden. Diese
verschiedenen Typen unterscheiden sich primär durch die Art und Weise wie sie
ausgelöst werden.
Ausführung durch Aktive Komponenten
Die
Befehlssequenz ist an eine Aktive Komponente eines Text- oder Imageblockes
gebunden und wird erst durch deren Anwahl ausgeführt. Das Konzept einer solchen
Befehlssequenz entspricht dem eines Hyperlinks. Eine Aktive Komponente kann die
Funktionalität einer Befehlssequenz, einer JavaScript-Funktion und eines
Hyperlinks enthalten und somit alle drei Aktionen gleichzeitig bei
ihrer Anwahl ausführen.
Beispiel:
TB = {
Target='_blank'; URL='www.exsys.net'
Commands={Layer='All'; Stop; Layer='Self'; Jump='index';
Layer='main'; Reload}
ActiveText='Active Component'
}
Positionsabhängige Ausführung
Positionsabhängige Befehlssequenzen werden auf höchster
Ebene angegeben, also nicht innerhalb eines
Container- oder Datenblocks, und werden in Abhängigkeit ihrer
Definitionsposition und der Darstellungsposition der Layer ausgeführt.
Positionsabhängige Befehlssequenzen unterstützen einen
zusätzlichen Parameter, durch den angegeben werden kann, ob die Befehlssequenz
beim Erreichen ihrer Definitionsposition am unteren oder am oberen
Rand des Darstellungsbereiches ausgeführt wird.
Da bei jedem Neustart des automatischen Scrollings erneut geprüft wird, ob an der aktuellen Position ein Befehl auszuführen ist, sollte bei positionsabhängigen Befehlssequenzen der Einsatz des Stop-Befehls vermieden werden - dieser würde bei einem ausgeführten Start-Befehl das Scrolling erneut stoppen. Möchte man das Scrolling dennoch stoppen, wird die Verwendung des Pause-Befehls empfohlen, da dieser sowohl bei Ablauf der angegebenen Zeitspanne wie auch bei Ausführung des Start- und Continue-Befehles das automatische Scrolling aufnimmt ohne die Befehlssequenz erneut auszuführen.
Beispiel 1:
{
TB = {
// Specify block
content
}
}
Commands={Bottom; Pause='2000'}
Effekt:
Ungeachtet der Größe des Datenblocks, wird das automatische
Scrolling für 2 Sekunden pausiert, nachdem der Containerblock (und somit der
Datenblock) am unteren Rand des Darstellungsbereiches ausgerichtet
ist.
Beispiel 2:
{
TB = {
// Specify block
content
}
}
Commands={TOP; Speed='20'}
Effekt:
Ungeachtet der Größe des Datenblocks, wird die Geschwindigkeit des Scrollings
verändert, sobald der Containerblock (und somit der Datenblock) am oberen
Darstellungsbereiches herausgescrollt ist.
Beispiel 3:
{
TB = {
// Specify block
content
}
}
SB='TOP'
Commands={Bottom; Pause='2000'}
Effekt:
Fall 1: Containerblock ist größer als der
Darstellungsbereich
Das automatische Scrolling wird,
nachdem das Ende des Datenblockes am unteren Rand des Darstellungsbereiches
dargestellt wird, für 2 Sekunden pausiert.
Fall 2: Containerblock ist kleiner als der
Darstellungsbereich
Das automatische Scrolling wird,
nachdem der Datenblock am oberen Rand des Darstellungsbereiches ausgerichtet
ist, für 2 Sekunden pausiert.
Ausführung durch
Ereignis-Macros
Die Befehlssequenzen der
Ereignis-Macros werden durch das Eintreten des Ereignisses, das den Macro
characterisiert, automatisch ausgeführt. Die einzelnen Ereignis-Macros sind in
einem gesonderten Kapitel näher beschrieben.
Beispiele:
Init = {Stop='1000'}
ReloadRequest =
{Layer='LoadMessage'; ShowIncrement}
ReloadIndication = {Layer='LoadMessage';
HideIncrement}
MouseEnter = {Stop}
MouseExit =
{Start}
MouseOnLink =
{Pause}
MouseOffLink = {Continue}
Umdefinition von
Befehlssequenzen während der Laufzeit
Jede
Befehlssequenz mit Ausnahme der Freien Macros kann während der Laufzeit
umdefiniert werden. Hierdurch können Befehle so definiert werden, dass sie
lediglich ein einziges Mal ausgeführt werden, oder auch so, dass während der
Laufzeit ihre Funktionalität verändert wird.
Die Umbelegung erfolgt innerhalb der ursprünglichen Befehlsfolge durch den Set-Parameter,
dem entweder der Name eines freien Macros oder direkt eine neue Befehlssequenz
zugewiesen wird. Der neue Zustand wird nach Ausführung der
urprünglichen Befehlssequenz eingenommen. Es ist auch möglich eine leere Befehlsfolge
anzugeben, wodurch der Befehl zu einem einmalig ausführbaren Befehl wird.
Beispiel:
// Free Macros
Macros = {
State1={SetBGColor='0x000000'; Set='State2'} |
State2={SetBGColor='0xFF0000'; Set='State3'} |
State3={SetBGColor='0x00FF00'; Set='State4'} |
State4={SetBGColor='0x0000FF'; Set='State5'} |
State5={SetBGColor='0xFFFFFF'; Set='State1'}
}
// Display
Information
{
TB = {
Commands =
'State1'
ActiveText='Active Component 1, ' // rotating states
Commands = {Load='newFile.jet'; Set={}}
ActiveText='Active
Component 2, ' // use once command
Commands =
{Direction='Back'; Set={Direction='Forward'}}
ActiveText='Active Component 3' // direct
reassignment; only once
}
}
Da Befehlssequenzen
auch von fremden Befehlssequenzen und sogar von fremden Layern aus umdefiniert
werden können, kann jeder Befehlssequenz zu ihrer Referenzierung ein Name
zugewiesen werden.
Die explizite Namensvergabe wird nur bei Befehlssequenzen
Aktiver Komponente und positionsabhängiger Befehlssequenzen unterstützt, da
Ereignis-Macros und Freie-Macros von Haus aus über einen Namen verfügen.
Die Vergabe des
Namens erfolgt innerhalb der Befehlssequenz über den Name-Parameter.
Einem Commands-Parameter, der seine Befehlssequenz über einen Freien Macro zugeordnet bekommt, kann kein Name zugewiesen werden. In einem solchen Fall, gerade wenn es sich um zyklische Zustandswechsel handelt, kann die erste Belegung durch direkte Zuweisung einer Befehlssequenz mit Angabe eines Namens erfolgen und weitere Zustandsänderungen dann in gewohnter Weise über die Freien Macros behandelt werden.
Ereignis-Macros werden durch Angabe ihres Macro-Namens umdefiniert.
Freie-Macros können nicht umdefiniert werden, da sie eine Sammlung unveränderlicher Befehlssequenzen darstellen.
Beispiel:
// Free Macros
Macros = {
State1={SetBGColor='0x000000'; Set='State2'} |
State2={SetBGColor='0xFF0000';
Set='State3'} |
State3={SetBGColor='0x00FF00';
Set='State4'} |
State4={SetBGColor='0x0000FF';
Set='State5'} |
State5={SetBGColor='0xFFFFFF';
Set='State1'}
}
// Display
Information
{
TB = {
Commands =
{Name='ColorSwitcher'; SetBGColor='0x000000'; Set='State2'}
ActiveText='Active Component 1, ' // rotating states
Commands =
{ColorSwitcher='state1'}
ActiveText='Active Component 2, ' // resets command of ‘Active Component
1’
Commands =
{MouseEnter='Stop'; MouseExit='Start'}
ActiveText='Active Component 3, ' // defines MouseEnter & MouseExit
Event-Macros
Commands =
{Layer='info'; ReloadCommand={}}
ActiveText='Active Component 4' // clears command in Layer ‘info’
}
}
Anmerkungen:
Befehlssequenzen verschiedener Instanzen werden asynchron ausgeführt.
Dies bedeutet, dass wenn zwei Befehlssequenzen schnell hintereinander ausgelöst
werden, die zweite Sequenz die Erste bei der Ausführung überholen kann. Selbiges
gilt auch bei Befehlen innerhalb einer Sequenz, sofern sie sich auf verschiedene
Layer beziehen.
Alle Befehle beziehen sich auf die Layers und nicht auf die Befehle selbst. D.h., dass ein Pause-Befehl nicht die Auswertung der Befehlsfolge sondern das Scrolling der Layer pausiert.
Bei positionsabhängigen Befehlssequenzen wird nach einem Stop (Stop-Befehl) und einem folgenden Neustart (Start-Befehl) des automatischen Scrollings erneut geprüft, ob an der aktuellen Position ein Befehl ausgeführt werden muss. Dies ist bei einer Pausierung (Pause-Befehl) und einer Fortsetzung des automatischen Scrollings (Start-Befehl, Continue-Befehl oder Ablauf der Pause) nicht der Fall.
Angaben innerhalb einer Befehlssequenz
Name: | Layer |
Beschreibung: | Angabe der Layer, auf die sich die folgenden Befehle beziehen |
Werte: | Self, All oder Name der Layer (angegeben in der Projekt-Datei) |
Default: | Self |
Beispiel: | Commands={Layer='info'; Reload} |
Namen: | Top, Bottom |
Beschreibung: |
Legt fest, ob die Befehlssequenz beim Erreichen des unteren oder des
oberen Randes des Sichtbereiches ausgeführt wird. |
Werte: | - |
Default: | Bottom |
Beispiel: | Commands={Top; Pause} |
Befehle
Name: | Speed |
Beschreibung: |
Angabe der Geschwindigkeit des automatischen Scrollings. Der angegebene Wert gilt als Richtwert, wieviele Schritte in Pixel pro Sekunde zurückgelegt werden sollen |
Werte: | ganze Zahl ab 0 |
Default: | 40 |
Beispiel: | Commands={Speed='50'} |
Name: | Direction |
Beschreibung: |
Angabe in welche Richtung das automatische Scrolling erfolgen soll |
Werte: | Back, Forward |
Default: | Forward |
Beispiel: | Commands={Direction='Back'} |
Name: | Jump |
Beschreibung: |
Sprung zu einem definierten Label. Der Sichtbereich wird entsprechend der Label-Position neu ausgerichtet |
Werte: | Name des Labels, zu dem der Sprung erfolgen soll |
Default: | - |
Beispiel: | Commands={Jump='index'} |
Name: | Pause |
Beschreibung: |
Leitet die Pausierung des automatischen Scrollings für die angegebene Zeitspanne in ms ein. Wird kein Wert angegeben, ist die Pause unbegrenzt und kann nur über den Continue- oder Start-Befehl aufgehoben werden |
Werte: | Zeitspanne in ms oder kein Wert für unbegrenzte Pause |
Default: | - |
Beispiel: | Commands={Pause='2000'} |
Name: | Continue |
Beschreibung: |
Hebt eine zuvor eingeleitete Pause auf, wodurch das automatische Scrolling wieder aufgenommen wird |
Werte: | - |
Default: | - |
Beispiel: | Commands={Continue} |
Name: | Start |
Beschreibung: |
Startet das automatische Scrolling, sofern der Wert der angegebenen Priorität
grösser oder gleich der Prioriät ist, die durch einen Stop-Befehl gesetzt
wurde. Die Priorität des Stop-Befehles dient dem Setzen einer Bedingung,
anhand der ermittelt wird, ob folgende Start-Befehle ausgeführt werden.
Somit kann die Ausführung von Start-Befehlen unterdrückt werden, die zu
dem Zeitpunkt unerwünscht sind. Ist die Priorität eines Start-Befehls
ausreichend hoch, wird die durch den Stop-Befehl gesetzte und von der
Layer geforderte Priorität zurückgesetzt. Die Priorität lässt sich auch
mit dem LowerStopPriority-Befehl herabsetzen, ohne dass das automatische
Scrolling durch den Start-Befehl gestartet wird. |
Werte: | ganze Zahl ab 0 oder kein Parameter (entspricht Priorität 0) |
Default: | 0 |
Beispiel: | Commands={Start='1000'} |
Name: | Stop |
Beschreibung: |
Stoppt das automatische Scrolling. Die Priorität des Stop-Befehls dient
dem Setzen einer Bedingung, anhand der ermittelt wird, ob folgende Start-Befehle
ausgeführt werden. Somit kann die Ausführung von Start-Befehlen unterdrückt
werden, die zu dem Zeitpunkt unerwünscht sind. Ist die Priorität eines
Start-Befehles ausreichend hoch, wird die durch den Stop-Befehl gesetzte
und von der Layer geforderte Priorität zurückgesetzt. Die Priorität lässt
sich auch mit dem LowerStopPriority-Befehl herabsetzen, ohne dass das
automatische Scrolling durch den Start-Befehl gestartet wird. |
Werte: | ganze Zahl ab 0 oder kein Parameter (entspricht Priorität 0) |
Default: | 0 |
Beispiel: | Init={Stop='100000'} |
Name: | LowerStopPriority |
Beschreibung: |
Setzt die durch einen Stop-Befehl gesetzte Priorität (von Start-Befehlen zu erfüllende Bedingung) auf den angegebenen Wert herunter, ohne dass weitere Aktionen ausgeführt werden |
Werte: | ganze Zahl ab 0 |
Default: | - |
Beispiel: | Commands={LowerStopPriority='0'} |
Name: | Reload |
Beschreibung: |
Nachladen der aktuellen Layer-Datei |
Werte: | - |
Default: | - |
Beispiel: | Commands={Reload} |
Name: | Load |
Beschreibung: |
Ersetzt den Inhalt der Layer durch die angegebene Layer-Datei |
Werte: | Layer-Datei |
Default: | - |
Beispiel: | Commands={Layer='info'; Load='info2.jet'} |
Name: | LoadProject |
Beschreibung: |
Ersetzt das aktuelle Projekt durch die angegebene Projekt-Datei |
Werte: | Projekt-Datei |
Default: | - |
Beispiel: | Commands={LoadProject='products.prj'} |
Name: | Hide |
Beschreibung: |
Unterdrückt die Darstellung einer Layer indem sie unsichtbar geschaltet wird |
Werte: | - |
Default: | - |
Beispiel: | Commands={Layer='menu'; Hide} |
Name: | Show |
Beschreibung: |
Schaltet eine unsichtbare Layer wieder sichtbar |
Werte: | - |
Default: | - |
Beispiel: | Commands={Layer='menu'; Show} |
Name: | HideIncrement |
Beschreibung: |
Ähnlich wie bei dem Hide-Befehl, dient dieser Befehl dem Ausschalten
einer Layer. Hierbei wird aber bei jeder Ausführung des Befehles ein Zähler
hochgezählt. Die Layer ist immer dann unsichtbar, wenn die Anzahl der
HideIncrement-Ausführungen größer ist als die der ShowIncrement-Ausführungen. |
Werte: | - |
Default: | - |
Beispiel: | ReloadIndication={Layer='loading'; HideIncrement} |
Name: | ShowIncrement |
Beschreibung: |
Ähnlich wie bei dem Show-Befehl, dient dieser Befehl dem Einschalten
einer Layer. Hierbei wird aber bei jeder Ausführung des Befehls ein Zähler
hochgezählt. Die Layer ist immer dann sichtbar, wenn die Anzahl der ShowIncrement-Ausführungen
größer oder gleich ist als die der HideIncrement-Ausführungen. |
Werte: | - |
Default: | - |
Beispiel: | ReloadRequest={Layer='loading'; ShowIncrement} |
Name: | SwitchShowHide |
Beschreibung: |
Schaltet den Status einer Layer zwischen sichtbar und unsichtbar um, wobei der von ShowIncrement und HideIncrement verwendete Zähler angepasst wird |
Werte: | - |
Default: | - |
Beispiel: | Commands={Layer='loading'; SwitchShowHides} |
Name: | SetUserControl |
Beschreibung: |
Setzt die vom Anwender kontrollierte Layer, deren Darstellungsposition
über den Scrollbar und durch Ziehen des Sichtbereiches mit der Maus verändert
werden kann. |
Werte: | - |
Default: | - |
Beispiel: | Commands={Layer='info1'; Hide; Layer='info2'; SetUserControl; Show} |
Name: | Scrollbar |
Beschreibung: |
Legt die Darstellungsweise und den Zustand des Scrollbars fest |
Werte: |
Hide: ausblenden |
Default: | - |
Beispiel: | Commands={Scrollbar='Left'; Scrollbar='On'} |
Name: | DragMode |
Beschreibung: |
Legt fest, ob der Sichtbereich der vom Anwender kontrollierten Layer durch ziehen mit der Maus verändert werden kann |
Werte: | Yes, On, True bzw. No, Off, False |
Default: | Yes |
Beispiel: | Commands={DragMode='Off'} |
Name: | SetBGColor |
Beschreibung: |
Setzt die Hintergrundfarbe, auf der alle Layer dargestellt werden |
Werte: | hexadezimaler Farbwert in der Form: 0xrrggbb oder #rrggbb |
Default: | - |
Beispiel: | Commands={SetBGColor='0x0000FF'} |
Name: | Set |
Beschreibung: |
Umbelegung der aktuellen Befehlssequenz durch die angegebene Befehlssequenz. Die neue Befehlssequenz wird erst nach Abarbeitung der aktuellen Befehlssequenz aktiv |
Werte: | Befehlssequenz oder Name eines Freien Macros |
Default: | - |
Beispiel: |
Macros = { |
Namen: | Init, MouseEnter, MouseExit, MouseOnLink, MouseOffLink, MousePressed, MouseReleased, ReloadRequest, ReloadIndication, ShowLayer, HideLayer, LayerResized |
Beschreibung: |
Umbelegung der Befehlssequenz des angegebenen Ereignis-Macros. Der Befehl zur Umbelegung entspricht stets dem Namen des Ereignis-Macros |
Werte: | Befehlssequenz oder Name eines Freien Macros |
Default: | - |
Beispiel: | Commands={MouseOnLink={Pause}; MouseOffLink={Continue; Pause='1200'}; MousePressed='MPMacro'} |
Die Definition von Labels (Sprungmarken) kann in beliebiger Anzahl auf höchster Ebene (nicht innerhalb von Container- und Datenblöcken) erfolgen. Diese Labels dienen als Sprungadressen, zu denen mittels eines Jump-Befehls gesprungen werden kann, um den Darstellungsbereich entsprechend der Definitionsposition des Labels am oberen Rand des Darstellungsbereiches neu auszurichten.
Die Angabe eines Labels wird mit dem Schlüsselwort Label eingeleitet, dem ein durch Hochkommatas begrenzter und frei wählbarer Labelname zugewiesen wird.
Beispiel:
Label='home'
{
TB={
Text='Jump to Label: '
Commands={Jump='Label2'}
ActiveText='Label 2'
}
}
SB='FixCenter'
Commands={Pause='2000'}
Label='Label2'
{
TB={
Text='Jump to Label: '
Commands={Jump='Home'}
ActiveText='Home'
}
}
SB='Top'
Commands={Pause='2000'}
5 Unterstützung von JavaScript
Dieses Tool unterstützt die Kommunikation mit JavaScript in beide Richtungen, d.h. sowohl Aufrufe von JavaScript-Funktionen über Anwahl einer Aktiven Komponente, wie auch die Steuerung des Tools durch JavaScript über Angabe einer auszuführenden Befehlssequenz.
Diese Funktionalität ist jedoch vom verwendeten Browser abhängig, wird aber z.Z sowohl vom MS Internet Explorer wie auch vom Netscape Navigator unterstützt.
5.1 Zugriffe von JavaScript auf das Applet
Um auszuführende Befehlssequenzen mittels JavaScript anzugeben,
verfügt das Tool über die Methode evalCommand(layer, commands).
Diese Methode erhält als zweiten Parameter die vom Applet
auszuführende Befehlssequenz. Diese Befehlssequenz unterliegt den selben Regeln
wie die Befehlssequenzen, die innerhalb der Layer-Datei definiert werden und
besteht somit aus einem oder mehreren Befehlen sowie Layer-Zuweisungen, die
zwischen geschweiften Klammern aufgelistet werden.
Da innerhalb der Befehlssequenz die Zuweisung einer Layer
optional ist, wird im ersten Parameter eine Layer angegeben, die solange als
Bezugslayer gilt, wie in der Befehlssequenz keine explizite Angabe einer Bezugslayer
vorgenommen wird.
Beide Parameter sind dem Applet als String zu übergeben.
Syntax:
document.<applet name>.evalCommand(<reference Layer>, <command sequence>);
Beispiel:
document.jet_applet.evalCommand("info", "{Load='products.jet'}");
Wie aus den Beispielen zu ersehen ist, benötigt das zu referenzierende
Applet einen Namen, der mittels des NAME-Parameters bei der
Applet-Definition angegeben werden kann.
Es existieren weitere Möglichkeiten das Applet zu referenzieren – auch Möglichkeiten,
bei denen dem Applet kein Name zugeordnet werden muss. Diese können in entsprechender
HTML/JavaScript-Literatur nachgeschlagen werden.
Beispiel: HTML-Datei
<HTML>
<HEAD></HEAD>
<BODY>
<APPLET CODE="Ticker.class" WIDTH="360" HEIGHT="240" NAME="jet_name"
ARCHIVE="jet.jar" >
<PARAM NAME="Author" VALUE="JET - Java Extended Ticker
- (c) exsys GbR Emden - www.java.exsys.net">
<PARAM NAME=ProjectFile VALUE="demo.prj">
<PARAM NAME=LoadingMessage VALUE="Loading...">
<PARAM NAME=LoadingBGColor VALUE="0x000000">
<PARAM NAME=LoadingTextColor VALUE="0xFFFFFF">
</APPLET>
<FORM NAME="form1">
<INPUT TYPE="text1" SIZE="15" NAME="layer" value="info">
<INPUT TYPE="text2" SIZE="30" NAME="cmd" value="{Layer='All';
Stop}">
<BR><BR>
<INPUT TYPE="button" VALUE="Send Command"
onClick="document.jet_name.evalCommand(document.form1.layer.value,
document.form1.cmd.value)">
</FORM>
</BODY>
</HTML>
5.2 Zugriffe des Applets auf JavaScript-Funktionen
Die Ausführung von JavaScript-Funktionen durch Ereignisse des
Applets, erfolgt nach dem selben Prinzip wie die Ausführung von Befehlssequenzen
oder Hyperlinks.
Jeder Aktiven Komponente kann eine JavaScript-Funktion zugeordnet
werden, die bei Anwahl der Aktiven Komponente ausgeführt wird. Somit kann eine
Aktive Komponente bis zu drei Funktionen enthalten: Ausführung einer Befehlssequenz,
eines Hyperlinks und einer JavaScript-Funktion.
Die Angabe der JavaScript-Funktion erfolgt über den Parameter
JSCall, dem als Wert die JavaScript-Funktion inklusive Parameter zugewiesen
wird. Die Parameter der JavaScript-Funktion sind als String anzugeben.
Beispiel:
JSCall='displayText("hello")'
Wichtig ist, dass bei der Angabe des Applets in der HTML-Datei das Schlüsselwort MAYSCRIPT angegeben wird, andernfalls wird vom Browser die Ausführung von JavaScript-Funktionen durch das Applet nicht unterstützt.
Beispiel: HTML-Datei
<HTML>
<HEAD></HEAD>
<BODY>
<SCRIPT LANGUAGE="JavaScript">
<!--
function test(text) {
javascript:alert(text);
}
//-->
</SCRIPT>
<APPLET CODE="Ticker.class" WIDTH="360" HEIGHT="240" ARCHIVE="jet.jar"
MAYSCRIPT>
<PARAM NAME="Author" VALUE="JET - Java Extended Ticker
- (c) exsys GbR Emden - www.java.exsys.net">
<PARAM NAME=ProjectFile VALUE="demo.prj">
<PARAM NAME=LoadingMessage VALUE="Loading...">
<PARAM NAME=LoadingBGColor VALUE="0x000000">
<PARAM NAME=LoadingTextColor VALUE="0xFFFFFF">
</APPLET>
</BODY>
</HTML>
Beispiel: Layer-Datei
Init={SPEED='40'; Direction='Forward'; Start}
MouseOnLink={Pause}
MouseOffLink={Continue; Pause='1000'}
{ CENTER
TB={
Text='This '
JSCall='test("hello")'
ActiveText='Active Component'
Text=' calls a JavaScript function
that opens a window with a "hello" message.
'
Text='This '
JSCall='javascript:alert("hello")'
ActiveText='Active Component'
Text=' does the same without calling
the test() function'
}
}
SB='Center'
{
// more information
}
HTML Datei
<PARAM NAME="Author" VALUE="JET - Java Extended Ticker -
(c) exsys GbR Emden - www.java.exsys.net">
ProjectFile,
LoadingBGColor, LoadingTextColor, LoadingMessage
Projekt Datei
BGColor,
DragMode,
ScrollbarPosition, ScrollbarActive,
ScrollbarWidth, ScrollbarLeftMargin, ScrollbarRightMargin,
ScrollbarBGColor, ScrollbarMarginColor, ScrollbarButtonColor, ScrollbarSliderColor,
ScrollbarLineColor, ScrollbarArrowColor, ScrollbarActiveArrowColor,
Layer
Layer Datei: Grundeinstellungen
BaseWidth,
ReloadInterval, ReloadFile,
ScrollingMode
Ereignis Macros
Init,
ReloadRequest, ReloadIndication,
MouseEnter, MouseExit,
MouseOnLink, MouseOffLink,
MousePressed, MouseReleased,
ShowLayer, HideLayer,
LayerResized
Freie Macros
Font Liste
Image Liste
Container Block
Columns, Rows,
Center, Top, Bottom, Left, Right,
BGColor, BGImage,
BGMargin, BGTopMargin, BGBottomMargin, BGLeftMargin,
BGRightMargin,
Font, Color, OffMouseColor, OnMouseColor,
Target, URL, JSCall, Commands,
TB, IB, <weitere container>
Text Block
Text, ActiveText, File,
Font, Color, OffMouseColor, OnMouseColor,
UnderLine, Up, Down, LineHeight,
Target, URL, JSCall, Commands,
TextAlignment,
Center, Top, Bottom, Left, Right,
Width,
BGColor, BGImage,
Margin, TopMargin, BottomMargin, LeftMargin, RightMargin,
BGMargin, BGTopMargin, BGBottomMargin, BGLeftMargin,
BGRightMargin
Image Block
Image, ActiveImage,
Target, URL, JSCall, Commands,
ImageAlignment,
Center, Top, Bottom, Left, Right,
Width,
Margin, TopMargin, BottomMargin, LeftMargin, RightMargin
Space Block
<ganze Zahl>,
Center, Top, Bottom,
FixCenter, FixBottom,
ClearScreen, FullScreen