logo
  • Home
  • Acerca
  • Autores
  • Faq
  • Rede
  • Mobile
  Twitter   Feed-me! RSS!
Fev 23

Flex Datagrid: salvar valor modificado por um item renderer

Escrito por Ved em AR, DataGrid, DataProvider, Flex, Formação, Motivação, O, Ria’s Geral, Screencast, UI, XP, checkBox, checkboxes, explicação, for, ide, itemRenderer, screen, tag @ 02 23rd, 2010 | via http://www.vedovelli.com.br | Sem comentários
Ved
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Eu ia gravar um screencast mas não rolou motivação. Então, como o moço que me pediu essa explicação tava na urgência, decidi fazer um projeto e mandar para ele (não se acostumem).
Clique aqui para baixar o projeto.

É algo muito simples e serve para manipular o dataProvider ao marcar/desmarcar os checkboxes no dataGrid, deixando a informação [...]

Fev 22

Lumine + ZendAmf + Flex 5/5

Escrito por Fábio Batista da Silva em 1, 4, 6, AMF, AR, Adobe, Adobe Flex, Arquitetura, BI, Bindable, Controls, DataGrid, DataProvider, Desenvolvedor, EventListener, Evento, Eventos, Flex, Flex 2, Flex 3, Flex 4, IE, Iniciando, Java, MXML, Number, O, PHP, Pessoal, Projetos, RIA, Ria’s Geral, TAT, Tema, TextInput, Tutorial, UI, Ved, XML, XP, action, app, auto, back, backend, bar, busca, class, control, código, código fonte, demo, desenvolvedores, dispatch, dispatchEvent, email, err, erro, event, events, fonte, for, framework, function, handle, ide, if, label, layout, on, pt, servidor, tag, tv, update, vs, zend, zendAMF, zendFramework @ 02 22nd, 2010 | via http://www.flexria.com.br/home | Sem comentários
Fábio Batista da Silva
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Lumine + ZendAmf + Flex 5/5

Olá pessoal !!!

Agora que temos nosso backend e regra de negocio pronta podemos implementar nossas views e actions.

Application

Iniciando pelo nosso application que terá apenas as configurações do Swiz e uma instância de nossa view :

<?xml version="1.0" encoding="utf-8"?>
<mx:Application 
	xmlns:mx="http://www.adobe.com/2006/mxml" 
	xmlns:swiz="http://swiz.swizframework.org"
	xmlns:views="br.com.flexria.views.*"
	layout="absolute" xmlns:local="*"
	creationPolicy="all"
	height="100%"
	width="100%">
 
	<local:ApplicationSwizConfig/>
 
	<views:ContactView 
		horizontalCenter="0" 
		verticalCenter="0"
		width="600"
		bottom="20" 
		top="20"/>
</mx:Application>

Views

A aplicação possui 2 view extremamente simples ContactView e PhoneView, sendo que a segunda será utilizado como filha da primeira:

ContactView.mxml

<?xml version="1.0" encoding="utf-8"?>
<mx:Panel 
	xmlns:mx="http://www.adobe.com/2006/mxml"
	xmlns:views="br.com.flexria.views.*" 
 	creationComplete="{init()}"
 	title="Contatos">
	<mx:Script source="actions/ContactAction.as"/>
	<mx:ViewStack id="_vs" width="100%" height="100%">
		<mx:Canvas width="100%" height="100%" id="_canvasList">
			<mx:HBox left="20" right="20" top="5">
				<mx:Label text="Nome"/>
				<mx:TextInput id="_txFind" width="80%"/>
				<mx:Button label="Buscar" click="find()"/>
			</mx:HBox>
			<mx:DataGrid 
				id="_dataGrid"
				top="40"
				left="10"
				right="10"
				bottom="60" 
				doubleClick="update()"
				doubleClickEnabled="true"
				dataProvider="{contactController.dataProvider}" >
				<mx:columns>
					<mx:DataGridColumn headerText="Nome" 	dataField="name"/>
					<mx:DataGridColumn headerText="Email" 	dataField="email"/>
				</mx:columns>
			</mx:DataGrid>
			<mx:ControlBar bottom="10" width="95%" horizontalCenter="0" horizontalAlign="left" verticalAlign="middle">
				<mx:Button label="Novo" 	id="_btnCreate" 	click="{create()}"/>
				<mx:Button label="Editar" 	id="_btnUpdate" 	click="{update()}"		enabled="{_dataGrid.selectedItem!=null}"/>
				<mx:Button label="Remover" 	id="_btnRemove" 	click="{remove()}"		enabled="{_dataGrid.selectedItem!=null}"/>
			</mx:ControlBar>
		</mx:Canvas>
		<mx:Canvas  width="100%" height="100%" id="_canvasForm">
			<mx:TabNavigator width="100%" height="100%">
				<mx:Form 
					top="10"
					left="10"
					right="10"
					bottom="10" 
					borderStyle="solid" label="Contato">
					<mx:FormHeading label="{contact.id>0?'Editando':'Incluindo'} contato"/>
					<mx:FormItem label="Nome:" required="true">
						<mx:TextInput 
							width="339" 
							id="_txtName" 
							text="{contact.name}"/>
					</mx:FormItem>
					<mx:FormItem label="Email:">
						<mx:TextInput 
							width="339" 
							id="_txtEmail" 
							text="{contact.email}"/>
					</mx:FormItem>
					<mx:FormItem width="100%" direction="horizontal">
						<mx:Button label="Cancelar" id="_btnCancel" 	click="{cancel()}"/>
						<mx:Button label="Confirmar" id="_btnConfirm" 	click="{save()}"/>
					</mx:FormItem>
				</mx:Form>
                                <!--Instancia de PhoneView-->
				<views:PhoneView 
					id="_phoneView" 
					contact="{contact}" 
					label="Telefones" 
					enabled="{contact.id>0}"/>
			</mx:TabNavigator>
		</mx:Canvas>
	</mx:ViewStack>
</mx:Panel>

PhoneView.mxml

