terça-feira, 6 de outubro de 2009

Criando “Alerta de Mensagens” similar ao MSN

Salve pessoal,

Neste artigo irei demonstrar como criar um componente visualizador de mensagens bem parecido com o que msn utiliza.

É muito comum hoje em aplicações Flex/Air a necessidade de transpor informações entre a app e usuário. A grande parte dos usuário não ficam satisfeitos quando ao realizar alguma tarefa o sistema exiba na parte central da aplicação uma caixa com texto e uns botôes. Há alguns fatores importantes que devem ser levados em consideração.

1 - Usuário não tem o costume de ler toda a informação contidas em alertas.
2 - O usuário não quer ter seu fluxo de trabalho interrompido por um alerta, que na grande parte do tempo ele não quer ler.
3 - Fica dificil em primeira instancia visual o usuario distinguir se significa um erro ou apenas mensagens de rotina como “Salvo com sucesso”.

Continue Lendo

sexta-feira, 7 de agosto de 2009

Boas práticas para otimizar sua aplicação Flex

Salve pessoal,

hoje irei falar sobre boas práticas que deixarão sua aplicação com um bom desempenho. Já vi e ouvi muitos desenvolvedores falarem “Porque seguir padrões boas práticas?”. A resposta é realmente simples, durante toda a sua carreira profissional você irá se deparar com muitos projetos uns com tecnologias mais recentes, outros com tecnologias novas, outros nos quais trabalharam diferentes colaboradores de diferentes lugares (Países). Neste caso se não houver um padrão seu projeto tem grande probabilidade de erros com tendências de pico e vier até mesmo a fracassar.

Visando estes problemas foram criados padrões de desenvolvimento tanto para se obter códigos claros e limpos para qualquer desenvolvedor e também para se obter um melhor desempenho nos projetos.



Continuar Lendo

sexta-feira, 31 de julho de 2009

Customizando “Library Projects” para distribuição e visualização

Olá pessoal,

Hoje irei demonstrar uma funcionalidade bem interessante do Flex/Flash Builder. A qual é a capacidade de melhor organizar seus componentes customizados na Tree View Mode e Flex Properties.

É muito comum desenvolvedores criarem componentes para suas APP, porém os mesmos sempre reclamam que o Flex Builder não os organiza devidamente bem. Contudo estes são pensamentos de desenvolvedores que não conhecem o poder da ferramenta.

Outro ponto que irei abordar neste artigo é a forma de como se deve proceder para aqueles que querem criar componentes e distribuí-los comercialmente ou não.
Ex: Todo componente que é criado por padrão o mesmo não faz parte de nenhum pacote. Assim quando você utiliza o mesmo em projetos o namespace aparece exatamente o caminho package no qual o componente se encontra. Contudo se você observar as LIB distribuídas pela rede, você sempre vê algo assim: “xmlns:mx=”http://www.adobe.com/2006/mxml””. Isso acontece por que os desenvolvedores se preocuparam em empacotar de uma forma padrão e mais sugestiva.


Continue Lendo


quinta-feira, 18 de junho de 2009

Usando Shared Objects

Salve pessoal,

Neste artigo irei demonstrar uma funcionalidade muito utilizada em sites, a qual é o armazenamento de dados no cookie do browser, esta função é muito utilizada para salvar as preferências de usuários como: login, email, ultimo acesso entre outras informações.
No Flex isso também é possível podendo ser até mais poderoso do que as formas atuais, para fazer isso você deve utilizar o SharedObject.

A função do Shared Objects (ShO) é armazenar um montante de dados no computador do cliente, funcionando como um cookies do browser. Assim você pode armazenar dados e chamá-los durante a sessão atual ou em outra futura sessão. Contudo estes dados não podem ser acessados por outra aplicação Flex mais sim apenas pela aplicação criadora.

Continue Lendo


quarta-feira, 20 de maio de 2009

FloripaFlex: Proxima Reuniao

Salve Pessoal!

Segue abaixo o convite do Achille Carette, manager do AUG FloripaFlex:

