Pois é em ritmo de AudiCup.
Eis que então o pessoal da Audi entrou em contato comigo essa semana para fazer algo em Web 2.0 para cadastrar os times que irão participar da AudiCup.
Inter , estaremos contigo ..
Tu és minha paixão !
Não importa o que digam
Sempre levarei comigo
Minha camisa vermelha ..
e a cachaça na mão
O Gigante me espera ..
Para começar a festa !
O exemplo é mais ou menos o que esta abaixo:
Veja o Fonte é simples:
<?xml version="1.0" encoding="utf-8"?><s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"
creationComplete="application1_creationCompleteHandler(event)"><fx:Declarations></fx:Declarations><fx:Script><![CDATA[importmx.collections.ArrayCollection;importmx.events.CloseEvent;importmx.controls.Alert;importmx.events.DragEvent;importmx.events.FlexEvent;importmx.managers.DragManager;[Bindable]private var time:Time;[Bindable]private var times:ArrayCollection;[Bindable]private var timesConvocados:ArrayCollection=new ArrayCollection();private function onDrop(event:DragEvent):void{if(event.dragSource.formats.toString()=="items,itemsByIndex,caretIndex"){
var dragList:Array= event.dragSource.dataForFormat('items') as Array;
var draggedTimes:Time= dragList[0] as Time;if(draggedTimes.fifa=='N'){
Alert.show("Não foi possível adicionar este time!\n\n"+draggedTimes.nome+" não tem mundial de Clubes FIFA!", "AudiCup");
event.preventDefault();
event.target.hideDropFeedback(event);
DragManager.showFeedback(DragManager.NONE);}elseif(draggedTimes.fifa=='T'){
Alert.show("Time Adicionado!\n\n"+draggedTimes.nome+" foi campeão do mundialito de Gentil em 2010!", "AudiCup");}else{
Alert.show("Time Adicionado!\n\n"+draggedTimes.nome+" foi campeão Mundial FIFA!", "AudiCup");}}}protected function application1_creationCompleteHandler(event:FlexEvent):void{
times=new ArrayCollection();
time=newTime();
time.id=1;
time.nome="FC Barcelona";
time.fifa="S";
times.addItem(time);
time=newTime();
time.id=2;
time.nome="SC Internacional de Porto Alegre";
time.fifa="S";
times.addItem(time);
time=newTime();
time.id=3;
time.nome="FC Bayern";
time.fifa="S";
times.addItem(time);
time=newTime();
time.id=4;
time.nome="AC Milan";
time.fifa="S";
times.addItem(time);
time=newTime();
time.id=5;
time.nome="Grêmio de Porto Alegre";
time.fifa="N";
times.addItem(time);
time=newTime();
time.id=6;
time.nome="SC Juventude de Caxias do Sul";
time.fifa="N";
times.addItem(time);
time=newTime();
time.id=7;
time.nome="FC Bãrdei de Marau";
time.fifa="T";
times.addItem(time);}]]></fx:Script><s:Label x="10" y="10" fontSize="14" fontWeight="bold" text="Audi Cup 2011 Meet the best"/><mx:DataGrid x="10" y="32" width="250" height="220" dataProvider="{times}"
dragEnabled="true" dragMoveEnabled="true" dropEnabled="true"><mx:columns><mx:DataGridColumn dataField="nome" headerText="Times disponíveis para a AudiCup"/></mx:columns></mx:DataGrid><mx:DataGrid x="268" y="32" width="250" height="220" dataProvider="{timesConvocados}"
dragEnabled="true" dragMoveEnabled="true" dropEnabled="true" dragDrop="onDrop(event);"><mx:columns><mx:DataGridColumn dataField="nome" headerText="Convoque você mesmo - Arraste Aqui"/></mx:columns></mx:DataGrid></s:Application>
package{[Bindable]publicclassTime{public var id:Number;public var nome:String;public var fifa:String;public function Time(){}}}
Fiz alguns testes com o Flash Builder 4.5 e fiquei impressionado com o desenvolvimento para mobile. Show de bola mesmo.
Bom para instalar o Eclipse juntamente com o Flash Builder é fácil.
Flash Builder 4,5 suporta a instalação de um plugin para o Eclipse uma instância existente. Para fazer isso:
Navegue até o local de instalação instalado o Flash Builder e abra a pasta Utilitários.
Execute o executável do Adobe Flash Builder 4,5 Plug-in Utility.exe.
Selecione o idioma e clique em OK.
Selecione o local de instalação do Flash Builder, se solicitado.
Selecione a pasta do Eclipse para o qual deseja Flash Builder 4.5 para ser conectado e clique em Avançar. (Nota: A cópia do Eclipse deve ser versão 3.6.1 ou posterior, de 32 bits e deve conter uma pasta chamada “dropins”)
Reveja a pré-instalação de resumo e clique em Install
Após a instalação, é recomendável que você edite o arquivo eclipse.ini para a instância do Eclipse, para que ele inclui as seguintes definições:
E ai pessoal blza?
Uma coisa que as vezes eu vejo por ai são aplicações sem o uso do controle de transações. Descobri a poucos dias que isso pode ser tornar uma dor de cabeça para o desenvolvedor. Então se você usa o Spring ( que é o meus caso ) basta incluir no seu ApplicationContext essa tag abaixo:
Resolvi criar este post pois ja havia feito isso para trabalho de faculdade, então, compratilhando o conhecimento adquirido.
Segue abaixo aplicação e os fonte com as explicações:
Clique em Listar e depois salvar.
<?xml version="1.0" encoding="utf-8"?><mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
backgroundColor="white"><mx:Script><![CDATA[importmx.rpc.xml.SimpleXMLEncoder;importmx.utils.ObjectUtil;importmx.controls.Alert;importmx.collections.ArrayCollection;private var fr:FileReference;privatestaticconst FILE_TYPES:Array=[newFileFilter("Arquivo XML", "*.xml")];privatestaticconst DEFAULT_FILE_NAME:String="trabalho.xml";[Bindable]public var arr:ArrayCollection=new ArrayCollection([{id:1, nome:"Felipe Borella", cidade:"Marau"},
{id:2, nome:"Mario Junior", cidade:"Rio de Janeiro"},
{id:3, nome:"Bãrdei Futebol Clube", cidade:"Marau"},
{id:4, nome:"Janderson Futebol Clube", cidade:"Rio de Janeiro"}]);private function iniciar():void{
var xml:XML=objectToXML(arr.source);
txt1.text=ObjectUtil.toString(arr.source);
txt2.text=xml.toXMLString();}private function objectToXML(obj:Object):XML
{
var qName:QName=new QName("pessoa");
var xmlDocument:XMLDocument=new XMLDocument();
var simpleXMLEncoder:SimpleXMLEncoder=new SimpleXMLEncoder(xmlDocument);
var xmlNode:XMLNode=simpleXMLEncoder.encodeValue(obj, qName, xmlDocument);
var xml:XML=new XML(xmlDocument.toString());
trace(xml.toXMLString());return xml;}private function onLoadFileClick():void{//cria a instancia do FileReference
fr=new FileReference();//adiciona o evento para a escuta quando o arquivo for selecionado
fr.addEventListener(Event.SELECT, onFileSelect);//adiciona o evento para a escuta quando o arquivo for cancelado
fr.addEventListener(Event.CANCEL, onCancel);//abri somente arquivos XML
fr.browse(FILE_TYPES);}//chamado quando o usuario seleciona o arquivoprivate function onFileSelect(e:Event):void{//quando o arquivo for carregado dispara a escuta da funcao onLoadComplete
fr.addEventListener(Event.COMPLETE, onLoadComplete);// adiciona a escuta quando acontece erro ao carregar arquivo
fr.addEventListener(IOErrorEvent.IO_ERROR, onLoadError);//carrega o conteudo do arquivo
fr.load();}//Chamado quando o usuario cancelaprivate function onCancel(e:Event):void{
trace("File Browse Canceled");
fr=null;}//chama completa o arquivo carregadoprivate function onLoadComplete(e:Event):void{//recupera os dados do arquivo como um byte array
var data:ByteArray=fr.data;//le o arquivo como uma string e coloca em um text area
txt2.text=data.readUTFBytes(data.bytesAvailable);//limpa a instancia do arquivo tipo filereference
fr=null;}//quando ocorrer erros ao carregarprivate function onLoadError(e:IOErrorEvent):void{
trace("Error loading file : "+ e.text);}//chamadoquando o usuario digita no textareaprivate function onInputChange():void{//habilita o botao se ha texto para salvar
saveButton.enabled=(txt2.text.length>0);}//chamado quando o usuario clica o botao de carregarprivate function onSaveClick():void{//criando instancia de File Reference
fr=new FileReference();//escuta para falha quando foi salvo
fr.addEventListener(Event.COMPLETE, onFileSave);//escuta para quando cancelar
fr.addEventListener(Event.CANCEL, onCancel);//escuta para quando ha erros no salvar
fr.addEventListener(IOErrorEvent.IO_ERROR, onSaveError);//abre a caixa para saber onde salvar o XML usando o nome default
fr.save('<?xml version="1.0" encoding="UTF-8"?>\n'+txt2.text, DEFAULT_FILE_NAME);}//chamado quando o arquivo for salvoprivate function onFileSave(e:Event):void{
trace("File Saved");
fr=null;
Alert.show('Salvo com sucesso');}//chamado se o usuario cancela a caixa de dialogoprivate function onCance2l(e:Event):void{
Alert.show('Arquivo cancelado', 'Sistema');
fr=null;}//chamado se ocorrer erro enquanto salva o arquivoprivate function onSaveError(e:IOErrorEvent):void{
Alert.show('Erro '+ e.text);
fr=null;}]]></mx:Script><mx:DataGrid x="10" y="10" dataProvider="{arr}" width="299"><mx:columns><mx:DataGridColumn headerText="Nome" dataField="nome"/><mx:DataGridColumn headerText="Cidade" dataField="cidade"/></mx:columns></mx:DataGrid><mx:Button id="saveButton" x="412" y="130" label="Salvar" click="onSaveClick()"/><mx:TextArea id="txt1" x="10" y="175" width="228" height="231" editable="false"/><mx:TextArea id="txt2" x="246" y="175" width="228" height="231" editable="false"/><mx:Button x="346" y="130" label="Listar" click="iniciar()"/></mx:Application>
Comentários