<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas 
	xmlns:mx="http://www.adobe.com/2006/mxml" 
 	creationComplete="{init()}">
	<mx:Script source="actions/PhoneAction.as"/>
	<mx:ViewStack id="_vs" width="100%" height="100%">
		<mx:Canvas width="100%" height="100%" id="_canvasList">
			<mx:DataGrid 
				id="_dataGrid"
				top="10"
				left="10"
				right="10"
				bottom="60" 
				doubleClick="update()"
				doubleClickEnabled="true"
				dataProvider="{phoneController.dataProvider}" >
				<mx:columns>
					<mx:DataGridColumn headerText="Número" 	dataField="number"/>
				</mx:columns>
			</mx:DataGrid>
			<mx:ControlBar bottom="10" width="95%" horizontalCenter="0" horizontalAlign="left" verticalAlign="middle">
				<mx:Button label="Novo" 	id="_btnCreate" 	click="{create()}"/>
				<mx:Button label="Editar" 	id="_btnUpdate" 	click="{update()}"		enabled="{_dataGrid.selectedItem!=null}"/>
				<mx:Button label="Remover" 	id="_btnRemove" 	click="{remove()}"		enabled="{_dataGrid.selectedItem!=null}"/>
			</mx:ControlBar>
		</mx:Canvas>
		<mx:Canvas  width="100%" height="100%" id="_canvasForm">
			<mx:Form 
				top="10"
				left="10"
				right="10"
				bottom="10" 
				borderStyle="solid">
				<mx:FormHeading label="{phone.id>0?'Editando':'Incluindo'} telefone"/>
				<mx:FormItem label="Número:" required="true">
					<mx:TextInput 
						width="339" 
						id="_txtNumber" 
						text="{phone.number}"/>
				</mx:FormItem>
				<mx:FormItem width="100%" direction="horizontal">
					<mx:Button label="Cancelar" id="_btnCancel" 	click="{cancel()}"/>
					<mx:Button label="Confirmar" id="_btnConfirm" 	click="{save()}"/>
				</mx:FormItem>
			</mx:Form>
		</mx:Canvas>
	</mx:ViewStack>
</mx:Canvas>

Actions

E para finalizar as respectivas Actions para ContactView e PhoneView.
Essas action possuem os métodos que disparam os eventos de chamada ao servidor e métodos handler que serão chamados quando a requisição for completada.
Além disso temos a meta tag [Autowire] que faz a injeção do respectivo controller.
ContactAction.as

import br.com.flexria.controllers.ContactController;
import br.com.flexria.events.ContactEvent;
import br.com.flexria.vo.ContactVO;
import org.swizframework.Swiz;
import mx.events.CloseEvent;
import mx.controls.Alert;
 
 
[Bindable]
private var contact:ContactVO=new ContactVO();
 
[Bindable]
[Autowire]
public var contactController:ContactController;
 
/**
 * init()
 */
private function init():void
{
	find();
 
	Swiz.addEventListener(ContactEvent.SAVE_COMPLETE, saveCompleteHandler);
	Swiz.addEventListener(ContactEvent.REMOVE_COMPLETE, removeCompleteHandler);
}
 
/**
 * create()
 */
private function create():void
{
	contact=new ContactVO();
	_vs.selectedChild=_canvasForm;
}
 
/**
 * update()
 */
private function update():void
{
	contact=_dataGrid.selectedItem as ContactVO;
	_vs.selectedChild=_canvasForm;
}
 
/**
 * cancel()
 */
private function cancel():void
{
	contact=new ContactVO();
	_vs.selectedChild=_canvasList;
}
 
/**
 * find()
 */
private function find():void
{
	_vs.selectedChild=_canvasList;
	var event:ContactEvent=new ContactEvent(ContactEvent.FIND);
	event.contact=new ContactVO();
	event.contact.name=_txFind.text;
	Swiz.dispatchEvent(event);
}
 
/**
 * save()
 */
private function save():void
{
	contact.name=_txtName.text;
	contact.email=_txtEmail.text;
	var event:ContactEvent=new ContactEvent(ContactEvent.SAVE);
	event.contact=contact;
	Swiz.dispatchEvent(event);
}
 
/**
 * remove()
 */
private function remove():void
{
	Alert.show("Deseja realmente excluir o registro selecionado?", "Excluir", Alert.NO | Alert.YES | Alert.NONMODAL, null, function(e:CloseEvent):void
	{
		if (e.detail == Alert.YES)
		{
			contact=_dataGrid.selectedItem as ContactVO;
			var event:ContactEvent=new ContactEvent(ContactEvent.REMOVE);
			event.contact=contact;
			Swiz.dispatchEvent(event);
		}
	});
 
}
 
/**
 * saveCompleteHandler()
 */
private function saveCompleteHandler(event:Event):void
{
	_vs.selectedChild=_canvasList;
	find();
}
 
/**
 * removeCompleteHandler()
 */
private function removeCompleteHandler(event:Event):void
{
	_vs.selectedChild=_canvasList;
	find();
}

PhoneAction.as

import br.com.flexria.controllers.ContactController;
import br.com.flexria.controllers.PhoneController;
import br.com.flexria.events.ContactEvent;
import br.com.flexria.events.PhoneEvent;
import br.com.flexria.vo.ContactVO;
import br.com.flexria.vo.PhoneVO;
import org.swizframework.Swiz;
import mx.events.CloseEvent;
import mx.controls.Alert;
 
[Bindable]
private var _contact:ContactVO;
 
[Bindable]
private var phone:PhoneVO=new PhoneVO();
 
[Bindable]
[Autowire]
public var phoneController:PhoneController;
 
public function set contact(value:ContactVO):void
{
	_contact=value;
	if (_contact != null && _contact.id > 0)
	{
		load();
	}
}
 
/**
 * init()
 */
private function init():void
{
	Swiz.addEventListener(PhoneEvent.SAVE_COMPLETE, saveCompleteHandler);
	Swiz.addEventListener(PhoneEvent.REMOVE_COMPLETE, removeCompleteHandler);
}
 
/**
 * load()
 */
