Prevendo o Imprevisto
Os componentes do Flex possuem uma série de funcionalidades que facilitam o trabalho do desenvolvedor e a interação do usuário com o sistema, porém nem sempre essas funcionalidades suprem nossas necessidades que vão aparecendo com o passar do tempo.
Para exemplificar melhor, em determinado projeto foi requisitado um comportamento diferente à todos os campos de textos, onde seriam obrigatório digitar o mínimo de 5 caracteres ignorando excessos de espaços em branco no início e final do texto.
Para resolver esse caso, criamos o componente abaixo:
-
package com.dclick.controls
-
{
-
import mx.controls.TextInput;
-
import mx.utils.StringUtil;
-
-
public class ExtendedTextInput extends TextInput
-
{
-
/** Esta propriedade indica que o resultado da propriedade
-
<i>text</i> será retornado com trim */
-
private var _trimEnabled:Boolean=true;
-
-
[Bindable]
-
[Inspectable(defaultValue=true, enumeration="true,false")]
-
public function get trimEnabled():Boolean
-
{
-
return _trimEnabled;
-
}
-
-
public function set trimEnabled(value:Boolean):void
-
{
-
_trimEnabled = value;
-
}
-
-
[Bindable("textChanged")]
-
[CollapseWhiteSpace]
-
[Inspectable(category="General", defaultValue="")]
-
[NonCommittingChangeEvent("change")]
-
-
override public function get text():String
-
{
-
return trimEnabled ? StringUtil.trim(super.text) : super.text;
-
}
-
-
override public function set text(value:String):void
-
{
-
super.text = value;
-
}
-
}
-
}
Depois do componente criado, um refactoring será necessário para substituir todos os campos de textos do projeto.
-
<mx:StringValidator source="{tiNome}" property="text"
-
required="true" minLength="5" trigger="{btValidar}"
-
triggerEvent="click" requiredFieldError="Preenchimento obrigatório" />
-
-
<controls:ExtendedTextInput id="tiNome" />
Pronto! Resolvido o problema.
Mas a questão é a seguinte: não seria melhor ao iniciar um projeto estendermos os components nativos para facilitar a implementaçao de futuras funcionalidades? Ou seria um exagero prever o imprevisto?

