segunda-feira, 23 de novembro de 2009

Style backgroundColor não funciona com styleFunction no AdvancedDataGrid

Uma coisa que me chamou a atenção quando criei o componente DateChooserCustom é que em algumas classes / interfaces backgroundColor aparece como propriedade e não como estilo. As classes / interfaces onde isto acontece são: flash.text.TextField, mx.core.IUITextField, mx.preloaders.DownloadProgressBar e mx.preloaders.IPreloaderDisplay. Inclusive as duas primeiras possuem além disso uma propriedade background (Boolean) que indica se haverá preenchimendo do background.

Precisei nestes dias utilizar styleFunction no AdvancedDataGrid retornando um backgroundColor. Para quem não sabe
styleFunction é uma função que deve retornar um object com estilos como propriedade para ser utilizada na renderização das células. Para minha surpresa este estilo não estava sendo aplicado enquanto que outros sim. Investigando aqui e ali descobri uma entrada no Adobe Bug System relatando a mesma situação (necessita login para visualizar), onde postei um workaround.
Dica: Quem quiser votem, porque quanto mais votos maior a possibilidade do Flex Team darem uma olhada.

O que acontece é o seguinte, o
itemRenderer default é um AdvancedDataGridItemRenderer que extende UITextField que implementa IUITextField que como comentado acima tem backgroundColor como propriedade.
Os estilos são aplicados na função protected
applyUserStylesForItemRenderer, esta verifica se existe um styleFunction para o grid e para coluna e os aplica, nesta ordem, o que significa que o da coluna terá prevalência se o grid e a coluna aplicarem o mesmo style.

Devido o código desta função o workaround não ficou dos mais elegantes, mas o que fiz foi sobreescrever esta função e verificar se o style é
backgroundColor, se for coloco true na propriedade background e na propriedade backgroundColor aplico a cor recebida sendo que esta verificação deve ser aplicada no teste do styleFunction do grid e da coluna.

Uma alternativa mais elegante seria criar um item renderer customizado que herde de
AdvancedDataGridItemRenderer e criar neste um style substituto ao backgroundColor.

sexta-feira, 20 de novembro de 2009

Flex SDK 3.5

Ao entrar hoje no Adobe Bug System do Flex vi que tem correções para o Flex SDK 3.5 (exige login), mas olhando no site de download do Flex ainda está oferecendo o 3.4.
Acredito que logo estará disponível o SDK 3.5 para download.

Foram 23 correções
(exige login para ver mais detalhes):
  1. #1010 runtime error when repopulating datagrid dataprovider while a field is editable
  2. DataGird which contains TextInput as ItemRenderer sets focus incorrectly.
  3. DataGrid default sorting causes "Find criteria must contain at least one sort field value" RTE when some of the elements are empty
  4. DataGrid scrolls more than 1 page even if you click scroll-bar-area (=the area in the scrollbar's thumb movable)
  5. DragManager performance problem with SDK 3.2.0 and later.
  6. DragManager.showFeedback doesn't work in AIR
  7. DragManager.showFeedback doesn't work in AIR (Mac only)
  8. Embedded Fonts in DataGridHeader are cut off on right border
  9. Encoded plus sign (%2B) is decoded incorrectly in HTTPService with flashvars format
  10. Error #1063 when using a DataGrid as the dropdown in a ComboBox in Flex 3.4.0.9271
  11. Focus to DataGrid causes RTE when lockedColumnCount is equal to or larger than visible column count
  12. FocusManager RTE in defaultButton scenario. was: Navigating around LiveCycle Workspace results in an ActionScript null pointer error
  13. HTTPService responders are called twice
  14. Halo ComboBox not updating dataprovider correctly after ComboBox has been opened
  15. Horizontal text overflow in Tree when vertical scrollbar hidden, shown.
  16. Inifinite Loop on FocusManager when Tabbing
  17. No data while using "Object" as "resultFormat" for Sharepoint WebService
  18. StringIndexOutOfBoundsException when using a properties-File
  19. Using Window's statusBarFactory while having window children causes status bar to render incorrectly
  20. Using a TextInput as an itemRenderer in TileList or HorizontalList causes a RTE
  21. [new] You get a RTE when setting selectedItem to an invalid item [old] Using a Tree as an itemRenderer causes a RTE
  22. maxHorizontalScrollPosition exceeds max value of horizontalScrollPosition
  23. swf app in browser doesn't load due to exception in new line added to Preloader:rslCompleteHandler

terça-feira, 17 de novembro de 2009

Flash Player 10.1 e AIR 2

Para quem está aguardando foi liberado o Flash Player 10.1 prerelease e o AIR 2 beta.

Estas novas versões trazem muitas novidades que podem ser vistas nos sites informados acima.