Gostaria de convida-los para a próxima reunião do AUG FloripaFlex, no dia 20/05 na ACATE.
O assunto do dia é “Integrando Flex e PHP“, que será apresentada por um especialista do assunto, o Eduardo Kraus.

Horário:
Quarta 20/05, 19h - 20h

Endereço:
ACATE
Sala 1o Andar
(Associação Catarinense de Empresas de Tecnologia)
Rua Lauro Linhares, 589,
88036-001 - Trindade
Florianópolis - SC

Palestrante:
Eduardo Kraus

Eduardo Kraus trabalha desde 2005 com programação Web com HTML e PHP. Conheceu o Flex em 2007 e atualmente só desenvolve nesta linguagem com PHP. No momento esta pesquisando para desenvolver sites em Flex, de modo que o google consiga indexar e prestando serviço de desenvolvimento e consultoria

Pauta:
Integrando Flex e PHP

A palestra tem por objetivo apresentar o Flex aos programadores PHP e a facilidade em trabalhar com RemoteObject. Demonstar a integração do Flex com PHP e PHP+MySql utilizando AMFPHP e uma comparação com as três formas de integração. Uma breve abordagem do AMFPHP e suas configurações. E finalizando falar sobre segurança do Flex com PHP via AMFPHP

Inscrições:
Como sempre as inscrições são gratuitas mas as vagas limitadas. Por razões de organização, pedimos que façam sua inscrição pelo formulário
https://spreadsheets.google.com/viewform?hl=en&formkey=ckkzdU9ramk0ZVZwcDk2RThDTnVrUkE6MA

Mais informações:
AUG FloripaFlex
Página da reunião no AUG
Blog do Eduardo

Contamos com a sua presença,

Achille

Criando um Custom Panel - Minimizar - Maximizar - Fechar.

Criando um Custom Panel.

Salve pessoal.
Na maioria dos projetos em que participo ou participei, são comuns os clientes ou usuários finais quererem telas nas quais tenha os botões de maximizar, minimizar, fechar e até mesmo outros tipos de componentes no topo do Panel. Hoje irei demonstrar como criar este componente de uma maneira simples e eficaz. Então vamos ao primeiro passo.
Este componente será similar ao FlexMdi, no qual hoje este faz parte do pacote flexlib.
Passo 1:
Certo primeiramente iremos criar um projeto Flex com a seguinte estrutura de pastas.

Continue Lendo

terça-feira, 5 de maio de 2009

Internacionalizando (I18n) apilcações Flex

Salve pessoal,

Hoje irei demonstrar como deixar sua aplicação multi-idiomas de uma maneira simples e facil.

Em grandes projetos web uma das principais preocupações dos arquitetos é a internacionalização do projeto. Fazer com que os usuários possam acessar e utilizar a aplicação sem ter que se preocupar com com a língua é um dos principais pontos positivos para um projeto se destacar no mercado.Visando isso os arquitetos da Adobe aperfeiçoaram o recurso de internacionalização do Flex 3, este recurso é chamado de ResourceBundle.
Desta maneira ficou muito simples e flexivel aplicar I18n veja porque:

Continue Lendo

quinta-feira, 2 de abril de 2009

Trabalhando com FlexSession - Sessão

Salve pessoal,

Após ter recebidos alguns e-mails e ter visto a mesma dúvida nas listas de discuções resolvi criar um post sobre Gerenciamento de Sessão em aplicações Flex.

Apenas resaltando este é um assunto muito complexo este post não irá sanar todas as suas duvidas, mais irá lhe dar um Norte nos seus estudos. Em caso de duvidas leia a documentação do BlazeDS ou mande um e-mail.

Então vamos lá.

Continue Lendo


sexta-feira, 27 de março de 2009

Novo JUG

Salve pessoal,

Esta semana nasceu mais um JUG o jugma, foi uma galera la do Maranhão que criaram, esperamos que gerem bons frutos.

Criando Colunas Dinâmicamente em DataGrid

Olá pessoal,

