Dicas/ Flex/ Notícias

Projeto da Adobe para a comunidade mundial

Quem acompanha o meu blog em inglês, sabe o quanto eu defendo os interesses gerais de toda a comunidade brasileira aqui e por mais que o esforço seja em vão vistos por um, a coisa tá começando a mudar.

O projeto da Adobe USA chamado Ion project, que prevê reunir todas as informações de seus produtos em um único só lugar para facilitar a busca pelas informações ganhou mais uma atualização e com tanto carinho foi recebida por mim. Agora o Ion Project suporta nosso idioma, embora esteja apenas limitado à interface a tradução. A Adobe pensa que futuras versões pode ser incorporada arquevos de ajuda e interface de sistemas de seus produtos em nossa língua.

Qual a vantagem disso tudo?

Vamos ajudar a Adobe a facilitar isso e que ela possa ver o nosso país como um forte mercado emergente para suas operações na América latina. Como é o exemplo da UbiSoft que está abrindo seu escritório de desenvolvimento aqui no Brasil.

Não deixe de visitar o projeto e usá-lo. Você pode ajudar enviando seu feedback para o pessoal que está se esforçando para trazer a realidade.

Flex/ Notícias

Grupos de usuários Flex começam a surtir efeito

Depois do comentário que fiz semana passada. Parece-me que a coisa surtiu efeito e para melhor.

Hoje fiquei vendo pela Flex-Brasil que já tem grupo apenas de Flex em pernambuco, não é oficial mais tomara que eles registrem-se e continue com todo esse fervor e batendo na mesma tecla como tenho feito ao longo destes 4 anos.

Outro grupo que parece-me que está sendo iniciado é o grupo de Flex da cidade de Maringá no Paraná pelo Mário Junior. Coisa muito boa e positiva. Fazendo-se isso fortalece mais ainda o que eu venho debatendo e requesitando a Adobe US que veja o Brasil como uma ótima fonte de investimento, por que acredito neste país e por ter uma ótima fase na sua economia.

Dou o total apoio a todos vocês que lêem este blog e querem se reunir e montar um grupo. E espero que continuem, que não seja só um romance de verão.

AbsolutoBrasil/ Actionscript Frameworks/ AS 3.0/ Flex/ Flex 3/ Flex 3 Documentação/ Flex 3 Open-Source/ Flex Componentes/ frameworks/ Labs/ Open-source

Adicionando um TabManager ao TabNavigator de seu projeto

Em um dos projetos que estamos desenvolvendo chegadou-se a uma certa necessidade de usar um manager para algumas views. Controlar isso via interface é horrível, quanto maior genérico fique sua view melhor.
Gostaria de compartilhar com vocês esta classe que faz justamente isso, organizar e administrar melhor as abas do TabNavigator. Que inclusive estará fazendo parte dos managers do novo AbsolutoBrasil 1.5 que está vindo por ai. Porém como vai demorar um pouquenho para sair segue a classe bem documentada.

Caso de uso:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
< ?xml version="1.0" encoding="utf-8"?>
<mx :Application applicationComplete="init()" xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
 
 
	</mx><mx :Script>
		< ![CDATA[
			import mx.controls.Alert;
			import mx.containers.Canvas;
			import mx.events.ItemClickEvent;
 
			import br.absolutobrasil.managers.TabManager;
 
			private function init():void {
					TabManager.tabNavigator = minhaTabNav;
			}
			public function switchBotoes(event:ItemClickEvent):void {
					switch(btns.selectedIndex) {
						case 0:
								TabManager.createNewTab(Canvas,"Nova Aba","001");
								break;
						case 1:
								TabManager.removeSelectedTabByIndex(minhaTabNav.selectedIndex);
								break;
						case 2:
								Alert.show(TabManager.getUniqueTab("001").toString());
								break;
					}
			}
		]]>
	</mx>
	<mx :Array id="arr">
			<mx :Object label="Criar Aba"/>
			<mx :Object label="Deletar Aba" />
			<mx :Object label="Pegar Id da Aba"/>
	</mx>
	<mx :TabNavigator id="minhaTabNav" width="695" height="375" x="213" y="67">
		</mx><mx :Canvas label="" width="100%" height="100%">
		</mx>
 
 
	<mx :ButtonBar itemClick="switchBotoes(event)" id="btns" dataProvider="{arr}" x="213" y="20">
	</mx>

