Inbedden/definiëren van onvolledige plugins

Sommige plugins -- en in feite behoren de plotopties zoals in het voorbeeld hierboven daartoe -- zijn op zichzelf incompleet. Zij bevatten domweg niet de GUI-elementen nodig voor het selecteren van enkele belangrijke waarden. Zij zijn alleen bedoeld om ingebed te worden in andere plugins.

In hoeverre is de plugin voor plotopties incompleet? Wel, voor sommige plotinstellingen moet die de naam kennen van de objecten/expressies voor de x- en de y-as (eigenlijk is een daarvan voldoende). Maar er is geen mechanisme aanwezig voor het selecteren van die objecten, of die op enige andere manier in te voeren. Dus hoe moet de plugin die kennen?

In de logische sectie van de plugin voor plot_opties, zijn twee extra regels, die nog niet zijn besproken:

<logic>
                <external id="xvar" />
                <external id="yvar" />

                [...]
        </logic>
        

Hierin worden twee extra eigenschappen gedefinieerd in de plugin voor plot_opties, waarvan het enige doel is dat die worden verbonden (connected) aan enige (nu nog onbekende) eigenschap van de inbeddende plugin. In de plugin voor plot_opties worden die twee opties eenvoudigweg gebruikt zoals elke andere, en bijvoorbeeld zijn er aanroepen naar getString("xvar") in de JS sjabloon voor plot_opties.

Nu is er voor de incomplete plugin geen enkele manier waarop die weet waarin die zal worden ingebed, en welke relevante instellingen in de inbeddende plugin zullen worden gebruikt. Dus moeten we ook nog twee regels toevoegen aan de logische sectie van de inbeddende plugin:

<logic>
                [...]

                <connect client="plotoptions.xvar" governor="xvarslot.available" />
                <connect client="plotoptions.yvar" governor="yvarslot.available" />
        </logic>
        

Hier is niets nieuws, in principe, we hebben de <connect>-statements besproken in het hoofdstuk van de GUI-logica. U verbindt (connect) de waarden in twee varslots (genaamd "xvarslot" en "yvarslot" in dit voorbeeld) met de externe eigenschappen van de ingebedde plugin. En dat is het. Al het andere wordt verder automatisch geregeld.