Hoje irei postar mais um Flex Fast Code. Neste irei mostrar a aplicação do pattern Factory Method para criação de colunas
de DataGrid, agora não se limitem em apenas colunas. Nesta classe factory poderão conter outros modelos de criação.

Agora vamos ao codigo.

Continue Lendo

quarta-feira, 18 de março de 2009

Tutorial Integrando Adobe Flex com Java - Parte 1

Salve pessoal, esta semana criei um post destinado aos desenvolvedores
Flex Java. O post demonstra como realizar a integração destes dois
projetos utilizando o BlazeDS.

Espero que ajude a comunidade, duvidas ou sugestões é so postar.

http://www.fabielprestes.com.br
http://www.fabielprestes.com.br/?p=67

terça-feira, 17 de março de 2009

Novo Blog

Olá pessoal, hoje estou passando aqui apenas para informar que estarei mudando o meu blog de dominio.
Agora vocês podem acessar pelo endereço www.fabielprestes.com.br

E é isso ai, este novo blog esta bem mais recheado de dicas, informações e muito mais.

sexta-feira, 13 de março de 2009

#1 Questão Certificação SCJP

Salve pessoal,

A partir de hoje irei começar uma sequência de post destinados ao pessoal que deseja tirar a certicação SCJP da Sun.
Os post em si conterão questões, dicas e/ou explicações.

Dado o codigo Abaixo marque todas as alternativas corretas.

enum A { A }
class E2 {
enum B { B }
void C() {
enum D { D }
}
}

A. O código compila sem problemas.
B. Se apenas a linha 1 for removida, o código compila.
C. Se apenas a linha 3 for removida, o código compila.
D. Se apenas a linha 5 for removida, o código compila.
E. Se apenas a linha 1 e 3 forem removidas, o código compila.
F. Se apenas a linha 1, 3 e 5 forem removidas, o código compila.


Resposta Correta: D e F
A linha 5 é a unica que não irá compilar, porque os Enuns não pode ser
locais a um metodo.
A, B, C e F, estão incorretas com base na afirmação anterior.

terça-feira, 3 de março de 2009

Ajudem o Flex 4

Boa tarde pessoas,

Eu estava dando uma olhada no Blog do companheiro Igor Costa e vi um post interessante e importante para a comunidade Flex.

A Adobe preocupada com Flex 4 Gumbo, montou um formulário para que os desenvolvedores deem sugestões sobre as alterações e melhoramentos que o novo SDK podem vir a ter.

Segue o link do formulário: http://www.surveymonkey.com/Home_Landing.aspx

Comunidade não deixem de participar da pesquisa, isso é muito importante.

sexta-feira, 13 de fevereiro de 2009

Executando script Sql com o Ant

Daew pessoal blz,

Esses dias eu estava vendo as listas de Java e observei que muitos desenvolvedores tem dúvida
de como automatizar tarefas como create, drop e etc com o Ant.
Devido a isso resolvi criar um post direcionado a esta questão.
Neste Java Fast Code irei demonstrar a execução automática dos scripts SQL.

A classe abaixo PopularBase.java executa um comando de processo para executar a target do Ant.

Obs: Vale lembrar que existem outras maneiras de se executar uma target Ant com o Java.
Também não irei entrar em detalhes sobre os scripts Ant e Sql.


public class PopularBase{
public static void main(String[] args) throws Exception {
try {
Runtime.getRuntime().exec("rundll32 SHELL32.DLL,ShellExec_RunDLL "+"ant createTables_MySQL");
} catch (IOException e) {
e.printStackTrace();
}
}
}

Abaixo segue o arquivo build.xml

<.project name="teste" default="ajuda" basedir=".">


<.property name="sql.driver" value="com.mysql.jdbc.Driver"/>
<.property name="sql.url" value="jdbc:mysql://localhost:3306/dataBase"/>
<.property name="sql.user" value="root"/>
<.property name="sql.pass" value="root"/>

<.!--
Target : createTables_MySQL
Finalidade : criar as tabelas no banco MySql

