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
FormActions.create('hiding-variables-action', {
var variableService,
variables;
//@override
init: function() {
variableService = ServiceFactory.getVariableService();
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(variables, function(variable){
if(visible) {
variableService.show(variable.id);
}
else {
variableService.hide(variable.id);
}
}, this);
}
finally {
SuncodeFormService.resumeLayouts();
}
}
});
