JSWManager.js

Erweiterte EventListener

Mit der Klasse JSWindowManaged werden die EventListener von JSWindow erweitert. Außerdem unterstützt die Klasse JSWManager das Setzen von EventListenern. Wird ein EventListener von JSWindow(Managed) auf den Manager gesetzt, dann lösen alle, zu diesem Manager gehörenden Fenster diesen Listener aus.
Zusätzliche Listener von JSWindowManaged:

alreadsExists Falls ein Fenster eine ID hat und nicht geöffnet werden kann, weil diese ID bereits existiert, wird dieser EventListener ausgelöst. Als zusätzlicher Parameter wird der Listener-Funktion das Fenster mit der bereits existierenden ID übergeben.
recoveryURLChanged Wird abgefeuert, wenn sich die recoveryURL ändert.
zChange Wenn sich die z-Position eines Fensters ändert.
activate Wenn ein Fenster aktiviert wird.
deactivate Wenn ein Fenster deaktiviert wird.

Die Klasse JSWManager

Die Scopeklasse JSWManager verwaltet die Z-Positionen der Layer, globale EventListener, die für alle Fenster gelten sollen, u. Ä.

Konstruktor von JSWManager:

Beim Erstellen wird JSWManager ein HTML-Element übergeben, das nicht mehr geändert werden kann und für alle, diesem Manager unterstellten Fenster standardgemäß als ParentElement gesetzt wird.

Eigenschaften von JSWManager:
mouseDownEV Speichert ein Event-Objekt, damit der Listener in free freigegeben werden kann.
parentElement Speichert das Parent-Element, das dem Konstruktor übergeben wird.
windowClicked Wird bei aufsteigenden MouseDown-Events von Fenstern auf true gesetzt. So kann der Manager leicht feststellen, ob ein Fenster angeklickt wurde, oder nicht. Wenn nicht, wird das aktive Fenster deaktiviert.
activeWindow Speichert das gerade aktive Fenster. null, wenn kein Fenster aktiv ist.
layers Speichert alle Layer. Die Layer werden dabei automatisch nach Z-Bereichen sortiert.
maxZ Speichert den Z-Index, den das gerade höchste Fenster hat.
taskbar Die Taskbar, die diesem Manager zugeordnet ist.
eventListeners EventListener, die auf diesen Manager gesetzt wurden.
freed Mit dem Aufruf von free wird diese Variable auf true gesetzt, dadurch wissen alle Methoden, dass der Manager freigegeben wurde.
startZIndex Legt ein Offset für alle Z-Positionen fest. Das hinterste Fenster hat den startZIndex. Sollte beim Initialisieren des Managers gesetzt werden, nicht während bereits Fenster offen sind.
effects Speichert die Effekte aller Fenster. Jedes Fenter kann ein eigenes Effects-Objekt besitzen, standardgemäß wird im Managed-Windows-State aber das Effects-Objekt des Managers verwendet. Details zu diesem Objekt unter Effektregistrierung.
minimalVisible Genau wie das Effects-Objekt, wird JSWManager.minimalVisible als Standardwert für JSWindow.minimalVisible verwendet.
Funktionen von JSWManager:
onEvent Vereinfacht das Setzen von EventListenern. Dabei werden ein paar Kompatibilitätsprobleme mit Browsern behoben und die callback-Funktion wird automatisch im Scope des Managers aufgerufen.
  • el Das Element, auf das das Event gesetzt werden soll.
  • event Name des Events (ohne "on").
  • fkt Die Callback-Funktion.
  • return Ein Objekt, alle wichtigen Informationen zum Event speichert.
    • f Die tatsächlich auf das Element gesetzte Callback-Funktion (dies ist nicht fkt aus onEvent)
    • event Gleich event aus onEvent
    • el Gleich el aus onEvent
mouseDown Wird im Konstruktor als Callback-Funktion für ein seitenweiten MouseDown-EventListener gesetzt. Dieser ist in mouseDownEV gespeichert.
  • ev Das Event.
addEventListener Setzt einen neuen EventListener auf den Manager. Mehr zum Thema im Abschnitt erweiterte EventListener.
  • type Typ des Events
  • fkt Callback-Funktion
removeEventListener Entfernt einen EventListener. Mehr zum Thema im Abschnitt erweiterte EventListener.
  • type Typ des Events
  • fkt Callback-Funktion
