segunda-feira, 31 de maio de 2010

Context root II

Tinha comentado em post anterior sobre um bug que está ocorrendo quando se cria um Flex Project utilizando o BlazeDS no Flex Builder 3.

Pensei que no Flash Builder 4 este problema estaria corrigido, mas infelizmente não. Na verdade agora está meio corrigido, na tela Project > Properties > Flex Server até parece o mesmo valor de context root que foi aplicado inicialmente (o campo aparece bloqueado), mas no arquivo .flexProperties o parâmetro serverContextRoot aparece o que foi colocado em Content folder.

Por enquanto a única forma que achei para contornar este problema foi alterar na mão o arquivo
.flexProperties.

quarta-feira, 26 de maio de 2010

BR Conference 2010 - ColdFusion and RIA Connection

Outro grande evento programado para este ano é o BR Conference que será realizado nos dias 19, 20 e 21 de agosto com apoio da Adobe na cidade do Rio de Janeiro.

Este evento será pago, e quanto mais cedo você fizer sua inscrição mais barato será o valor a ser pago.

Assim como a Flex Mania está terá palestrantes brasileiros e estrangeiros, mais informações no site do evento.

Flex Mania 2010

Mais um evento de qualidade, está chegando o Flex Mania 2010.

Evento com várias palestras on-line somente com feras da comunidade Flash / Flex / RIA e o melhor, totalmente free.

Esta é a segunda edição e será realizada nos dias 8, 9 e 10 de julho.

Venha participar você também. Para saber mais entre no site do evento aqui.

Livro: Flex 4 Cookbook

Foi publicado o livro Flex 4 Cookbook.

Neste link você ouve os autores falando do livro.

terça-feira, 25 de maio de 2010

AdvancedDataGrid - Styles backgroundColor and backgroundImage don't work (FLEXDMV-2442)

Um tempo atrás precisei utilizar os styles backgroundColor e backgroundImage num AdvancedDataGrid. Qualquer coisa que eu setava não funcionava, cheguei a conclusão que era um bug no Flex, mas como não era uma urgência deixei de lado.

Ontem tive que retomar esta idéia, tendo os mesmos resultados frustrantes, não conseguindo aplicar os estilos. Depois de muito analisar o código do AdvancedDataGrid vi que era um bug, mas como precisava resolver extendi AdvancedDataGrid chegando no efeito que precisava.

Criei uma entrada no Adobe Bug System relatando esta situação com o código (necessita login para visualizar).
Dica: Quem quiser votem, porque quanto mais votos maior a possibilidade do Flex Team darem uma olhada.

Para quem não tiver acesso ao Adobe Bug System deixei também disponível aqui, com botão direito opção View Source ativo.

Um detalhe, o código fiz no Flash Builder 4 e para rodar será necessário ativar o tema Halo, para isso vá em Project > Properties > Flex Theme, isto é necessário porque estes estilos não estão disponíveis no tema Spark.

segunda-feira, 24 de maio de 2010

Flex 3 e Flex 4 - Algumas diferenças

Com o lançamento do Flex 4, muitos estão se perguntando se deve ou não usar, inclusive eu. Vou colocar minha humilde opinião.

Para quem está começando a estudar ou a desenvolver em Flex a resposta é uma só, Flex 4.

Mas para quem já tem uma aplicação desenvolvida em Flex 3, neste caso, terá que ser analisado caso a caso, isto porque se tem duas situações a avaliar:
  • Código misto, isto é, código Flex 3 (Halo / MX) juntamente com código Flex 4 (Spark). Isto é informado em Project > Properties > Flex Build Path > Library path > Component set = MX + Spark (default). O tema default é o Spark, o que na minha opinião é mais agradável, mais clean.
  • Migração. Aqui o esforço é maior e deve ser bem analisado. O Flex Team fez um grande refactoring para separar os códigos de layout (skin) do core dos objetos.
Algumas situações que encontrei em relação a layout:
  • Os containers no Flex 3 estão no pacote mx.containers e herdam de Container, no Flex 4 são provenientes de três classes bases: spark.components.SkinnableContainer, spark.components.SkinnableDataContainer e spark.components.supportClasses.GroupBase e estas possuem a propriedade layout que espera uma classe do tipo LayoutBase que possue os styles de padding (paddingLeft, paddingTop, paddingRight e paddingBottom). O valor default dos styles de padding no MX variava de classe para classe no Spark é sempre 0, o Application no MX, por exemplo é 24.
  • O TitleWindow no Flex 3 tem a propriedade showCloseButton que por default é false, no Flex 4 não tem esta propriedade mas o botão de close aparece por default.
  • O Button no Flex 3 tinha seu tamanho definido principalmente pelo valor atribuído a propriedade label, no Flex 4 o tamanho mínimo é 21. Neste caso, dois botões com as labels OK e Cancel sem definição de width e height terão tamanhos diferentes no Flex 3, mas tamanhos iguais no Flex 4.
  • As propriedades verticalScrollPolicy e horizontalScrollPolicy que antes eram atribuídos diretamente ao Container agora são estilos do objeto Scroller que deve ser adicionado ao objeto ou ao skin da classe.
