LUADOC - Farming Simulator 22

Script v1_7_1_0

Engine v1_7_1_0

Foundation Reference

IndexChangeSubjectMixin

Description
Add this mixin to a GuiElement to implement an observer pattern for index changes (e.g. paging, options, lists).
Functions

addIndexChangeObserver

Description
Add an index change observer with a callback.
Definition
addIndexChangeObserver(guiElement Decorated, observer Observer, indexChangeCallback Function(observer,)
Arguments
guiElementDecoratedGuiElement instance which has received this method
observerObserverobject instance
indexChangeCallbackFunction(observer,index, count), where index is the new index and count the current number of indexable items
Code
48function IndexChangeSubjectMixin.addIndexChangeObserver(guiElement, observer, indexChangeCallback)
49 guiElement[IndexChangeSubjectMixin].callbacks[observer] = indexChangeCallback
50end

addTo

Description
See GuiMixin:addTo()
Definition
addTo()
Code
32function IndexChangeSubjectMixin:addTo(guiElement)
33 if IndexChangeSubjectMixin:superClass().addTo(self, guiElement) then
34 guiElement.addIndexChangeObserver = IndexChangeSubjectMixin.addIndexChangeObserver
35 guiElement.notifyIndexChange = IndexChangeSubjectMixin.notifyIndexChange
36
37 return true
38 else
39 return false
40 end
41end

clone

Description
Clone this mixin's state from a source to a destination GuiElement instance.
Definition
clone()
Code
67function IndexChangeSubjectMixin:clone(srcGuiElement, dstGuiElement)
68 dstGuiElement[IndexChangeSubjectMixin].callbacks = {unpack(srcGuiElement[IndexChangeSubjectMixin])}
69end

new

Description
Definition
new()
Code
23function IndexChangeSubjectMixin.new()
24 local self = GuiMixin.new(IndexableElementMixin_mt, IndexChangeSubjectMixin)
25 self.callbacks = {} -- {observer=callback}
26
27 return self
28end

notifyIndexChange

Description
Notify observers of an index change.
Definition
notifyIndexChange(guiElement Decorated, index New, count Indexable)
Arguments
guiElementDecoratedGuiElement instance which has received this method
indexNewindex
countIndexableitem count
Code
57function IndexChangeSubjectMixin.notifyIndexChange(guiElement, index, count)
58 local callbacks = guiElement[IndexChangeSubjectMixin].callbacks
59
60 for observer, callback in pairs(callbacks) do
61 callback(observer, index, count)
62 end
63end