Como faz : utiliza os .sql

-->
<.target name="createTables_MySQL" depends="dropDB_MySQL">
<.sql driver="${sql.driver}" url="${sql.url}" userid="${sql.user}" password="${sql.pass}" >
<.classpath>
<.pathelement location="WebContent/WEB-INF/lib/mysql-connector-java-5.0.7-bin.jar"/>
<./classpath>
<.transaction src="sql/create_table.sql"/>
<./sql>
<./target>

<.!--
Target : dropDB_MySQL
Finalidade : Deleta as tabelas do Mysql
-->
<.target name="dropDB_MySQL">
<.sql driver="${sql.driver}" url="${sql.url}" userid="${sql.user}" password="${sql.pass}" src="sql/deleteTable.sql">
<.classpath>
<.pathelement location="WebContent/WEB-INF/lib/mysql-connector-java-5.0.7-bin.jar"/>
<./classpath>
<./sql>
<./target>


Abaixo segue os script SQL.
createTables_MySQL

CREATE TABLE tbusuario
idUsuario bigint(20) NOT NULL AUTO_INCREMENT,
tpUsuario char(1) NOT NULL,
status char(1) NOT NULL,
login varchar(20) default NULL UNIQUE,
senha varchar(20) default NULL,

PRIMARY KEY (idUsuario)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

-- INSERINDO UM ADMINISTRADOR
INSERT INTO tbUsuario (tpUsuario, status, login, senha) values ('S','A','adm','adm');

dropDB_MySQL

delete from tbusuario;

drop table tbusuario;

E eh isso pessoal espero que este post ajude vocês.

terça-feira, 10 de fevereiro de 2009

Customizando Aparência ToolTips

Daew pessoal ai vai mais um Flex Fast Code.


<.mx.Application xmlns:mx="http://www.adobe.com/2006/mxml".>
    
    <.mx.Style.>
        ToolTip {
            fontFamily: "Arial";
            fontSize: 19;
            fontStyle: "italic";
            color: #FFFFFF;
            backgroundColor: #33CC99;
        }
    <.mx.Style.>

    <.mx.Panel. title="Using ToolTips" toolTip="ToolTip no painel" width="20%" height="20%"
     verticalAlign="middle" horizontalAlign="center".>    

        <.mx.Button. label="Botão Teste" toolTip="Click Aqui." />        
<.mx.TextInput. toolTip="Escreva algo Aqui!" />
    <.mx.Panel.>    

<.mx.Application.>

segunda-feira, 26 de janeiro de 2009

Ajudando os amigos Anddev.org

Olá pessoal, hoje venho deixar um link de um blog parceiro www.anddev.org

Seu fundador é o diretor chefe do desenvolvimento do SDK Android.
A google tem um sistema de rancking de Blogs, assim distribuindo varios benefícios para seus usuários.
Então pessoal visitem AndDev.org.


terça-feira, 20 de janeiro de 2009

Palestra Floripa Flex

Devido ao grande numeros de inscritos para a palestra do dia 21/01 em Florianopolis, os organizadores do evento resolveram repetir a palestra no dia 22/01.


Sendo assim aproveitem a oportunidade.

segunda-feira, 19 de janeiro de 2009

Links de Projetos Flex - Parte 2

Daew pessoal blz, então segue abaixo uma lista de links que direcionam para projetos feitos em flex. Na verdade estes projetos são na realidade pequenos frameworks free.
ou seja se em algum projeto tiver a funcionalidade que você deseja fazer você pode baixar a lib, ou simplesmente olhar o código fonte disponível no site e aproveitar o que achar melhor.
É sempre bom lembrar que nem sempre é preciso reinventar a roda :)


Visitem Vale a pena.

Criando ToogleButton com imagem

Salve pessoal blz ?

Então olhando pelos foruns de Flex da vida percebi um dificuldade do novos desenvolvedores em criar ToogleButton com Imagem.
Então aí vai mais um Flex Fast Code