Classe para adicionar à sua biblioteca

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
package br.absolutobrasil.managers
{
    /**
    * 	http://www.mozilla.org/MPL/
        THIS SOURCE CODE IS PROVIDED "AS IS" AND "WITH ALL FAULTS", WITHOUT
        ANY TECHNICAL SUPPORT OR ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING,
        BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
        FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  ALSO, THERE IS NO WARRANTY OF
        NON-INFRINGEMENT, TITLE OR QUIET ENJOYMENT.  IN NO EVENT SHALL MACROMEDIA
        OR ITS SUPPLIERS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
        EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
        PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
        OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
        WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
        OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOURCE CODE, EVEN IF
        ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
        *
        * Parte original http://coenraets.org/blog/
        * Modificações - http://www.igorcosta.com
 
	*/
	import mx.containers.TabNavigator;
	import mx.core.Container;
	import mx.events.ChildExistenceChangedEvent;
 
	public class TabManager
	{
		/**
		 * @Constructor
		 *
		 */
		public function TabManager()
		{
		}
 
		private static var _tab:TabNavigator;
 
		private static var uniqueTabs:Object = new Object();
 
		/**
		 * Seta o manager ao valor de um TabNavigator existente na aplicacao para iniciar as operacoes
		 * @param tabNavigator
		 *
		 * @example of uses:
		 * <listing version="3.0">
		 *              import br.absolutobrasil.managers.*;
		 * 				var minhaAba:TabNavigator = new TabNavigator();
		 *              private function init():void {
		 *                  TabManager.tabNavigator = minhaAba;
		 *              }
		 * </listing>
		 *
		 */
		public static function set tabNavigator(tabNavigator:TabNavigator):void
		{
			_tab = tabNavigator;
			_tab.addEventListener(ChildExistenceChangedEvent.CHILD_REMOVE,
				function (event:ChildExistenceChangedEvent):void
				{
					for (var uniqueId:String in uniqueTabs)
					{
						if (uniqueTabs[uniqueId] == event.relatedObject)
						{
							uniqueTabs[uniqueId] = null;
							return;
						}
					}
				});
		}
		/**
		 *  Cria uma nova Aba
		 *
		 * @param tabClass - o alvo ou componente que será criado
		 * @param label - Label que aparecerá na aba;
		 * @param uniqueId - Caso você queira definir um id único para a aba
		 * @return uma nova aba criada ao container posicionado como target
		 *
		 */
		public static function createNewTab(tabClass:Class,label:String='', uniqueId:String=null):Container
		{
			if (uniqueId && uniqueTabs[uniqueId])
			{
				_tab.selectedChild = uniqueTabs[uniqueId];
				return uniqueTabs[uniqueId];
			}
 
			var tab:Container = new tabClass();
 
			if (uniqueId)
			{
				uniqueTabs[uniqueId] = tab;
			}
 
			_tab.addChild(tab);
			_tab.label = label;
			_tab.selectedChild = tab;
			return tab;
		}
		/**
		 *Seta um id Unico para a aba desejada, passando obrigatoriamente o id que você deseja setar e o alvo que receberá.
		 * @param uniqueId
		 * @param tab
		 *
		 */
		public static function setUniqueTab(uniqueId:String, tab:Container):void
		{
			uniqueTabs[uniqueId] = tab;
		}
		/**
		 * Remove a aba desejada.
		 * @param tab
		 *
		 */
		public static function removeTab(tab:Container):void
		{
			_tab.removeChild(tab);
		}
		/**
		 *Remove a aba passando a posicao dela necessária, caso não queria controlar isso por id.
		 * @param index
		 *
		 */
		public static function removeSelectedTabByIndex(index:int):void {
			_tab.removeChildAt(index);
		}
		/**
		 * Remove todas as abas existentes no TabNavigator
		 * @param tabNavigatorTarget
		 *
		 */
		public static function removeAllTabs(tabNavigatorTarget:TabNavigator):void {
				_tab = tabNavigatorTarget;
				_tab.removeAllChildren();
		}
		/**
		 *Pega o Id único da aba desejada, não precisa selecionar.
		 * @param uniqueId
		 * @return
		 *
		 */
		public static function getUniqueTab(uniqueId:String):Container
		{
			return uniqueTabs[uniqueId];
		}
	}
}
Dicas/ Flex

