OOUI/Windows/nl

This page is a translated version of the page OOUI/Windows and the translation is 100% complete.

Een Window is een container voor elementen in een onderliggend frame. Elk venster wordt beheerd door een WindowManager, die wordt gebruikt om het venster te openen en te sluiten en de presentatie ervan te beheren. De grootte van een venster wordt opgegeven met behulp van een symbolische naam ('small', 'medium', 'large' of 'full'), die wordt geïnterpreteerd door de WindowManager. Als de gevraagde grootte niet wordt herkend, kiest de windowmanager voor een verstandige fallback.

OOUI windows bevat Dialog, ProcessDialog en MessageDialog. Voor eenvoudige gebruikssituaties bestaan er verschillende functies. Zie Eenvoudige berichten.

Houd er rekening mee dat vensters reageren op de grootte van het weergaveapparaat en hun weergave dienovereenkomstig dynamisch aanpassen. De grootte van het dialoogvenster moet daarom eerder als een benadering dan als een exacte specificatie worden beschouwd.

Levensduur venster

Beheerde vensters sluiten elkaar uit. Er kan geen nieuw venster worden geopend als er een huidig venster geopend is. Windows zelf is persistent en kan, in plaats van te worden afgebroken wanneer het wordt gesloten, opnieuw worden gevuld met de relevante gegevens en opnieuw worden gebruikt.

De levenscyclus van een venster wordt weergegeven door een object WindowInstance. Dit object heeft vier eigenschappen, die een voor elke primaire fase van de cyclus vertegenwoordigen: 'opening', 'opened', 'closing' en 'closed'.

  • Het resultaat opening wordt gegeven nadat het venster is begonnen met openen (dit kan worden vertraagd als een ander venster nog wordt gesloten), waarbij de 'data'-waarde wordt doorgegeven die is gebruikt bij de aanroep van openWindow().
  • Het resultaat opened wordt gegeven nadat het venster is geopend, met de 'data'-waarde die was doorgegeven aan de openWindow() call.
  • Het resultaat closing wordt gegeven nadat het vesnter met het sluiten begint, met de 'data' waarde die bij de aanroep van closeWindow() is doorgegeven.
  • Het resultaat closed wordt gegeven nadat het venster is gesloten, met de 'data'-waarde die was doorgegeven aan de closeWindow() call.

Zie Procesdialogen voor voorbeelden die deze keten 'promises' in de praktijk laten zien.

Voor achterwaartse compatibiliteit worden WindowInstance objecten die worden geretourneerd met openWindow() en closeWindow() uitgebreid met Promise-achtige eigenschappen. Dit is iets tijdelijks.

Voordat het venster voor de eerste keer wordt geopend (en alleen bij de eerste keer), wordt de methode initialize() aangeroepen. De methode initialize() wordt gebruikt om het venster te vullen met persistente inhoud, waardoor er een soort caching-mechanisme ontstaat. Een venster met een lijst met 250 talen kan bijvoorbeeld tijdens de initialisatie met die lijst worden gevuld en als het venster opnieuw wordt geopend, hoeft de lijst niet opnieuw te worden geladen.

 

Stappen

Openen (Opening )

De openingsfase begint wanneer de openWindow() van de WindowManager of de methode open() van het venster wordt gebruikt om een venster te openen. WindowInstance's 'opening' is uitgevoerd. Voor achterwaartse compatibiliteit zendt de WindowManager een gebeurtenis 'opening' uit die wordt uitgevoerd met een 'opened' wanneer het venster is ingesteld, klaar en geopend.

De WindowManager roept vervolgens de methode getSetupDelay() aan, die het aantal milliseconden krijgt om te wachten voordat de methode getSetupProcess() van het venster wordt aangeroepen en het resultaat wordt uitgevoerd. De methode getSetupProcess() stelt een proces samen voor het instellen van het venster met gegevens die worden doorgegeven aan de openingsfunctie. Elke keer dat een venster opnieuw wordt gebruikt, kan het worden ingesteld met nieuwe gegevens. Wanneer het instellen is voltooid, wordt een voortgangsmelding van 'setup' verzonden.