Bem isso foi algumas coisas que encontrei, acredito que tenha muito mais, por isso, a migração tem quer ser bem analisada, o melhor é fazer misto e depois com tempo e calma ir migrando as telas para Spark.

terça-feira, 18 de maio de 2010

Flash Builder 4 Standard - Download

Quem comprar licenças para o Standard não irá encontrá-lo para download, o site para download só informa o Premium e não faz nenhuma referência ao Standard.

Mas na verdade pode-se aplicar o serial comprado para o Standard no Premium que será válido, a IDE só irá restringir o acesso aos recursos próprios do Premium.

Talvez para alguns isso tenha ficado óbvio, mas para mim e outros isto não tinha ficado.

Veja também:
Flex version comparison chart

sexta-feira, 14 de maio de 2010

Sombreamento de Classe

Conforme meu post anterior fiquei com poucas alternativas para contornar o meu problema:
  • Mudar o HTTPService.resultFormat para e4x.
  • Setar HTTPService.xmlDecode.
  • Alterar a classe SimpleXMLDecoder no SDK e compilar.
  • Esperar o Flex Team alterar SimpleXMLDecoder.simpleType no SDK para poder sobreescrever este método e tratar os dados da forma mais adequada para minha aplicação.
As duas primeiras opções seriam trabalhosas porque teria que fazer o mesmo que a classe SimpleXMLDecoder faz, isto é, transformar o resultado em object e isto seria necessário para evitar um impacto maior na minha aplicação já que esta espera este tipo de retorno. A terceira é delicada porque todo novo SDK teria que aplicar minhas alterações, compilar e distribuir para a equipe. E a última opção é a mais demorada.

Aí me lembrei de um conceito não muito utilizado, o Sombreamento ou Shadowing que também se aplica para Java. O que faria neste caso, criaria na minha aplicação o pacote mx.rpc.xml e nele copiaria a classe SimpleXMLDecoder do SDK e na primeira linha do método simpleType(val:Object) colocaria return val; com isso não seria feito o cast deixando sempre como String o que para minha aplicação atende plenamente. O detalhe aqui é que todo HTTPService que eu usar irá utilizar esta classe do meu projeto e não a sua correspondente no SDK e toda vez que sair um novo SDK terei que aplicar as alterações o que com o uso do SVN fica fácil identificar o que foi alterado e também a equipe ao atualizar o projeto já veria esta classe e suas atualizações.

quinta-feira, 13 de maio de 2010

Instalação Flash Builder

Ao instalar o Flash Builder um dos passos é questionado se desejamos utilizar o Eclipse que vem embutido na instalação ou usar um Eclipse já instalado.

O Eclipse que vem embutido é um Eclipse enxuto sem JEE.

Mesmo que seja escolhido a opção de usar um Eclipse já existente, é instalado no diretório "eclipse-host-distro" abaixo do diretório de instalação, normalmente "C:\Program Files\Adobe\Adobe Flash Builder 4 Plug-in" o Eclipse embutido.

O interessante é que o instalador coloca no menu Programas só o link para o Eclipse embutido o do Eclipse já existente fica no diretório de instalação.

Se você for usar só para programar em Flex isto não irá fazer diferença, mas se for usar juntamente com Java aí será o problema. Isto porque, na primeira tela que aparece depois de escolher File > New > Flex Project não aparece a opção Create combined Java/Flex project using WTP quando é escolhido Application server type J2EE.

quarta-feira, 12 de maio de 2010

HTTPService.resultFormat="object"

O valor default para a propriedade resultFormat é object o que eu acho mais adequado, porque o Flex cria uma "árvore" de objetos com os dados retornados, que é mais fácil de manipular do que se viesse no formato xml.

Só que dependendo dos valores retornados pode aparecer certas distorções, isto porque, o Flex tenta nos dar uma "mãozinha" fazendo cast dos valores retornados, por exemplo, os dados que ele acredita ser números ele irá fazer cast para Number.

Reportei este bug aqui onde coloquei mais detalhes. Quem concordar, por favor vote, quantos mais votos mais fácil chamar a atenção do Flex Team para a correção.