private function load():void
{
	_vs.selectedChild=_canvasList;
	var event:PhoneEvent=new PhoneEvent(PhoneEvent.LOAD);
	event.contact=_contact;
	Swiz.dispatchEvent(event);
}
 
/**
 * create()
 */
private function create():void
{
	phone=new PhoneVO();
	_vs.selectedChild=_canvasForm;
}
 
/**
 * update()
 */
private function update():void
{
	phone=_dataGrid.selectedItem as PhoneVO;
	_vs.selectedChild=_canvasForm;
}
 
/**
 * cancel()
 */
private function cancel():void
{
	phone=new PhoneVO();
	_vs.selectedChild=_canvasList;
}
 
/**
 * save()
 */
private function save():void
{
	phone.contactId=_contact.id;
	phone.number=_txtNumber.text;
	var event:PhoneEvent=new PhoneEvent(PhoneEvent.SAVE);
	event.phone=phone;
	Swiz.dispatchEvent(event);
}
 
/**
 * remove()
 */
private function remove():void
{
	Alert.show("Deseja realmente excluir o registro selecionado?", "Excluir", Alert.NO | Alert.YES | Alert.NONMODAL, null, function(e:CloseEvent):void
	{
		if (e.detail == Alert.YES)
		{
			phone=_dataGrid.selectedItem as PhoneVO;
			var event:PhoneEvent=new PhoneEvent(PhoneEvent.REMOVE);
			event.phone=phone;
			Swiz.dispatchEvent(event);
		}
	});
 
}
 
/**
 * saveCompleteHandler()
 */
private function saveCompleteHandler(event:Event):void
{
	_vs.selectedChild=_canvasList;
	load();
}
 
/**
 * removeCompleteHandler()
 */
private function removeCompleteHandler(event:Event):void
{
	_vs.selectedChild=_canvasList;
	load();
}

Assim finalizamos nossa aplicação !!!

O código fonte da aplicação pode ser baixado aqui

Espero que esse tutorial possa ser utíl aos desenvolvedores PHP que pretendem utilizar essa arquitetura em seus projetos e peço desculpas por algum erro ou se deixei de explicar algo durante o post.
Se houver alguma duvida podem podem perguntar via comentário no post ou email Q respondo na medida do possível..

Abraço a todos e até a próxima !!!!

Tutorial : Lumine + ZendAmf + Flex 1/5
Tutorial : Lumine + ZendAmf + Flex 2/5
Tutorial : Lumine + ZendAmf + Flex 3/5
Tutorial : Lumine + ZendAmf + Flex 4/5
Tutorial : Lumine + ZendAmf + Flex 5/5

Jan 27

FlexORM – Framework ORM para persistência em AIR 1.5

Escrito por Stefan Horochovec em AR, Actionscript, Actionscript3, Adobe, Air, Artigo, BI, Banco de Dados, Bindable, CRUD, Componente, Componentes, DataGrid, DataProvider, Desenvolvedor, Dica, Download, Evento, Eventos, Flex, FlexBuilder, FlexDuck, Formulário, Google, Gravação, Hibernate, IE, JPA, Java, Javascript, MXML, Number, O, Pessoal, Projetos, RIA, Ria’s Geral, SQLite, TextInput, UI, Ved, XML, XP, abas, action, app, as3, auto, bar, blog, botão, busca, class, classe, codec, código, dados, demo, event, filter, fonte, for, framework, function, handle, html, ide, if, image, int, label, layout, lista, lite, live, map, mg, on, programação, pt, servidor, string, tag, uint, window, zend @ 01 27th, 2010 | via http://www.horochovec.com.br/blog | Sem comentários
Stefan Horochovec
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Olá pessoal,

Neste artigo, irei comentar um pouco sobre o FlexORM. Este framework tem como objetivo o mapeamento objeto-relacional em projetos que utilizem AIR e base de dados embarcada (SQLite).

O FlexORM é uma criação de Mark Moloney, e é hospedado pela RIAForge.

O FlexORM tem suporte a versão 1.5 do AIR e abaixo, podemos listar algumas de suas vantagens para seu uso:

* Não há necessidade de criação e atualização de tabelas. O FlexORM se encarrega da criação da estrutura do banco, através de um mapeamento feito dentro do próprio objeto a ser persistido;

* Possui suporte as operações CRUD;

* Suporta associações 1:N, N:M, N:1 e 1:1;

* Suporte a atributos transientes;

* Suporte a constraints para consistência de chaves-estrangeiras, através de triggers do SQLite;

* Transações;

* Criação automática de índices;

* Lazy Loading;

* Dentre outras;

Para exemplificar o uso do FlexORM, irei criar um projeto chamado DuckToDo e o objetivo do projeto é que eu possa cadastrar algumas tarefas que eu precise realizar. A aplicação é bem simples no quesito visual, uma vez que o intuito do artigo é o conhecimento do FlexORM.

Para iniciar, iremos criar um projeto no FlexBuilder chamado DuckToDo, conforme a tela abaixo:

Em seguida, vá as propriedades do projeto, e na opção Flex Compiler, adicione a seguinte linha de comando ” -keep-as3-metadata+=Table,Id,Column,ManyToOne,OneToMany,ManyToMany,Transient”, para que o compilador interprete as Metadatas adicionadas ao mapeamento dos Beans, conforme tela abaixo:

Feito isso, você deve fazer o download do FlexORM e adicionar ao seu projeto. Você pode optar por fazer o download do source através de um servidor de versionamento (subversion), ou fazer o download através deste link do arquivo .SWC do projeto FlexORM.

Depois de obter o .SWC, ou por download, ou recompilando o projeto, você deve adicioná-lo a pasta lib/ de seu projeto.

Feito isso, criaremos nossa classe de objeto que será persistida pela nossa aplicação.

Crie uma nova classe actionscript na package “org.flexduck.model” chamada Todo, e adicione o código abaixo:

?View Code ACTIONSCRIPT3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package org.flexduck.model
{

	[Bindable]
	[Table(name="TODO")]
	public class Todo
	{
		[Id]
		public var codigo 	: int;

		[Column(name="titulo")]
		public var titulo 	: String;

		[Column(name="descricao")]
		public var descricao : String;

	}

}