Chamada para abertura de grupos de usuários Flex

“É preciso emprestar-se aos outros e dar-se a si mesmo.” -Montaigne

É com esse pensamento acima que convido. Onde estão todos os entusiastas da tecnologia Flex no Brasil. Como um país de imensidão continental não tem mais grupos de usuários. Onde vocês estão? Crie hoje seu grupo de usuário local, junte-se participe ativamente do seu grupo criado, os benefícios são o seu sucesso como ser humano, o fortalecimento do mercado que você escolheu viver e a certeza que você será feliz ao final do dia e de cada reunião feita.

Até agora os grupos de usuários Flex existentes no Brasil são:

SPFlex – Tem mais não vi uma ação ainda.
AUGRJ – No Rio de Janeiro embora não seja só Flex, tem falado muito sobre RIA
AUGRS – No Sul, fala muito de Flex, porém não é só Flex.
flexdev – No paraná é novo e só fala de Flex ( parabéns)

INICIE AQUI SEU NOVO GRUPO DE USUÁRIOS OFICIAIS DO FLEX– clique no link ao lado.

Desenvolva, envolva a comunidade local, crie mercado só com o mercado que há fregueses lembre-se disso e não esqueça a frase acima.

Flex 3/ Notícias

Evento Flex Builder 3 e novidades

Participe do evento promovido pela WOC/Adobe para a cidade de São Paulo/SP. Será realizado no próximo dia 19 de junho às 14:00. Trará várias novidades que ainda não foram divulgadas por blogs. Inscricões limitadas.
O palestrante é um segredo. Vocês vão adorar o evento, estarei lá presente. Não deixe de ir.

Inscreva-se aqui. Neste link você encontra mais informações de como chegar ao evento e na sede da Adobe aqui em São Paulo.

AIR 1.0/ AIR 1.1

Adobe AIR 1.1 Brasileiríssimo

É ótimo ver que depois de tanta reclamação e tanto pedido à Adobe US, fez valer. Incluiu o Brasil como principal mercado para o novo Adobe AIR 1.1, chega de inglês na instalação, chega de inglês nas interfaces. Viva nosso tão amado e bom português em nossos amados programas.

Obrigado! Folks at Adobe AIR Team.

Baixe AQUI!

Não deixe também de participar da AIR-Brasil.

Notícias/ Web 2.0

Ajaxianos lançado


O blog Ajaxiano era uma coisa que havia pensado alguns anos atrás com meu grande amigo Wender Lima(UOL) , porém como havia me debandado para o lado do Flex deixei de lado a idéia de usar Ajax e partir rumo ao Flex.

Em fim anos se passaram e Wender decidiu ressuscitar a idéia do Ajaxianos. E tá vindo com tudo. Para todos aquiles fãs do mundo Ajax, JQuery o lugar certo de pegar novas idéias ou até mesmo postar suas idéias é o Ajaxianos, sendo acredito uma nova fonte de conhecimento para todos da área.

Visite e adicione seus feeds e ao seu bookmark.

Visite: http://www.ajaxianos.com.br/