Ir para o conteúdo
ou

Software livre Brasil

Minha rede

 Voltar a Planeta do A...
Tela cheia Sugerir um artigo

Sérgio Berlotto - Site Pessoal : ExtJS – Mão na massa

18 de Março de 2010, 0:00 , por Software Livre Brasil - 0sem comentários ainda | Ninguém está seguindo este artigo ainda.
Visualizado 1290 vezes

Então, já conhecemos o Ext, e agora vamos botar a mão na massa !

Com um exemplo bem simples, podemos entender melhor como montar nossas paginas em Ext

Vamos iniciar com o Download do pacote do Ext:
Vá em extjs.com e clique no icone de “ExtJS for web developers”
Atualmente, a versão 3.1.1 é a que está disponivel.

Download do ExtJS 3.1.1

Ah, para saberem, o ExtJS pode trabalhar em conjunto com mais algumas bibliotecas JS como: JQuery, Yahoo, Prototype e Scriptacuolus, porém eu nunca o utilizei desta forma.

Do Ext vamos precisar basicamente de 3 arquivos (veja o arquivo ./ext-3.1.1/INCLUDE_ORDER.txt) que serão referenciados na nossa pagina :
./ext-3.1.1/adapter/ext/ext-base.js
./ext-3.1.1/ext-all.js
./ext-3.1.1/resources/css/ext-all.css

Com o ext, podemos trocar o tema de cores das janelas e componentes, e no pacote padrão temos 3 temas, que se acrescentados depois do arquivo ext-all.css, funciona corretamente, alterando as cores.
./ext-3.1.1/resources/css/xtheme-access.css
./ext-3.1.1/resources/css/xtheme-blue.css
./ext-3.1.1/resources/css/xtheme-gray.css

E no fórum, pode-se achar mais alguma tema ou outro !

Bom, geralmente, eu tenho trabalhado com os JS separados do arquivo html, bem como os CSS, podendo assim reutilizar muitas coisas.
Então, vamos fazer assim também nossos exemplos.

Como o Ext faz todo o trabalho sujo de detectar o browser, ajustar coisas, resolver bugs de css e etc, então não precisamos nos preocupar com nada disto, e trabalhar como se montássemos uma simples interface em GTK ou QT por exemplo. Ok !

Vou colocar um exmplo simples abaixo, e depois vou explicar o que codifiquei:

Arquivo: index.html

[html]
    [head]
        [meta http-equiv="Content-Type" content="text/html; charset=utf-8" /]
        [title id='title']Ext HTML Sample[/title]

        
        

        

        
        
        < script src="http://moonmoon.archlinux-br.org//ext-3.1.1/adapter/ext/ext-base.js" type="text/javascript" >< /script >
        
        < script src="http://moonmoon.archlinux-br.org//ext-3.1.1/ext-all.js" type="text/javascript" >

        
        < script src="http://moonmoon.archlinux-br.org//index.js" type="text/javascript" >
    [/head]
    [body]
		 
    [/body]
[/html]


Arquivo: index.js

Ext.onReady(function(){
	Ext.ns("Index");

	Index.init = function(){

		win = new Ext.Window({
			layout:'fit',
			width:500,
			height:300,
			closeAction:'hide',
			plain: true,
			title: 'Janela de Exemplo - berlotto.blog.br',

			items: new Ext.TabPanel({
				activeTab:0,
				deferredRender:false,
				border:false,
				items:[{
					xtype: 'form',
					id: 'tabOne',
					title: 'Tab Um',
					bodyStyle: 'padding: 6px',
					items: [{
						xtype: 'textfield',
						id: 'txtCampoTabOne',
						fieldLabel: 'Campo 1'
					}]
				},{
					xtype: 'form',
					id: 'tabTwo',
					title: 'Tab Dois',
					//bodyStyle: 'padding: 6px',
					items: [{
						xtype: 'numberfield',
						id: 'txtCampoTabTwo',
						fieldLabel: 'Campo 2'
					}]
				}]
			}),

			buttons: [{
				text:'Enviar',
				handler: function(){
					Ext.Msg.alert('Exemplo ExtJS', 'Dados salvos com sucesso!');
				}
			},{
				text: 'Fechar',
				handler: function(){
					win.hide();
				}
			}]
		});

		win.show();

	};

	Index.init();

}); //end onReady