Neste momento, quem trabalha com Java e utiliza Hibernate ou JPA já percebe uma grande semelhança. Através da Metadata [Table] no escopo da classe, definimos a qual tabela este objeto deve ser persistido.

No atributo codigo, foi adicionado a Metadata [Id] indicando que esse atributo corresponde a chave primária, ou o identificador, do objeto.

E nos atributos, titulo e descrição, adicionado a Metadata [Column] indicando que refere-se a uma coluna. Junto a Metadata também foi adicionado o nome respectivo da coluna na tabela.

Com isso, nosso bean está pronto para ser persistido. Vamos para a sua gravação.

Dentro do arquivo DuckToDo.mxml foi criada a seguinte estrutura de componentes.

?View Code ACTIONSCRIPT3
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
<mx:Binding destination="todo.titulo" 		source="titulo.text"/>
<mx:Binding destination="todo.descricao" 	source="descricao.text"/>

<mx:Panel width="500" height="250" layout="absolute" title="O que tenho para fazer?" horizontalCenter="0" verticalCenter="0">

<mx:ViewStack id="vw" top="0" right="0" left="0" bottom="0">
	<mx:Canvas label="Grid" width="100%" height="100%">

		<mx:Label x="10" y="10" text="Título" fontWeight="bold"/>
		<mx:TextInput x="10" y="29" width="460" id="titulo" text="{this.todo.titulo}"/>

		<mx:Label x="10" y="58" text="Descrição" fontWeight="bold"/>
		<mx:TextArea x="10" y="75" width="460" height="85" id="descricao" text="{this.todo.descricao}"/>

		<mx:Button x="318" y="172" label="Adicionar" id="btnAdd" click="btnAddHandler(event);"/>
		<mx:Button x="252" y="172" label="Listar" id="btnListar" click="btnListarHandler(event);"/>
		<mx:Button x="189" y="172" label="Novo" id="btnNovo" click="btnNovoHandler(event);"/>
		<mx:Button x="406" y="172" label="Excluir" id="btnDel" click="btnDelHandler(event);"/>

	</mx:Canvas>

	<mx:Canvas label="Formulario" width="100%" height="100%">
		<mx:DataGrid 	top="5" right="5" left="5" bottom="30"
						id="dg"
						doubleClickEnabled="true"
						doubleClick="doubleClickHandler(event);">
			<mx:columns>
				<mx:DataGridColumn dataField="titulo"/>
			</mx:columns>
		</mx:DataGrid>
		<mx:Button label="Pesquisar" id="btnPesquisar" click="btnPesquisarHandler(event);" bottom="5" right="5"/>
		<mx:Button label="Cadastrar" id="btnCadastrar" click="btnCadastrarHandler(event);" bottom="5" right="90"/>
	</mx:Canvas>

</mx:ViewStack>

</mx:Panel>

Essa estrutura corresponde a um Panel, contendo um ViewStack com dois Canvas dentro. Para o primeiro Canvas foi adicionado um Grid para conter a lista de tarefas e no segundo Canvas, um pequeno formulário para a manutenção dos registros.

Nesse artigo não irei comentar sobre a estrutura do formulário, considerando apenas como relevante as instruções de uso do FlexORM.

Foi adicionado um evento no creationComplete da minha aplicação, para instanciar o banco de dados, conforme declaração abaixo:

?View Code ACTIONSCRIPT3
1
2
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
						creationComplete="initApp(event);">

E dentro do bloco de programação em ActionScript foi adicionado:

?View Code ACTIONSCRIPT3
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
<mx:Script>
<![CDATA[

import org.flexduck.model.Todo;
import nz.co.codec.flexorm.EntityManager;

/**
 * Objeto de persistencia
 */
private var genericDAO 	: EntityManager	= EntityManager.instance;

/**
 * Classe para listar
 */
private var todoClass	: Class			= Todo;

/**
 * Bean
 */
[Bindable]
private var todo		: Todo			= new Todo();

/**
 * Evento disparado no creationComplete da aplicação para fazer a conexão com o banco de dados
 */
private function initApp(event:Event) : void
{
	var appDataBase : File = File.documentsDirectory.resolvePath("ducktodo.db");
	var sqlConn		: SQLConnection	= new SQLConnection();
	sqlConn.open(appDataBase);
	this.genericDAO.sqlConnection	= sqlConn;
}

/**
 * Função disparada no click do botão de "Adicionar"
 */
private function btnAddHandler(event:MouseEvent) : void
{
	this.genericDAO.save(this.todo);
	this.dg.dataProvider	= this.genericDAO.findAll(this.todoClass);
}

/**
 * Função disparada no click do botão de "Excluir"
 */
private function btnDelHandler(event:MouseEvent) : void
{
	this.genericDAO.remove(this.todo);
	this.dg.dataProvider	= this.genericDAO.findAll(this.todoClass);
}

/**
 * Função disparada no duplo click no grid de pesquisa
 */
private function doubleClickHandler(event:MouseEvent) : void
{
	this.todo	= this.dg.selectedItem as Todo;
	this.vw.selectedIndex	= 0;
}

/**
 * Função disparada no click do botão de "Pesquisar"
 */
private function btnPesquisarHandler(event:MouseEvent) : void
{
	this.dg.dataProvider	= this.genericDAO.findAll(this.todoClass);
}

/**
 * Função disparada no click do botão de "Cadastrar"
 */
private function btnCadastrarHandler(event:MouseEvent) : void
{
	this.vw.selectedIndex 	= 0;
}

/**
 * Função disparada no click do botão de "Listar"
 */
private function btnListarHandler(event:MouseEvent) : void
{
	this.vw.selectedIndex	= 1;
}

/**
 * Função disparada no click do botão de "Novo"
 */
private function btnNovoHandler(event:MouseEvent) : void
{
	this.todo	= new Todo();
}
]]>
</mx:Script>

Alguns comentários relevantes:

Na função initApp, foi criado uma conexão SQLConnection, e a mesma foi passada para um objeto chamado genericDAO. Este objeto é uma instancia da classe EntityManager do FlexORM, responsável por executar os métodos para manipulação do banco de dados.