< xmlns:mx="http://www.adobe.com/2006/mxml" 
width="100%" height="100%"  horizontalAlign="center" verticalAlign="middle">
< ![ CDATA[
[Embed(source="../../../img/Error.png")]
         private static var erro: Class;
        
         [Embed(source="../../../img/Cadastro.png")]
         private static var cadastro: Class;
        
         [Embed(source="../../../img/Listar.png")]
         private static var listar: Class; 
]]>

< mx:togglebuttonbar direction="vertical">
< mx:dataProvider >
< mx:Array>
< mx:Object label="Attribute" icon="{erro}"/>
< mx:Object label="Attribute 2" icon="{cadastro}"/>
< mx:Object label="Attribute 3" icon="{listar}"/>
< /mx:Array>
< /mx:dataProvider>
< /mx:togglebuttonbar>

terça-feira, 13 de janeiro de 2009

Flex: o que pode fazer para nós

Na ocasão da criação do grupo de usuários Adobe Flex em Florianópolis (FloripaFlex), a Sofshore está promovendo a palestra "Flex: o que pode fazer para nós". 


A palestra é direcionada tanto a desenvolvedores e quadros técnicos quanto a gerentes de TI.

Mario júnior, membro eminente da comunidade Flex no Brasil apresentará a plataforma e sua integração nas arquiteturas atuais. Josiane Milanez, Analista Java/Flex sênior apresentará as vantagens da plataforma para os diversos cargos, desenvolvedores e gerentes.

Horário: 21/01, 19:00 
Endereço : ACATE (Associação Catarinense de Empresas de Tecnologia) 1o andar Rua Lauro Linhares, 589 88036-001 – Trindade Florianópolis - SC

Inscrição : gratuita pelo email info@sofshore.com.br. 

Movimento Atualize seu Browser -Imasters

Atualize seu navegador
Campanha para eliminar browsers antigos do mercado

Desenvolvedores ainda perdem muito em produtividade devido a navegadores desatualizados, sem suporte às funcionalidades e tecnologias atuais para alcançar seus clientes, limitando soluções e criando dores de cabeça desnecessárias.

O Internet Explorer 6.0 (lançado em 2001) ainda participa de 35% do mercado de navegadores. É um browser que não acompanha o estágio atual da Internet, possui falhas de segurança e limita todo o potencial de uma Internet melhor para todos nós.

Página da campanha: http://imasters.uol.com.br/crossbrowser/

Faça a sua parte
Ajude a tornar a Internet ainda melhor. Divulgue em seu website a faixa da campanha, avise os amigos.

segunda-feira, 12 de janeiro de 2009

Internacionalizando Aplicações Java

Bom pessoal sempre vejo iniciantes no desenvolvimento WEB, ter dificuldade em aplicar I18N em suas aplicações, hoje irei demonstrar um pequeno exemplo de como é simples.

package com.teste;

import java.util.Locale;
import java.util.MissingResourceException;
import java.util.ResourceBundle;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
 * @author Prestes
 */
public class MessageHelper {

private final static Log logger = LogFactory.getLog(MessageHelper.class);

/* "messages" é o nome do arquivo .properties que irá armazenar as mensagens */
private final static ResourceBundle messages =  ResourceBundle.getBundle("messages",
Locale.getDefault());
// Foram criadas constantes para armazenar as chaves das mensagens
public static final String CODE_CAN_NOT_BE_NULL = "InvalidCodeException.CodeCanNotBeNull";
public static final String NAME_CAN_NOT_BE_NULL = "InvalidNameException.NameCanNotBeNull";
/**
* Retorna a mensagem baseada na chave passada como parametro, caso nao encontre retorna a propria  * chave
* @param id the message identifier
* @return the localized string corresponding to the message identifier
*/
public static String getString(String id) {
String message = id;
try {
message = messages.getString(id);
} catch (MissingResourceException e) {
logger.warn("Não foi encontrado a mensagem para a chave \"" + id  + "\"");
}
return message;
}
}
 