De WindowManager roept vervolgens de methode getReadyDelay() aan, die het aantal milliseconden krijgt om te wachten tussen het voltooien van de installatie en het aanroepen van de methode getReadyProcess() van het venster en het uitvoeren van het resultaat. Er wordt vervolgens een voortgangsmelding van 'ready' verzonden vanuit de opening voor achterwaartse compatibiliteit.

Geopend (Opened)

Wanneer het venster is ingesteld en klaar is, is de 'opened'-belofte van WindowInstance ingelost en wordt de achterwaartse compatibiliteit 'opening'-belofte ingelost met een achterwaartse compatibiliteit 'opened'-belofte. Het venster is nu geopend.  Op dit punt kan de focus in het venster worden ingesteld.

Sluiten (Closing)

De sluitingsfase begint wanneer de closeWindow() van de WindowManager of de methode close() van het venster wordt gebruikt om een venster te sluiten. De 'closing'-belofte van WindowInstance is ingelost. Voor achterwaartse compatibiliteit zendt de WindowManager een 'closing'-gebeurtenis uit en wordt de achterwaartse compatibiliteit 'opened'-belofte ingelost met een 'closing'-belofte voor achterwaartse compatibiliteit.

De window-manager roept de methode getHoldDelay() aan, die het aantal milliseconden krijgt om te wachten voordat de methode getHoldProcess() van het venster wordt aangeroepen en het resultaat wordt uitgevoerd. Het is zelden nodig om deze methode te overschrijven, hoewel dit wel het geval is als een venster lang nodig heeft om te sluiten en u de vensterbesturingselementen in de tussentijd wilt uitschakelen. Wanneer het wachtproces is voltooid, wordt een voortgangsmelding van 'hold' verzonden van de afsluiting voor achterwaartse compatibiliteit.

De WindowManager roept vervolgens de methode getTeardownDelay() aan, die het aantal milliseconden krijgt om te wachten tussen het voltooien van het hold-proces en het aanroepen van de methode getTeardownProcess() van het venster en het uitvoeren van het resultaat. Een voortgangsmelding van 'teardown' wordt verzonden door de afsluiting voor achterwaartse compatibiliteit.

Gesloten (Closed)

Wanneer het teardown-proces is voltooid, is 'closed' van de WindowInstance ingelost, dit is voor de achterwaartse compatibiliteit. Alle gegevens die worden doorgegeven aan de methode close() worden doorgegeven als een resolutiewaarde aan de 'closed' van WindowInstance en de afsluiting voor achterwaartse compatibiliteit. Het venster is nu gesloten.

Opmerkingen

Houd er rekening mee dat elk proces (bijvoorbeeld setup, ready, hold, teardown) in serie wordt uitgevoerd, zodat de asynchrone verwerking kan worden voltooid. Ga er altijd van uit dat vensterprocessen asynchroon worden uitgevoerd. Zie Processen en fouten voor meer informatie over processen.

Als u een venster zonder gegevens sluit, wordt het veilig gesloten zonder wijzigingen aan te brengen, waardoor het proces in wezen wordt geannuleerd.

De WindowManager kan ook worden geconfigureerd om interactie buiten het venster te voorkomen (door de optie modal in te stellen op 'true'). Voor een volledige lijst met ondersteunde methoden en configuratieopties raadpleegt u de code-level documentatie.

Voorbeeld gebruik WindowInstance

instance = windowManager.openWindow( ... );
instance.opening.then( function () {
    // Code hier wordt uitgevoerd nadat het venster is begonnen met openen.
} );
instance.opened.then( function () {
    // Code wordt hier uitgevoerd nadat het venster is geopend.
} );
instance.closing.then( function () {
    // Code wordt hier uitgevoerd nadat het venster is begonnen met sluiten.
} );
instance.closed.then( function ( data ) {
    // Code wordt hier uitgevoerd nadat het venster is gesloten.
} );

Als u alleen het venster wilt openen en wilt wachten tot het is gesloten, gebruikt u:

windowManager.openWindow( ... ).closed.then( function ( data ) {
    // De code hier wordt uitgevoerd nadat het venster is gesloten.
} );