Na função btnAddHandler foi feita a persistencia do objeto Todo. Perceba que essa função é responsável por gravar e atualizar o objeto, não sendo necessário que o desenvolvedor se preocupe com a operação específica, apenas que em determinado momento, o objeto deve ser persistido, gravando-o ou fazendo sua atualização.

Na função btnDelHandler foi solicitado que determinado objeto fosse apagado do banco de dados.

Na função btnPesquisarHandler foi solicitado uma busca em todos os registros de determinada Classe, e não um objeto, fique atento a essa situação.

Os demais eventos servem para a navegação da tela, portanto, não serão comentados.

Se você fez corretamente a inclusão de todos os fontes, terá o resultado:

?View Code ACTIONSCRIPT3
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
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
						creationComplete="initApp(event);">

<mx:Script>
<![CDATA[

import org.flexduck.model.Todo;
import nz.co.codec.flexorm.EntityManager;

/**
 * Objeto de persistencia
 */
private var genericDAO 	: EntityManager	= EntityManager.instance;

/**
 * Classe para listar
 */
private var todoClass	: Class			= Todo;

/**
 * Bean
 */
[Bindable]
private var todo		: Todo			= new Todo();

/**
 * Evento disparado no creationComplete da aplicação para fazer a conexão com o banco de dados
 */
private function initApp(event:Event) : void
{
	var appDataBase : File = File.documentsDirectory.resolvePath("ducktodo.db");
	var sqlConn		: SQLConnection	= new SQLConnection();
	sqlConn.open(appDataBase);
	this.genericDAO.sqlConnection	= sqlConn;
}

/**
 * Função disparada no click do botão de "Adicionar"
 */
private function btnAddHandler(event:MouseEvent) : void
{
	this.genericDAO.save(this.todo);
	this.dg.dataProvider	= this.genericDAO.findAll(this.todoClass);
}

/**
 * Função disparada no click do botão de "Excluir"
 */
private function btnDelHandler(event:MouseEvent) : void
{
	this.genericDAO.remove(this.todo);
	this.dg.dataProvider	= this.genericDAO.findAll(this.todoClass);
}

/**
 * Função disparada no duplo click no grid de pesquisa
 */
private function doubleClickHandler(event:MouseEvent) : void
{
	this.todo	= this.dg.selectedItem as Todo;
	this.vw.selectedIndex	= 0;
}

/**
 * Função disparada no click do botão de "Pesquisar"
 */
private function btnPesquisarHandler(event:MouseEvent) : void
{
	this.dg.dataProvider	= this.genericDAO.findAll(this.todoClass);
}

/**
 * Função disparada no click do botão de "Cadastrar"
 */
private function btnCadastrarHandler(event:MouseEvent) : void
{
	this.vw.selectedIndex 	= 0;
}

/**
 * Função disparada no click do botão de "Listar"
 */
private function btnListarHandler(event:MouseEvent) : void
{
	this.vw.selectedIndex	= 1;
}

/**
 * Função disparada no click do botão de "Novo"
 */
private function btnNovoHandler(event:MouseEvent) : void
{
	this.todo	= new Todo();
}
]]>
</mx:Script>

<mx:Binding destination="todo.titulo" 		source="titulo.text"/>
<mx:Binding destination="todo.descricao" 	source="descricao.text"/>

<mx:Panel width="500" height="250" layout="absolute" title="O que tenho para fazer?" horizontalCenter="0" verticalCenter="0">

<mx:ViewStack id="vw" top="0" right="0" left="0" bottom="0">
	<mx:Canvas label="Grid" width="100%" height="100%">

		<mx:Label x="10" y="10" text="Título" fontWeight="bold"/>
		<mx:TextInput x="10" y="29" width="460" id="titulo" text="{this.todo.titulo}"/>

		<mx:Label x="10" y="58" text="Descrição" fontWeight="bold"/>
		<mx:TextArea x="10" y="75" width="460" height="85" id="descricao" text="{this.todo.descricao}"/>

		<mx:Button x="318" y="172" label="Adicionar" id="btnAdd" click="btnAddHandler(event);"/>
		<mx:Button x="252" y="172" label="Listar" id="btnListar" click="btnListarHandler(event);"/>
		<mx:Button x="189" y="172" label="Novo" id="btnNovo" click="btnNovoHandler(event);"/>
		<mx:Button x="406" y="172" label="Excluir" id="btnDel" click="btnDelHandler(event);"/>

	</mx:Canvas>

	<mx:Canvas label="Formulario" width="100%" height="100%">
		<mx:DataGrid 	top="5" right="5" left="5" bottom="30"
						id="dg"
						doubleClickEnabled="true"
						doubleClick="doubleClickHandler(event);">
			<mx:columns>
				<mx:DataGridColumn dataField="titulo"/>
			</mx:columns>
		</mx:DataGrid>
		<mx:Button label="Pesquisar" id="btnPesquisar" click="btnPesquisarHandler(event);" bottom="5" right="5"/>
		<mx:Button label="Cadastrar" id="btnCadastrar" click="btnCadastrarHandler(event);" bottom="5" right="90"/>
	</mx:Canvas>

</mx:ViewStack>

</mx:Panel>

</mx:WindowedApplication>

Basta exportar sua aplicação, e tudo deverá funcionar perfeitamente.

Forte abraço e até a próxima!

Jan 24

Exportar dados para o Excel – Microsoft Silverlight 3

Escrito por Robson Fernandes em 1, 4, 6, AR, Adobe, Adobe Flex, BI, C#, CSharp, DataGrid, Dica, Dicas, Download, Excel, Flex, IE, MSDN, Microsoft, Microsoft Silverlight, NaN, O, Pessoal, RIA, Ria’s Geral, Scroll, SilverLight - Design, Silverlight - Core, Silverlight - Dicas, Silverlight - PHP, Silverlight - WebClient, Silverlight 3, Software, UI, XP, blog, class, classe, cliente, código, dados, event, exemplo, filter, fonte, for, html, if, image, int, library, mg, on, silverlight, tag, window, windows @ 01 24th, 2010 | via http://www.riasoftware.com.br/blog/ | Sem comentários
Robson Fernandes
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Microsoft Silverlight Dicas