checkLayers Überprüft die Konsistenz der Z-Positionen von Fenstern und Layern. Layer werden zunächst nach deren minimaler Z-Position vorsortiert (Außer dontSort ist true). Dann wird der Reihe nach ein Layer nach dem anderen per JSWLayer.fromMinZ an den Vorherigen angehängt.
  • dontSort Aktuelle Sortierung beibehalten
bringLayerToFront Bringt einen Layer in der Z-Position so weit nach vorne, wie für diesen Layer möglich.
  • layer Der Layer
free Gibt den Manager frei. Dadurch werden (falls vorhanden) auch die Taskbar, sowie alle Fenster und Layer freigegeben. Mehr zum Thema im Abschnitt ECMA-Script: Objekte Freigeben.

Die Klasse JSWTaskbar

Die Scopeklasse JSWTaskbar erzeugt eine Leiste mit Menübutton, in der jeder Layer einen Button erzeugen kann. Das Menü muss auf der Seite als unsichtbares HTML-Element vorbereitet werden, die Buttons können außerdem noch blinken oder einen Vortschrittsbalken anzeigen.

Konstruktor von JSWTaskbar:

Erwartet beim erstellen eine Instanz von JSWManager, die mit einer Taskbar ausgestattet werden soll.

Eigenschaften von JSWTaskbar:
mgr Speichert den Manager, dem diese Taskbar zugeordnet wird.
el Speichert die unterschiedlichen HTML-Elemente, die zur Taskbar gehören. Für weitere Details lesen Sie unter HTML-Elemente: Taskbar.
_this Referenz auf JSWTaskbar.this.
z Speichert den aktuellen Z-Index der Taskbar. Die Taskbar soll immer vor allen Fenstern sein. Die z-Variable wird von setMinZ erhöht, falls die Taskbar nicht mehr vor allen Fenstern ist.
menu Speichert das der Taskbar zugeordnete Menü. Dieses wird in setMenu gesetzt.
freed Wenn true ist die Taskbar freigegeben (nicht mehr benutzbar). Wird in free gesetzt.
Der Menübutton, identisch zu JSWTaskbar.el['MenuButton']. Diese Zweitreferenz dient zum Zugriff durch public.
Das Menü ist genau dann geöffnet, wenn menuOpen true ist.
autoBlendOut Wenn true, wird die Taskbar automatisch ausgeblendet (unfertig).
Funktionen von JSWTaskbar:
create Kapselt den Konstruktor von JSWTaskbar. Dieser wird am Ende der Klasse aufgerufen. So ist sichergestellt, dass der komplette Code geladen wurde.
mouseDown EventListener-Funktion, wird im Konstruktor auf die Taskbar gesetzt und setzt bei jedem Aufruf die Eigenschaft JSWManager.windowClicked des eigenen Managers auf true, dadurch wird das aktive Fenster beim anklicken der Taskbar nicht deaktiviert.
openMenu Öffnet das Menü.
closeMenu Schließt das Menü.
EventListener-Funktion, wird in openMenu auf das Dokument gesetzt und in closeMenu gelöscht. Wenn nicht das Menü angeklickt wurde, ruft menuCloseClick closeMenu auf.
setMenu Setzt ein neues Menü-Element für die Taskbar.
  • el Das neue Menü.
setMinZ Wird von JSWManaged.setZ aufgerufen. Wenn der Z-Index eines Fensters größer ist, als der der Taskbar, so muss diese wieder nach vorne gesetzt werden.
  • minZ Z-Index des aufrufenden Fensters
appendButton Fügt einen weiteren Button in der Taskbar ein. Siehe auch: Aufbau der Taskbar.
  • but Der neue Button (Als HTML-Element)
removeButton Entfernt einen Button aus der Taskbar.
  • but HTML-Element des zu entfernenden Buttons.
free Gibt die Taskbar frei. Siehe auch: Objekte Freigeben.

Die Klasse JSWLayer

Die Prototypeklasse JSWLayer verwaltet einen Verbund aus Fenstern und erzeugt dafür einen Button in der Taskbar. Ein Verbund von Fenstern ist immer in der Z-Ebene zusammenhängend und wird beim anklicken des Buttons in der Taskbar in den Vordergrund geholt.

Buttoneffekte

Der TaskbarButton unterstützt einige Spezialeffekte: Zum einen ist es möglich, einen dezenten Ladebalken innerhalb des Buttons anzuzeigen, zum anderen kann der Button zum Blinken gebracht werden.
Beispiel:


  
Konstruktor von JSWLayer:

JSWLayer erwartet beim erstellen nur den Manager, an dessen Taskbar die Buttons angehängt werden sollen. JSWLayer ist derzeit nicht darauf ausgelegt, dass der Manager beim erstellen eines Layers noch keine Taskbar besitzt.

Eigenschaften von JSWLayer:
mgr Speichert den Manager, der dem Konstruktor übergeben wurde.
taskbar Speichert die Taskbar von mgr.
freed Wird beim Aufruf von free auf true gesetzt.
windows Speichert die Fenster, die zum Layer gehören. Diese können von der Funktion fromMinZ nach Z-Index sortiert werden.
  • Array-Elemente
minZ Speichert den Z-Index des hintersten Fensters des Layers
maxZ Speichert den Z-Index des vordersten Fensters des Layers.
el Speichert die HTML-Elemente, die zum Button gehören. null, wenn keine Taskbar existiert, ansonsten wie folgt aufgebaut:
  • TaskbarButton A-Element, äußerer Container des Buttons
  • CornerLeft SPAN-Element, linke Ecke des Buttons
  • CornerRight SPAN-Element, rechte Ecke des Buttons
  • Background SPAN-Element, Hintergrund des Buttons
  • Title Text des Buttons
  • Icon IMG-Element, Icon des Buttons, wird bei Bedarf in updateIconTitle erzeugt
  • Progress SPAN-Element, Vortschrittbalken des Buttons, wird bei Bedarf in setProgress erzeugt
  • Alert SPAN-Element, Alert-Blinker des Buttons, wird bei Bedarf in alertEffect erzeugt
topMost Wenn true, ist der Layer TopMost, also in der Z-Ebene immer vor allen nicht-TopMost-Layern.
mainWindow Speichert das MainWindow des Layers. Wird das MainWindow geschlossen, so werden alle Fenster des Layers geschlossen. Auch bezieht der Layer sein Taskbar-Icon und -Title vom MainWindow, falls diese nicht explizit gesetzt wurden.
icon Dies ist ein Property mit speziellem Getter und Setter. Nach außen wird immer ein String ausgegeben, der die URL des Taskbar-Icons speichert. "", wenn kein Icon angezeigt werden soll. Das String-Objekt, das intern gespeichert wird, kann auch null sein. An dieser Stelle sei gesagt, dass in ECMA-Script "" != null ist. Auf diese Weise ist es möglich einen "Ausnahmewert" zu speichern. Sie können also JSWLayer.icon = null setzen, dann wird der Getter den Wert von JSWLayer.mainWindow.icon ausgeben oder "", falls mainWindow null ist.
Im Default-Fall ist icon null, also JSWLayer verwendet das Icon des MainWindows, solange icon nicht explizit gesetzt wurde.
title Dies ist ein Property mit speziellem Getter und Setter, genau wie icon. title speichert den Titel des Layers, also den Text, der im TaskbarButton angezeigt werden soll. Solange title nicht explizit gesetzt wurde (der interne Wert null ist), wird der Titel des mainWindow verwendet.
visibility Mit dieser Eigenschaft soll eingestellt werden können, ob der TaskbarButton des Layers sichtbar ist, oder nicht. Jedoch ist diese Funktionalität derzeit nicht vollständig implementiert.
Funktionen von JSWLayer:
getButtonPos Gibt die Position des TaskbarButtons von der linken, oberen Ecke der Seite aus gesehen zurück.
  • return Position
    • [0] X-Koordinate
    • [1] Y-Koordinate
butClick Wird aufgerufen, wenn der TaskbbarButton angeklickt wird.
updateIconTitle Setzt das vom Getter von icon zurückgegebene Icon für den TaskbarButton. Erzeugt bei Bedarf das benötigte IMG-Element JSWLayer.el.Icon. Setzt außerdem den vom Getter von title zurückgegebenen Titel. Wird auch von JSWindowManaged.setTitle und JSWindowManaged.setIcon aufgerufen.
checkVisible Prüft, ob der TaskbarButton sichtbar sein soll. Wenn keines der, dem Layer zugeordneten, Fenster sichtbar ist, soll der TaskbarButton ebenfalls unsichtbar sein.
appendWindow Fügt ein zusätzliches Fenster in den Layer ein.
checkActive Prüft, ob eines der Fenster des Layers aktiv ist. Wenn ja, wird der TaskbarButton hervorgehoben.
removeWindow Entfernt ein Fenster aus dem Layer.
  • win Das Fenster, das entfernt werden soll.
