AIR 1.0/ Apollo

Minha primeira experiência com o Adobe AIR

Semana passada eu tive minha primeira experiência com o Adobe AIR, eu decidir só postar hoje por que foi onde arranjei tempo suficiente para escrever com mais calma antes que perca o vôo.

Para os que me conhecem de perto eu não gosto e nem dou muita importância ao AIR, enquanto ele não tiver o que preciso que é parcialmente:

– Comunicação com DLL
– Acesso a ODBC
– Acesso à registro da Máquena(win)

Quando ele tiver isso eu volto à postar coisas legais que nele podem ser feitas, mais por produção eu continuo usando o ZINC, que ai sim, sendo franco funciona que é uma beleza para o que “Professional” usam no dia-a-dia.

Mais em fim, não tou aqui para falar mal do AIR mais sim falar da minha primeira experiência com a tecnologia.

Primeiro passo eu instalei o Run-time e depois criei meu primeiro projeto usando o Flex Builder 3 beta 2 para o que precisava. Então vi que por padrão o AIR tem um componente baseado no webkit que renderiza páginas em HTML com suporte ao tag(embed), o que para eu é ótimo. Em fim, comecei a testar e percebi das seguintes limitações.

O componente HTML não aceita ser adicionado em viewStack, então para criar ou você coloca em um Container(Panel, Canvas,HBox,VBox,…,etc), ou você está em apuros por que não vai funcionar.

Sobre o Run-time, ele tem um esquema legal, cria e atualiza sozinho a parte de instalador com acesso ao root Package do Windows para instalar o programa, porém quando tentei executar o tal do locale em jp_JP ele não aceita, fica meio que uma mistura da torre de Babel, inglês e Japonês unidos.

Resumidamente foi isso que aconteceu com a minha primeira experiência com o AIR, já fiz alguns testes hoje por 30 minutos no Drag,Drop de arquevos e pode ser feita alguma coisa legal com esse tipo de recurso.

O resultado de 4 horas de uso do AIR deu-se nisso, no código fonte abaixo, que é um Navegador com Abas, igualzinho no Firefox. Eu tentei usar um leitor de RSS, mais o tempo foi meu rival.
O nome do experimento é Adobe AIR Navigator, o código está logo abaixo:

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
< ?xml version="1.0" encoding="utf-8"?>
<mx :WindowedApplication creationComplete="init()" xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="1092" height="540" xmlns:code="http://code.google.com/p/flexlib/">
 
 
	</mx><mx :Script>
		< ![CDATA[
			import mx.core.IFlexDisplayObject;
			import mx.events.CloseEvent;
			import mx.managers.PopUpManager;
			import views.RSSViewer;
			import mx.collections.ArrayCollection;
 
			public var protocol:String = "http://";
			public var protocolRSS:String = "feed://";
			public var queryGoogle:String = "http://www.google.com/search?hl=en&q=";
			[Bindable]
			public var collectionLocations:ArrayCollection;
			public var objLocation:Object;
 
			// adding new view, added as bindable to enable change from input checkfields.
			[Bindable]public var rssView:RSSViewer = new RSSViewer();
 
 
			private function init():void
			{
				collectionLocations = new ArrayCollection();
				// add listeners to the button
				rssButton.addEventListener(MouseEvent.CLICK,createAndViewRSS);
 
			}
			public function createAndNavigate():void
			{
					objLocation = new Object();
					objLocation.url = protocol + adress.text;
					objLocation.query = queryGoogle + querySearch.text;
					collectionLocations.addItem(objLocation);
 
			}
			public function navigate():void
			{
				navigatorContainer.location = objLocation.url;
			}
			public function navigateIntoItem():void
			{
				navigatorContainer.location = collectionLocations.getItemAt(tabs.selectedIndex).url.toString();
			}
			private function searchQuery():void
			{
				navigatorContainer.location = queryGoogle +querySearch.text;
 
			}
 
			// creating the rss view
 
			public function createAndViewRSS(event:Event):void
			{
				PopUpManager.addPopUp(rssView,this,false);
				PopUpManager.centerPopUp(rssView);
				rssView.addEventListener(CloseEvent.CLOSE,closeIt);
			}
			private function closeIt(event:CloseEvent):void
			{
				PopUpManager.removePopUp(event.currentTarget as IFlexDisplayObject);
			}
		]]>
	</mx>
	<mx :VBox width="100%" height="100%">
 
	</mx><mx :ApplicationControlBar x="0" y="0" width="100%">
		</mx><mx :VBox width="100%" height="100%" verticalAlign="middle">
			</mx><mx :HBox width="100%">
			<mx :Label text="Adobe Air Navigator - BETA" fontWeight="bold"/>
				<mx :Spacer width="100%"/>
				<mx :Label text="{'Número de abas:'+collectionLocations.length.toString()+' '+'aberta(s)'}" id="info"/>
			</mx>
			<mx :HBox width="100%" verticalAlign="middle">
				<mx :Button visible="false" id="rssButton" label="RSS"/>
				<mx :Label text="Endereço:"/>
				<mx :TextInput focusIn="adress.selectionEndIndex" enter="createAndNavigate()" id="adress" width="100%"/>
				<mx :Button label="Ir!" click="createAndNavigate()"/>
				<mx :Label text="Pesquensar :"/>
				<mx :TextInput enter="searchQuery()" focusIn="querySearch.text =''" text="Google!" id="querySearch"/>
				<mx :Button click="searchQuery()" label="OK"/>
			</mx>
 
 
		<mx :VBox width="100%" height="100%" verticalGap="2">
 
	<code :SuperTabBar  labelField="url" itemClick="navigateIntoItem()" childAdd="navigate()" id="tabs" dataProvider="{collectionLocations}"/>
				</mx><mx :HBox id="InternalViews" width="100%" height="100%"  y="28">
							<mx :HTML id="navigatorContainer" width="100%" height="100%"/>
				</mx>
 
			<mx :HBox width="100%">
					<mx :Spacer width="100%"/>
					<mx :Label fontSize="9" text="v 1.0 - by Igor Costa"/>
			</mx>

Espero caro leitor que você goste do AIR e começe a fazê-lo funcionar. O código fonte é gratuito, pode ser usado em seu aplicativo com tato que mencione a origem. O resto é por conta de vocês.

One thought on “Minha primeira experiência com o Adobe AIR

  1. Salve Igor..
    Podes me dizer se é possível através do componente mx:html carregar páginas e localizar strings especificas no html da página?
    Se puderes responder para o meu email eu agradeço maurocassano@gmail.com.

Comments are closed.