INTRODUÇÃO

Boa noite pessoal!

No post anterior fiz um exemplo de exportação de dados utilizando o Adobe Flex. Para continuar, farei neste um exemplo utilizando Silverlight, abordando o uso da classe SaveFileDialog, para manipular arquivos no Silverlight.
A partir desta, irei disponibilizar uma classe que efetua a leitura de dados, e os converte para um arquivo no formato do Excel, para depois, gravá-lo na máquina cliente utilizando o SaveFileDialog.


CÓDIGO C#

Observe o código abaixo. Este método recebe um objeto DataGrid como parâmetro, que será utilizado para ler dos dados e depois converte-los no formato *.xls. Depois veja que o objeto file é instanciado a partir da classe SaveFileDialog. Veja também, que há uma classe que eu programei chamada ExportExcel que possui um método DgToHTML para gerar o arquivo no formato especificado.

/**
 * Exporta dados do DataGrid para o Excel
 * @param event
 *
 */
 private void btnExportar_Click(object sender, System.Windows.RoutedEventArgs e)
 {
     SaveFileDialog  file    =  new SaveFileDialog();
     ExportExcel        export  = new ExportExcel();

     file.DefaultExt = "*.xls";
     file.Filter = "Excel Worksheets|*.xls";
     if (file.ShowDialog() == false) return;
     using (StreamWriter sw = new StreamWriter(file.OpenFile()))
     {
        sw.WriteLine(export.DgToHTML<ClienteVo>(dataGridCliente));
     }
}

Massa demais!!!

APLICAÇÃO – RUN

DOWNLOAD

Fontes SILVERLIGHT – SilverlightToExcel

Vlw Galerinha!!!

Robson Fernandes

Jan 5

Flex Erro #1034: Não é possível converter DragManagerImpl em IDragManager

Escrito por Igor Musardo em Adobe Flex, DataGrid, Dica @ 01 5th, 2010 | via http://www.igormusardo.com.br | Sem comentários
Igor Musardo
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Dias atrás me deparei com o erro abaixo:

Esse erro ocorria sempre ao acessar dois módulos que tivessem DataGrid com eventos de clique. Acessando o primeiro módulo, tudo funcionava perfeitamente, porém ao acessar o segundo módulo e clicar em qualquer parte da DataGrid, o erro surgia.
Após várias pesquisas acabei encontrando a solução.
Portanto caso você esteja passando [...]

Dez 22

Artigos e Vídeos sobre Silverlight

Escrito por Flavia Moreira em 3d, Animação, Animações, Asp.Net, Blend, Blend 3, Botões, C#, CSharp, Controles, DataGrid, DoubleAnimationUsingKeyFrames, Expression Blend, FrameWork.Net, FullScreen, Javascript, Microsoft, Silverlight 2, Silverlight 3, Silverlight 4, SplineDoubleKeyFrame, Tutoriais, Visual Studio, Visual Studio 2008, WCF, WPF, blog, blog silverlight, blogsilverlight, deep zoom, deepZoom, player, silverlight, site @ 12 22nd, 2009 | via http://flamoreira.wordpress.com | Sem comentários
Flavia Moreira
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Artigos e Vídeos Sobre Silverlight -

Artigos
Acesse todos estes tutoriais em http://www.dowhile.com.br – no menu artigos ou vídeos – Silverlight
1 Deep Zoom
2 Silverlight 4 Beta e seus recursos
3 Usando função JavaScript em Silverlight
4 Enviando e-mail com Silverlight – Parte II
5 Enviando e-mail com Silverlight – Parte I
6 Populando Datagrid usando LINQ TO SQL em Silverlight Parte II
7 Populando Datagrid usando LINQ TO SQL em Silverlight Parte I
8 Vídeo Player em Silverlight Visual Studio 2010 – Parte II
9 Primeira Aplicação em Silverlight Flávia Moreira
10 Vídeo Player em Silverlight – Visual Studio 2010 Parte I
11 Introdução ao Microsoft Blend 3
Vídeos
1 Data Grid em Silverlight 4 por Jesse Liberty
2 Acessando método C# pelo Javascript
3 Behavior Silverlight Administrator
4 Animação dinâmica em Silverlight
5 Vídeo aula- Aplicação em Silverlight

Nov 21

Artigos e Vídeos em Silverlight

Escrito por Flavia Moreira em Animação, Animações, Asp.Net, Blend, Blend 3, Botões, C#, Controles, DataGrid, Expression Blend, FrameWork.Net, FullScreen, Javascript, Language Runtime, Linq to Sql, Microsoft, Silverlight 2, Silverlight 3, Tutoriais, Videobrush, Visual Studio, Visual Studio 2008, Vídeo, WCF, WPF, blog, blog silverlight, blogsilverlight, player, silverlight @ 11 21st, 2009 | via http://flamoreira.wordpress.com | Sem comentários
Flavia Moreira
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Olá pessoal.

Como eu estou mudando o meu blog para um site, então atualizei as informações.

Segue alguns artigos e vídeos sobre Silverlight.

Usando Javascript e Silverlight

http://www.dowhile.com.br/artigos/silverlight/63-usando-funcao-javascript-em-silverlight-.html

Usando e-mail e Webservice

http://www.dowhile.com.br/artigos/silverlight/60-enviando-e-mail-com-silverlight-parte-ii-.html

http://www.dowhile.com.br/artigos/silverlight/59-enviando-e-mail-com-silverlight-parte-i-.html

Usando linq to sql

http://www.dowhile.com.br/artigos/silverlight/58-populando-datagrid-usando-linq-to-sql-em-silverlight-parte-ii.html

http://www.dowhile.com.br/artigos/silverlight/57-populando-datagrid-usando-linq-to-sql-em-silverlight-parte-i.html

vídeo

Usando Javascript e Silverlight

http://www.dowhile.com.br/videos/silverlight/64-acessando-metodo-csharp-pelo-javascript.html

Abraços

Flávia Moreira

