DClick

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:

Actionscript:
  1. package com.dclick.controls
  2. {
  3.     import mx.controls.TextInput;
  4.     import mx.utils.StringUtil;
  5.  
  6.     public class ExtendedTextInput extends TextInput
  7.     {
  8.         /** Esta propriedade indica que o resultado da propriedade
  9.                       <i>text</i> será retornado com trim */
  10.         private var _trimEnabled:Boolean=true;
  11.        
  12.         [Bindable]   
  13.         [Inspectable(defaultValue=true, enumeration="true,false")]   
  14.         public function get trimEnabled():Boolean
  15.         {
  16.             return _trimEnabled;
  17.         }
  18.        
  19.         public function set trimEnabled(value:Boolean):void
  20.         {
  21.             _trimEnabled = value;
  22.         }
  23.                
  24.         [Bindable("textChanged")]
  25.         [CollapseWhiteSpace]
  26.         [Inspectable(category="General", defaultValue="")]
  27.         [NonCommittingChangeEvent("change")]
  28.  
  29.         override public function get text():String
  30.         {
  31.             return trimEnabled ? StringUtil.trim(super.text) : super.text;
  32.         }
  33.         
  34.         override public function set text(value:String):void
  35.         {
  36.             super.text = value;
  37.         }  
  38.     }
  39. }

Depois do componente criado, um refactoring será necessário para substituir todos os campos de textos do projeto.

XML:
  1. <mx:StringValidator source="{tiNome}" property="text"
  2. required="true" minLength="5" trigger="{btValidar}"
  3. triggerEvent="click" requiredFieldError="Preenchimento obrigatório" />
  4.  
  5. <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?

Por Rubens Albuquerque em 8/April/2008 | Comentar | Trackback


No Translations

Adicionar comentário

(requerido)
(requerido, não será publicado)