O que ocorre ? Vamos por parte, como diria Jack:
1.
Ext.onReady(function(){ …
Este é um evento do ext que é chamado quando ele for corretamente inicializado, e em 99% dos casos, os nossos codigos do Ext estará dentro deste método, garantindo que o FW estará carragado e OK para funcionar.

2.
Ext.ns(“Index”);
Definimos nosso Namespace, como detalhado no post anterior.

3.
Index.init = function(){ …
Dentro do nosso namespace chamado “Index”, criamos um objeto chamado “init”, que por sua fez recebeu uma function. Então agora temos uma nova função que pode ser chamada com: Index.init(), como visto no final no nosso arquivo index.js

4.
Conteúdo da nossa página ! O Ext tem vários tipos de componentes/widgets, e para que possamos utilizar temos que adicioná-los em um Container, que neste caso é nossa janela ( Ext.Window ). Os containers do Ext podem ser por exemplo: Ext.BoxComponent, Ext.Panel, Ext.Window, Ext.form.FormPanel, Ext.Toolbar, entre outros.

5.
Cada widgets tem suas propriedades e características, no Ext, temos uma imensidão de objetos que podemnos utilizar nas nossas aplicações, e com o que temos hoje, podemos criar muita coisa, sem ter que customizar nada mesmo, ou utilizar widgets criados pela comunidade ! Mas tem uma priedade especial: xtype.
O que ela faz ? Ela indica qual o tipo de objeto que será criado, assim:
Foi dito que no ext um Ext.form.FormPanel também é conhecido por “form”, OK !
Então quando criamos, no nosso exemplo, o nosso TabPanel, dentro da Window, dissemos que os items deste TabPanel são dois forms, porém você não vê um “new Ext.form.FormPanel” ali, você vê um “xtype: ‘form’” correto ? Sim, isto funciona, pois já temos um “new” acontecendo no objeto pai, então quando ele encontrar alguns objetos JSON com a propriedade xtype definida, ele tentará dar um new no respectivo objeto, conforme podemos ver neste link da documentação:
http://www.extjs.com/deploy/dev/docs/?class=Ext.Component

6.
Nestes mesmos dois forms que foram criados, temos a propriedade “bodyStyle”, 1 comentada e a outra não, para que vocês vejam, que apenas um pouquinho de conhecimento de CSS poderemos alterar alguns detalhes interessantes nos nossos widgets. Esta é apenas 1 das formas de se fazer isto.

7.
Neste exemplo, eu coloquei dois botões na janela e em um deles, coloquei uma mensagem de sucesso, porém não faz nada além de mostrar a mensagem, como podemos ver. E como geralmente gostamos de mostrar mensagens para ver se algum evento ou objeto está funcionando corretamente, nada mais justo que utilizar o proprio ext para isto neh !
Ah, detalhe: Nada no Ext é SINCRONO, ou seja, tudo é chamado, e nada fica trancado aguardando retorno, como as chamadas Ajax, esta chamada para a MessageBox mesmo, a chamada daquele “win.show()”, etc… é tudo ASINCRONO. Lembre sempre disto. Porém o Ext tem algumas ferramentas que nos ajudam quando precisamos montar algumas chamadas mais criticas, que necessitam ser ordenadas ( ver: http://www.extjs.com/deploy/dev/docs/?class=Function ).

Bom, acho que já ficou bem grandinha esta aula, então façam assim: olhem na documentação, as propriedades, eventos e métodos que estes componentes, por nós utilizados, tem e façam suas alterações e testes, nesta mesma tela. E voltem aqui para deixar suas perguntas, caso fiquem com alguma duvida. Ok !

PS.: Desculpem a codificação do index.html, pois não mostrou corretamente o codigo aqui no blog, então tive que alterar as tags.
codigo-ext-js (0)


Fonte: http://www.berlotto.blog.br/post/extjs-mao-na-massa/

0sem comentários ainda

Enviar um comentário

Os campos são obrigatórios.

Se você é um usuário registrado, pode se identificar e ser reconhecido automaticamente.