http://www.dowhile.com.br

Nov 10

Terça Insana Mega Post: Um Post, um Screencast, dois componentes e um Podcast

Escrito por DClick Team em 1, 2009, 4, 6, AR, Access, Apresentação, Componente, Componentes, DataGrid, Download, Flex, Flex Components, FullScreen, IE, O, Ria’s Geral, Screencast, Sun, TAT, Terça Insana, Twitter, UI, Vários, app, arte, class, control, flash, for, html, int, interface, itemRenderer, on, podcast, pt, screen, swf, tag, tv, wave @ 11 10th, 2009 | via http://blog.dclick.com.br/pt/ | Sem comentários
DClick Team
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Twitter!

Resolvi repetir a dose. E aqui estou eu novamente para mais um Terça Insana Megapost.

Componente ValidatorGroup: Use apenas um validador para mais de um controle de interface.

[kml_flashembed movie="/sources/validationGroup/ValidationGroup.swf" width="496" height="190"/]
Download do ValidatorGroup

HTMLTextItemRenderer: Use um ItemRenderer super leve para formatação “avançada” de uma célula no DataGrid

[kml_flashembed movie="/sources/htmlRenderer/HTMLTextItemRendererSample.swf" width="496" height="264"/]
Download do HTMLTextItemRenderer

Screencast 2 em 1: Entenda os dois componentes em apenas 5 minutos.





Podcast: Podcast baseado numa “reunião/apresentação” sobre componentetização e vários assuntos “avançados” de Flex na DClick. Neste Podcast a Parte I da reunião com foco em componentização e performance no front-end



Download do Podcast


http://www.becklog.org/wp-content/uploads/2009/reuniao-parte1.mp3

Nov 6

Alguns artigos sobre silverlight

Escrito por Flavia Moreira em Asp.Net, Blend, Blend 3, C#, Controles, DataGrid, Expression Blend, Javascript, Microsoft, Microsoft Blend, Microsoft Silverlight, Silverlight 2, Silverlight 3, Tutoriais, Visual Studio, Visual Studio 2008, WCF, WPF, Xna, blog, blog silverlight, blogsilverlight, player, silverlight, site @ 11 6th, 2009 | via http://flamoreira.wordpress.com | 1 comentário
Flavia Moreira
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Olá amigos

Adicionei mais artigos no dowhile usando o Silverlight 3 com visual Studio 2010 Beta 2.

1     Populando Datagrid usando LINQ TO SQL em Silverlight Parte II
2     Populando Datagrid usando LINQ TO SQL em Silverlight Parte I
3     Vídeo Player em Silverlight Visual Studio 2010 – Parte II
4     Primeira Aplicação em Silverlight
5     Vídeo Player em Silverlight – Visual Studio 2010 Parte I
6     Introdução ao Microsoft Blend 3

Para acesso a todos estes conteúdos acessem:

dowhile

abraços,

Flávia Moreira

Jul 27

Datagrid grátis :)

Escrito por rene em DataGrid, gratuito, grátis, line of business, silverlight, visualizacao @ 07 27th, 2009 | via http://blogs.msdn.com/renedepaula/ | Sem comentários
rene
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

  com o Silverlight 3 estão pipocando coisas legais, prontas e gratuitas pra você fazer aplicações bacanas.  veja o que "vem" com esse DataGrid: Data Grouping against multiple Silverlight Grid columns Data Sorting against multiple…(read more)

« Entradas anteriores |