fromMinZ Setzt die Z-Position des Layers. Dabei wird das hinterste Fenster auf die neue Position gesetzt, das Zweithinterste davor, usw. Das Array windows wird dafür nach z-Index der Fenster sortiert.
  • newMinZ Der neue Z-Index des hintersten Fensters.
  • dontSort Wenn true, wird die Sortierung der Fenster übersprungen. Wenn sich die Z-Reihenfolge der Fenster des Layers untereinander nicht geändert hat, kann dies sinnvoll sein.
bringWindowToFront Setzt ein Fenster des Layers innerhalb des Layers nach Vorne. Dabei kann ein nicht-TopMost-Fenster nicht vor ein TopMost-Fenster gesetzt werden.
  • win Das Fenster, das nach Vorne gesetzt werden soll.
resize EventListener, der die richtige Breite des Fortschrittsbalkens im Falle einer Änderung der Breite des TaskbarButtons sicherstellt.
setProgress Setzt die Position des Fortschrittsbalkens des TaskbarButtons.
alertEffect Animiert den Alert-Effect des TaskbarButtons.
alert Startet den Alert-Effect. Für Details siehe Buttoneffekte.
free Gibt den Layer frei. Gibt auch die im Layer enthaltenen Fenster frei. Siehe auch: Objekte Freigeben.

Die Klasse JSWindowManaged

Die Prototypeklasse JSWindowManaged erbt von JSWindow und erweitert dieses um die Eigenschaften des Managed-Window-State.

Konstruktor von JSWindowManaged:

Der Konstruktor erwartet folgende Parameter:

Eigenschaften von JSWindowManaged:
_super In diese Eigenschaft wird beim Laden des Scripts der Prototyp von JSWindow geklont.
mgr Speichert den Manager, der beim erstellen des Fenster übergeben wird.
layer Speichert den Layer, der beim erstellen des Fenster übergeben wird.
active True, wenn Fenster aktiv ist.
z Speichert den Z-Index des Fensters.
id Speichert die id des Fensters, wenn gesetzt, wird das Fenster als "ID-Window" bezeichnet und es kann kein zweites Fenster mit dieser ID geben.
recoveryURL Wird für den System-State benötigt. Speichert eine Zeichenkette, anhand derer das Fenster wiederhergestellt werden kann. Dies ist in der Regel der Pfad zu der Datei, in der das Fenster liegt.
topMost Wenn true, dann ist das Fenster innerhalb des Layers topMost, also immer vor allen nicht-topMost-Fenstern. Soll das Fenster global topMost sein, muss auch die Eigenschaft topMost des Layers auf true gesetzt werden.
Funktionen von JSWindowManaged:
setRecoveryURL Setzt eine neue recoveryURL und ruft den EventListener recoveryURLChanged auf.
  • url Die neue URL
show Überschreibt JSWindow.show.
titleToID Wandelt den Titel des Fensters in eine gültige ID um und ruft setID auf.
setID Setzt eine neue ID. Falls bereits ein Fenster mit dieser ID existiert, wird dieses aktiviert und das aktuelle Fenster geschlossen (free). Nach dem Aufruf von setID muss daher die Eigenschaft freed geprüft werden.
  • _id Die neue ID
removeID Setzt die ID auf '', danach ist das Fenster kein ID-Window mehr.
hide Überschreibt JSWindow.hide.
setZ Setzt einen neuen Z-Index. Diese Funktion ist auf die Zusammenarbeit mit dem Manager und dem Layer angewiesen und sollte nicht direkt zum setrzen eines Z-Index' verwendet werden. Um ein Fenster in den Vordergrund zu holen, kann bringToFront verwendet werden.
  • newZ der neue Z-Index
mouseDown Überschreibt JSWindow.mouseDown.
bringToFront Setzt das Fenster sowohl innerhalb des Layers, als auch dessen Layer global nach vorne.
setTitle Überschreibt JSWindow.setTitle.
setIcon Überschreibt JSWindow.setIcon.
exclude Überschreibt WindowJS.exclude.
activate Aktiviert ein Fenster.
  • loop Dient zur Verhinderung von Rückkopplung, muss beim normalen Aufruf nicht gesetzt werden, bzw. sollte false sein.
deactivate Deaktiviert ein Fenster.
  • loop Dient zur Verhinderung von Rückkopplung, muss beim normalen Aufruf nicht gesetzt werden, bzw. sollte false sein.
free Überschreibt WindowJS.free.