AbstractAction.allinstances->select(act|act.Name='SomeAction')
AbstractAction is always one of its subclasses GlobalAction, ClassAction, ContextAction
AbstractAction subclasses are used to navigate and manipulate the system. There is also a ViewModel widget Button that may use actionLanguage - or may link to a an AbstractAction
Navigation means to bring up a ViewModel - see Documentation:ViewModel LLM Instructions
AbstractAction
AbstractAction has a Name: Mandatory
AbstractAction has a Presentation: when set to <Name> the Name is deCamelCased and used as presentation
AbstractAction can navigate by setting the BringUpViewModel to a Span (ViewModel) object
Navigation can be normal, Modal (set ViewModelIsModal=true), PopUp(Set ViewModalIsPopUp=true), Open in new tab (ViewOpenInNewTab=true)
If Navigation is Modal an expression for ViewModelExecuteExpressionAfterModalOk (Action language) must be set and perform the action the user wants on OK click, also the ViewModelModalOkEnableExpression (boolean ocl) must be set
If target ViewModel has RequiresRootObject=true a ViewModelRootObjectExpression (Action language) must be given that results in object of Class that match target Viewmodels
AbstractAction can use either BringUpViewModel+ViewModelRootObjectExpression or ExecuteExpression(Action language) but not both.
AbstractAction can set EnableExpression (Boolean ocl) to control enable of action - empty is handled as true
AbstractAction has CodeComment - use to explain to developer
AbstractAction can set SaveBeforeNavigate (bool)
AbstractAction can should set MenuGroup to one of MenuGroup.allinstances to make it easy for user to find action
GlobalAction
GlobalAction inherits AbstractAction and end up in the Main menu of the system - typically used to bring up seekers or valuestores
ContextAction
ContextAction inherits AbstractAction, it is owned by a ViewModel(Span) via ViewModelContext:Span must be set
ContextAction may be targeting a specific Nesting level in the ViewModel - this is controlled by setting OnlyInThis:Span/Nesting
ClassAction
ClassAction inherits AbstractAction, is is owned by a Class via ClassToPerformActionOn:Class must be set
Whenever an object of said Class is available in a level of a ViewModel the ClassAction is shown - unless opted out via OptOutAction:OptOutActionInSpan/OptOutActionInNesting