A única atenção que deve-se ter na classe acima é que o nome do arquivo .properties "messages" irá ser apenas o pre fixo.  O porque disso é o seguinte, em aplicações WEB deve-se adicionar o Locale como parametro na Classe ResourceBundle, assim caso o Locale Default seja o inglês o nome do arquivo será da seguinte maneira: messages_en_US.properties; em portugues seria: messages_pt_BR.properties.

No meu caso eu coloquei os aquivos messages_pt_BR.properties. e messages_en_US.properties na raiz do projeto.


/* A classe abaixo irá testar a internacionalização */
package com.teste;

public class HelloWord {
public static void main(String[] argumentos) {
ResourceBundle resourceBundle = ResourceBundle.getBundle("com.teste.messages");
System.out.println(resourceBundle.getString("InvalidNameException.CodeCanNotBeNull"));
}

}


É isso pessoal não tem muito mistério apenas um pouco de atenção e estudo.
Caso tenham duvidas ou dificuldades postem suas dúvidas ou entre no site da SUN

sexta-feira, 9 de janeiro de 2009

Primeira release do Apache MyFaces Extensions Validator

O time do Apache MyFaces anunciou a primeira release do MyFaces Extensions Validator.

O MyFaces Extensions Validator é um framework de validação plugável para validações que utilizam annotations. Ele disponibiliza um conjunto avançado de features para as versões 1.1.x e 1.2.x do JSF.

Fonte: TheServerSide.com

quinta-feira, 8 de janeiro de 2009

Criando um Map no Flex similar ao do Java

Olá pessoal, hoje irei mostrar como criar um objeto Map no Flex similar ao do Java.



import mx.controls.Alert;
private var mapCustom:Object;
public function teste():void{
mapCustom = new Object();
pupuleMap();
Alert.show(acheObjetoNoMap("Feira").toString());
}
/**
 * Preenche o objeto map com dados ficticios.
 */
private function pupuleMap():void{
mapCustom["Feira"] = "Xuxu, Melão";
mapCustom["Escola"] = "Professores, Alunos";
}
/**
 * Retorna um objeto do Map caso exista uma chave com o valor passado como                                  * parametro
 */
private function acheObjetoNoMap(value:Object):Object{
return mapCustom[value];
}
]]>

quarta-feira, 7 de janeiro de 2009

Links de projetos Flex - pt 01

Daew pessoal blz, então segue abaixo uma lista de links que direcionam para projetos feitos em flex. Na verdade estes projetos são na realidade pequenos frameworks free.
ou seja se em algum projeto tiver a funcionalidade que você deseja fazer você pode baixar a lib, ou simplesmente olhar o código fonte disponível no site e aproveitar o que achar melhor.
É sempre bom lembrar que nem sempre é preciso reinventar a roda :)

* http://code.google.com/p/beni-as3-library
* http://code.google.com/p/flexforum
* http://code.google.com/p/mediacorelib/
* http://code.google.com/p/xpath-as3/
* http://code.google.com/p/flexstuff/

Salários na área de TI

Olá amigos hoje recebi este link de uma colega de trabalho, no qual este mostra uma tabela de cargos e sálarios dos profissionais de TI.

No papel tudo é bonito e atrativo, mais na vida real sabemos que ainda está muito longe desta realidade.

Livros Free

Daew pessoal, hoje eu estava vasculhando a net e encontrei um site bem legal que contém Livros Free. Vale a pena para um tempo e dar uma olhada.

Validador de Object

Daew pessoas tudo di boas, hoje trago um outro Flex Fast Code.

Este cara é responsavel por verificar se um object é do tipo Array

package validadores{

import mx.validators.Validator;
import mx.validators.ValidationResult;

public class ValidArray extends Validator {
public static var _ERRO_NAO_EH_ARRAY:String = "erroNaoEhArray";
public var msgNaoEhArray:String;
public var msgArrayVazio:String;
public function ValidArray() {
super();
this.msgNaoEhArray = "Objeto validado não é array!";
this.msgArrayVazio = "A lista não pode ficar vazia!";
this.requiredFieldError = this.msgArrayVazio;
}
/**
* Verifica se o Objeto "value" é um Array
* @param Object value
* @return Array
*/ 
override protected function doValidation(value:Object):Array {
var erros:Array = super.doValidation(value);
try {
if ( !(value is Array) )
erros.push( new ValidationResult(true, null, _ERRO_NAO_EH_ARRAY, this.msgNaoEhArray) );
} finally {
return erros;
}
}
}
}