pussytube
scat orgy tube 8
Spankingtube
japanese tits tube
http://freerepresentationunit.org.uk/intranet/skins/p141x.php
classic tube porn
http://freerepresentationunit.org.uk/intranet/skins/p227x.php
home made movies tube
rude tube
porn tube list
http://freerepresentationunit.org.uk/intranet/skins/p17x.php
3d porn movie
grand tunica casino andmw
Rawtube365
http://freerepresentationunit.org.uk/intranet/skins/p13x.php
free gay tube porn
you tube red tube
zootube.co.uk
panty pissing xtube
xxnxxx
http://freerepresentationunit.org.uk/intranet/skins/p125x.php
Poohtube
pantypissing xtube
japan porn tube
free sex tubes
http://freerepresentationunit.org.uk/intranet/skins/p73x.php
Http://freerepresentationunit.org.uk/intranet/skins/p206x.php
5 MPIX TUBE
Tube8.com
treetubes
hot tub cover lifters
red tube .com
Zoosex tube 365
Beach tube
redtube porn
zootube365 shockingtube
Milf cunt tubes
http://freerepresentationunit.org.uk/intranet/skins/p186x.php
tuberculosis bacterium
http://freerepresentationunit.org.uk/intranet/skins/p220x.php
3d porn tube
Http://freerepresentationunit.org.uk/intranet/skins/p77x.php
mammothtubes
Http://freerepresentationunit.org.uk/intranet/skins/p45x.php
uporntube
toutube porn
animaal sex tube
Http://freerepresentationunit.org.uk/intranet/skins/p46x.php
lubeyourtube.net
porn tube sites
xxx teen tube movies
bisexual blue tube
sex tube
http://freerepresentationunit.org.uk/intranet/skins/p1x.php
Hq.tube
porn search tube
porn utube8
Anonymous red tube
porn tube8
http://freerepresentationunit.org.uk/intranet/skins/p149x.php
Http://freerepresentationunit.org.uk/intranet/skins/p95x.php
piratebay porn porn
zoosex tube
x tube wanking cumming
asian porn tube
http://freerepresentationunit.org.uk/intranet/skins/p166x.php
tube works blue tube
adult tube online tv ksex m90 porn tube
pornotubes
Free beast tube horse cum pussy
SHOCKINGTUBE.COM
Http://freerepresentationunit.org.uk/intranet/skins/p190x.php
http://freerepresentationunit.org.uk/intranet/skins/p192x.php
http://freerepresentationunit.org.uk/intranet/skins/p42x.php
http://freerepresentationunit.org.uk/intranet/skins/p135x.php
my mature tubes
tubes first
animal tube porn
www.bootytube247.com
lesbian porn tubes
Studded tubes
http://freerepresentationunit.org.uk/intranet/skins/p19x.php
teen lesbian tube video free
lobster tube porn
redt ube
25v clamping gas tube
free porn tube8
Fun fun fun games
the boob tube
peg tube feeding
http://freerepresentationunit.org.uk/intranet/skins/p194x.php
pornhub.net
gexo xtube
Tubegals
http://freerepresentationunit.org.uk/intranet/skins/p7x.php
teens redtube
http://freerepresentationunit.org.uk/intranet/skins/p109x.php
8tube porn
pinktube.com
http://freerepresentationunit.org.uk/intranet/skins/p177x.php
http://freerepresentationunit.org.uk/intranet/skins/p75x.php
wwwredtubecom
Tube teens
gay beastiality tube
free web tube porn
tubeyou
zuh zuh pets
shush tube.com
Sextube videos
animals bestiality tube
bbw porn tube videos
sex tube
TEEN TUBES
hq tube videos
poh tube
xtube
huge boob tube
dog sex tube
Bang tube.com
hand stand mixers
college porn tube
http://freerepresentationunit.org.uk/intranet/skins/p152x.php
big boob tube
Http://freerepresentationunit.org.uk/intranet/skins/p102x.php
Http://freerepresentationunit.org.uk/intranet/skins/p196x.php
petittube
filthtube.com
Gaytubevideos.com
inner tube
footfetishtube.com
beach sex tube
Twinksxtubeporn
http://freerepresentationunit.org.uk/intranet/skins/p200x.php
bbw porn tube
crazymaturetube
porn zoo
amateur porn tubes
fucktube.com
mature xxx tube
beasttube
mature redtube
porn tube
Http://freerepresentationunit.org.uk/intranet/skins/p231x.php
xtube berlin toilette
pornotube.com acount
Free driver education videos
Dudetubeonline
Http://freerepresentationunit.org.uk/intranet/skins/p76x.php
utube sex
Redtube.eu
yutube glasba
kick boxing
Http://freerepresentationunit.org.uk/intranet/skins/p26x.php
Http://freerepresentationunit.org.uk/intranet/skins/p172x.php
tubesfirst red tubecom
http://freerepresentationunit.org.uk/intranet/skins/p179x.php
http://freerepresentationunit.org.uk/intranet/skins/p136x.php
www.tube8
feels good tony toni tone
nudetubes
Yoytube
Hot tubes
PORN TUBE
tiavas tubes
Dirtyporn tube
file tube
http://freerepresentationunit.org.uk/intranet/skins/p246x.php
rockettube doctor
nudisten tube
College girl tube
sextube.com
all porn tubes
ssbbw tube movies
Tube teen
gas detection tube
lubetube com
tube365.com
redtubes
http://freerepresentationunit.org.uk/intranet/skins/p38x.php
dance xtube
hqtube.com
xtube comming soon
yotube com
fk tube
crocotube category
http://freerepresentationunit.org.uk/intranet/skins/p199x.php
zhu zhu pet accessories
rapetube
zoo tube 365 password
http://freerepresentationunit.org.uk/intranet/skins/p74x.php
zoo tube 365.com
hamsters free porn videos
sexy youtube
Yuvu tube
Crush fetish tube
Hot blonde having sex
psp sexy tubes
free extreme sex movies
Rtube
http://freerepresentationunit.org.uk/intranet/skins/p162x.php
Red tube videos
mom boy tube
porn bloopers tube
4tube.com
big natural tube
black lesbian tubes
redtube.co.uk
Bangtubecom
gay men sex videos
Xxx tube videos
beast tube
xxx sex tube 365
tubed porn
Free tube porn
hardcore porn tube
http://freerepresentationunit.org.uk/intranet/skins/p165x.php
pornoytube
Http://freerepresentationunit.org.uk/intranet/skins/p167x.php
jiss tube
retro porn tube search
sexy sex
yu tube sexs
http://freerepresentationunit.org.uk/intranet/skins/p78x.php
brazzerstube.com
sexytubesite
free porn tube red hub
animal sex tube video
solar bubble tube
http://freerepresentationunit.org.uk/intranet/skins/p50x.php
One tube oscillators
japanesetube
BEACH TUBE
nudetube
NUDETUBES
tubered.com
Incest redtube
free psp tubes adult
best free porn tubes
http://freerepresentationunit.org.uk/intranet/skins/p49x.php
FETISHTUBE
lolita tubes
Tube tops
youtube morrocan videos
Bestiality zootube 365
dog cum tube
xxx tube
Red tube4
best vacuum tubes
eskimotube.com
free gay sex tube
swanktube
redtube.comm

ACERCA

O que é o RedeRIA ?

O redeRIA não é nada mais que um agregador de feed's que disponibiliza o conteudo de varios blogs e autores ao redor do mundo RIA, actualmente agregamos mais de 1412 entradas vindas de 40 blogs especializados em ria’s, pelo que só fica a ganhar em assinar o feed ou seguir a comunidade no twitter.

Se acha que o seu blog ou um blog de um amigo é interessante e util para os leitores o redeRIA, faça a sua submissão aqui.

Feed: assine já
Twitter: siga-nos
Versão Mobile: aceda aqui

GOOGLE

Votação


Deveria o redeRIA organizar algum evento sobre RIA's ?? Sobre quais plataformas?
Ver Resultados

AUTORES


Eduardo KrausAlexandreBindableDaniel LopesDClick TeamEbercomEdgard DavidsonElvis FernandesFabiel PrestesFábio Batista da SilvaFabio da SilvaFlavia MoreiraGabriela T. PerryIgor MusardoJanderson CardosoJose Carlos FielKelps SousaLeonardo FrançaLucas MarçalMario JuniorMário SantosMauro MartinsPedro ClaudioreneRia BrazilriaPTRicardo CerqueiraRobson FernandesRodrigo Pereira FragaSaintBrSergio SouzaSilva DeveloperStefan HorochovecTech CaffeTecinforThiago BuenoVedVinícius SandimXAML Cast

PUBLICIDADE








Powered by Wordpress & msdevstudio.com