W tym miejscu zostanie opisany przykład utworzenia we wtyczce warunkowej akcji formularza, która będzie ukrywać/pokazywać zmienne w zależności od wartości innej zmiennej.
Opis tworzenia wtyczki systemowej znajduje się tutaj: http://192.168.1.52:8081/confluence/display/PWFL31/1.+Stworzenie+projektu+wtyczki, więc przyjmujemy, że wtyczkę mamy już stworzoną.
Utworzenie definicji akcji na serwerze
@Action @ActionScript( "resources/actions/test/hiding-variables-action.js" ) public class HidingVariablesAction { @DefineAction public void action( ActionDefinitionBuilder action ) { action .id( "hiding-variables-action" ) .name( "hiding.variables.name" ) .description( "hiding.variables.desc" ) .icon( SilkIconPack.APPLICATION_FORM ) .category( Categories.TEST ) .destination( ActionDestination.form() ) .parameter().id( "variables" ).description( "variables.to.show.hide" ).name( "variables.to.show.hide" ).type( Type.VARIABLE ).array().create(); } }
Powyżej zdefiniowaliśmy akcję hiding-variables-action z jednym parametrem tablicowym, którego elementy są typu VARIABLE, czyli obiekty zmiennych formularza. Implementacja akcji po stronie przeglądarki znajduje się w skrypcie "resources/actions/test/hiding-variables-action.js".
Utworzenie implementacji akcji po stronie przeglądarki
var variableService = ServiceFactory.getVariableService(); FormActions.create('hiding-variables-action', { //@override init: function() { this.variables = this.value("variables"); }, //@override enable: function(){ this.hideVariables(); }, //@override disable: function(){ this.showVariables(); }, hideVariables: function() { this.setVariablesVisibility(false); }, showVariables: function() { this.setVariablesVisibility(true); }, setVariablesVisibility: function(visible) { SuncodeFormService.suspendLayouts(); try { Ext4.Array.each(this.variables, function(variable){ if(visible) { variableService.show(variable.id); } else { variableService.hide(variable.id); } }, this); } finally { SuncodeFormService.resumeLayouts(); } } });