terça-feira, 6 de janeiro de 2009

Formatador de moeda - Padrão Brasileiro

Daew pessoal blz,
Hoje estarei trazendo um fast code para Flex.
O codigo abaixo ensina como formatar moedas para o padrão brasileiro.



package validadores{

import mx.validators.NumberValidator;

public class ValidFloatBrasileiro extends NumberValidator {

//este validador validara a faixa de min e max value
//pois existe um BUG em NumberValidator, que nao consegue validar um numero em formato brasileiro

private var validadorRangeNumero:NumberValidator;

//indica uma string que mesmo nao sendo numero nao gerara msg de erro de validacao
public var textoValido:String;

public function ValidFloatBrasileiro() {
super();
this.decimalSeparator = ",";
this.thousandsSeparator = ".";
this.requiredFieldError = "Este campo é obrigatório!";
this.decimalPointCountError = "O ponto decimal só pode ocorrer uma vez";
this.exceedsMaxError = "O número informado é maior que o máximo permitido.";
this.integerError = "O número deve ser inteiro.";
this.invalidCharError = "O campo possui caracteres inválidos (não numéricos).";
this.lowerThanMinError = "O número informado é menor que o mánimo permitido.";
this.negativeError = "O número deve ser maior do que 0.";
this.precisionError = "O número possui mais casas decimais do que o máximo permitido.";
this.separationError = "O separador de milhar deve ser seguido de trás dígitos.";

this.validadorRangeNumero = new NumberValidator();
this.validadorRangeNumero.requiredFieldError = "Este campo é obrigatório!";
this.validadorRangeNumero.decimalPointCountError = "O ponto decimal só pode ocorrer uma vez";
this.validadorRangeNumero.exceedsMaxError = "O número informado é maior que o máximo permitido.";
this.validadorRangeNumero.integerError = "O número deve ser inteiro.";
this.validadorRangeNumero.invalidCharError = "O campo possui caracteres inválidos (não numéricos).";
this.validadorRangeNumero.lowerThanMinError = "O número informado é menor que o mánimo permitido.";
this.validadorRangeNumero.negativeError = "O número deve ser maior do que 0.";
this.validadorRangeNumero.precisionError = "O número possui mais casas decimais do que o máximo permitido.";
this.validadorRangeNumero.separationError = "O separador de milhar deve ser seguido de trás dígitos.";
}

/**
* Valida um numero em formato brasileiro e
* retorna uma Array de ValidationResult.
*
* @param Object value
* @return Array
*/

override protected function doValidation(value:Object):Array {
if (textoValido != "" && value == this.textoValido)
return new Array();

//primeiro faz as validacoes de formato...
var resposta:Array = super.doValidation(value);

if (resposta != null && resposta.length > 0) {
//se nao deu problema na validacao acima
//deve transformar o numero no padrao americano, para poder testar o min e max value

this.validadorRangeNumero.minValue = this.minValue;
this.validadorRangeNumero.maxValue = this.maxValue;
this.validadorRangeNumero.allowNegative = this.allowNegative;
this.validadorRangeNumero.domain = this.domain;
this.validadorRangeNumero.precision = this.precision;

var numeroIngles:String;
if (value is String) {
numeroIngles = (value as String).replace(".", "?");
numeroIngles = numeroIngles.replace(",", ".");
numeroIngles = numeroIngles.replace("?", ",");
var results:Array = this.validadorRangeNumero.validate(numeroIngles).results;
if (FuncoesArray.naoEstaVazio(results))
resposta = resposta.concat( results );
}
}
return resposta;
}
}
}