<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Raphael Monroe.com &#187; Tutoriais</title>
	<atom:link href="http://www.raphaelmonroe.com/category/tutoriais/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.raphaelmonroe.com</link>
	<description>Blog de novidades em tecnologia, web, games e muito mais!</description>
	<lastBuildDate>Thu, 22 Apr 2010 11:20:47 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Como criar repeating views no Wicket</title>
		<link>http://www.raphaelmonroe.com/tutoriais/como-criar-repeating-views-no-wicket/</link>
		<comments>http://www.raphaelmonroe.com/tutoriais/como-criar-repeating-views-no-wicket/#comments</comments>
		<pubDate>Tue, 20 Apr 2010 17:41:14 +0000</pubDate>
		<dc:creator>Raphael Monroe</dc:creator>
				<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[Wicket]]></category>
		<category><![CDATA[banco de dados]]></category>
		<category><![CDATA[dataview]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[tabelas]]></category>

		<guid isPermaLink="false">http://www.raphaelmonroe.com/?p=1098</guid>
		<description><![CDATA[Muitas vezes desejamos criar uma tabela/lista para melhor visualizarmos informações relevantes para nosso negócio. Seja via banco de dados, seja via listas criadas dinamicamente, podemos construir facilmente essas tabelas utilizando o Wicket.

Portanto, nosso artigo de hoje mostrará como uma tarefa relativamente custosa em alguns frameworks, se torna de fácil execução ao desenvolvermos com o Wicket.]]></description>
			<content:encoded><![CDATA[<p>Muitas vezes desejamos criar uma tabela/lista para melhor visualizarmos informações relevantes para nosso negócio. Seja via <a href="http://www.raphaelmonroe.com/tag/banco-de-dados/">banco de dados</a>, seja via listas criadas dinamicamente, podemos construir facilmente essas tabelas utilizando o <a href="http://www.raphaelmonroe.com/category/tutoriais/wicket/">Wicket</a>.</p>
<p>Portanto, nosso artigo de hoje mostrará como uma tarefa relativamente custosa em alguns <a href="http://www.raphaelmonroe.com/tag/framework">frameworks</a>, se torna de fácil execução ao desenvolvermos com o Wicket.</p>
<p><span id="more-1098"></span></p>
<p>Imaginemos então, a simples situação:</p>
<p><strong>Uma empresa possui uma base de dados na qual grava informações a respeito de seus clientes. Há a necessidade de criar uma interface web para listagem de todos os clientes da base.</strong></p>
<p>Para isso, consideramos a classe Cliente, como segue:</p>
<p><strong>Client.java</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>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
</pre></td><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Client <span style="color: #000000; font-weight: bold;">implements</span> <span style="color: #003399;">Serializable</span> <span style="color: #009900;">&#123;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #003399;">String</span> name<span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #003399;">String</span> gender<span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000066; font-weight: bold;">int</span> age<span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> Client<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> name, <span style="color: #003399;">String</span> gender, <span style="color: #000066; font-weight: bold;">int</span> age<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">name</span> <span style="color: #339933;">=</span> name<span style="color: #339933;">;</span>
        <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">gender</span> <span style="color: #339933;">=</span> gender<span style="color: #339933;">;</span>
        <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">age</span> <span style="color: #339933;">=</span> age<span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>  
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">int</span> getAge<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">return</span> age<span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> setAge<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> age<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">age</span> <span style="color: #339933;">=</span> age<span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #003399;">String</span> getGender<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">return</span> gender<span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> setGender<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> gender<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">gender</span> <span style="color: #339933;">=</span> gender<span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #003399;">String</span> getName<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">return</span> name<span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> setName<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> name<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">name</span> <span style="color: #339933;">=</span> name<span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>A lógica de execução do nosso &#8220;aplicativo&#8221; estará dentro do nosso index, como segue:</p>
<p><strong>Jindex.java</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>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
</pre></td><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">final</span> <span style="color: #000000; font-weight: bold;">class</span> JIndex <span style="color: #000000; font-weight: bold;">extends</span> WebPage <span style="color: #009900;">&#123;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">private</span> List<span style="color: #339933;">&lt;</span>Client<span style="color: #339933;">&gt;</span> clients<span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> JIndex<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">super</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        clients <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> ArrayList<span style="color: #339933;">&lt;</span>Client<span style="color: #339933;">&gt;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        loadClients<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        fillTable<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #008000; font-style: italic; font-weight: bold;">/**
     * Responsável por preencher uma lista de objetos Cliente.
     * Normalmente, essa lista é formada por objetos do BD. No nosso exemplo,
     * preencheremos livremente.
     */</span>
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000066; font-weight: bold;">void</span> loadClients<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #666666; font-style: italic;">//Adicionando 4 clientes à lista...</span>
        clients.<span style="color: #006633;">add</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> Client<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Raphael&quot;</span>, <span style="color: #0000ff;">&quot;male&quot;</span>, <span style="color: #cc66cc;">23</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        clients.<span style="color: #006633;">add</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> Client<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Adriana&quot;</span>, <span style="color: #0000ff;">&quot;female&quot;</span>, <span style="color: #cc66cc;">23</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        clients.<span style="color: #006633;">add</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> Client<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Romualdo&quot;</span>, <span style="color: #0000ff;">&quot;male&quot;</span>, <span style="color: #cc66cc;">42</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        clients.<span style="color: #006633;">add</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> Client<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Josefina&quot;</span>, <span style="color: #0000ff;">&quot;female&quot;</span>, <span style="color: #cc66cc;">37</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #008000; font-style: italic; font-weight: bold;">/**
     * Responsável por criar o dataview utilizando elementos de uma lista.
     * No caso a lista antes preenchida &quot;clients&quot;.
     */</span>
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000066; font-weight: bold;">void</span> fillTable<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #666666; font-style: italic;">//Cria um dataview com id &quot;clientsList&quot;, recebendo os elementos de clients...</span>
        DataView dataview <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> DataView<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;clientsList&quot;</span>, <span style="color: #000000; font-weight: bold;">new</span> ListDataProvider<span style="color: #009900;">&#40;</span>clients<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
&nbsp;
            @Override
            <span style="color: #000000; font-weight: bold;">protected</span> <span style="color: #000066; font-weight: bold;">void</span> populateItem<span style="color: #009900;">&#40;</span>Item item<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                <span style="color: #666666; font-style: italic;">//Objeto client que será representado por cada linha...</span>
                Client client <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>Client<span style="color: #009900;">&#41;</span> item.<span style="color: #006633;">getModelObject</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                <span style="color: #666666; font-style: italic;">//Insere na linha o nome do cliente...</span>
                item.<span style="color: #006633;">add</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Label</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;clientName&quot;</span>, client.<span style="color: #006633;">getName</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                <span style="color: #666666; font-style: italic;">//Insere na linha o sexo do cliente...</span>
                item.<span style="color: #006633;">add</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Label</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;clientGender&quot;</span>, client.<span style="color: #006633;">getGender</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                <span style="color: #666666; font-style: italic;">//Insere na linha a idade do cliente...</span>
                item.<span style="color: #006633;">add</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Label</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;clientAge&quot;</span>, <span style="color: #003399;">String</span>.<span style="color: #006633;">valueOf</span><span style="color: #009900;">&#40;</span>client.<span style="color: #006633;">getAge</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span>
&nbsp;
        <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #666666; font-style: italic;">//Adiciona o dataview à webpage...</span>
        add<span style="color: #009900;">&#40;</span>dataview<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>No Wicket, quando criamos uma classe ( que herda de WebPage ), devemos criar o html correspondente. Caso ainda não saiba os conceitos principais sobre o framework, acesse o artigo &#8220;<a href="http://www.raphaelmonroe.com/tutoriais/bem-vindoa-ao-wicket-framework-java-web/">Bem-vindo(a) ao Wicket &#8211; Framework Java WEB</a>&#8220;.</p>
<p>Segue o html correspondente:</p>
<p><strong>JIndex.html</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
</pre></td><td class="code"><pre class="html" style="font-family:monospace;">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html xmlns:wicket=&quot;http://wicket.apache.org&quot;&gt;
    &lt;head&gt;
        &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=UTF-8&quot;/&gt;
        &lt;title&gt;Teste Dataview&lt;/title&gt;
        &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;style.css&quot;/&gt;
    &lt;/head&gt;
    &lt;body&gt;
        &lt;table&gt;
            &lt;tr&gt;
                &lt;th&gt;Name&lt;/th&gt;
                &lt;th&gt;Gender&lt;/th&gt;
                &lt;th&gt;Age&lt;/th&gt;
            &lt;/tr&gt;
            &lt;tr wicket:id=&quot;clientsList&quot;&gt;
                &lt;td&gt;&lt;span wicket:id=&quot;clientName&quot; /&gt;&lt;/td&gt;
                &lt;td&gt;&lt;span wicket:id=&quot;clientGender&quot; /&gt;&lt;/td&gt;
                &lt;td&gt;&lt;span wicket:id=&quot;clientAge&quot; /&gt;&lt;/td&gt;
            &lt;/tr&gt;
        &lt;/table&gt;
    &lt;/body&gt;
&lt;/html&gt;</pre></td></tr></table></div>

<p>Repare nas linhas <strong>16,17,18,19</strong>. É nelas que referenciamos nossos componentes adicionados no .java. Além disso, atente-se para os tipos de tags html usados, isto é, referenciamos o dataview na tag <em>tr</em>(linha) e os Labels dentro das <em>td</em>&#8217;s (colunas) através da tag <em>span</em>.</p>
<p>Basta rodar agora a sua aplicação para conferir o resultado. Lembrando que para o <em> JIndex</em> seja chamado na execução do programa, devemos possuir o <em>Application</em> conforme segue:</p>
<p><strong>JApplication.java</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> JApplication <span style="color: #000000; font-weight: bold;">extends</span> WebApplication<span style="color: #009900;">&#123;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">Class</span> getHomePage<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">return</span> JIndex.<span style="color: #000000; font-weight: bold;">class</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Não esqueça de deixar seu comentário em caso de dúvida!</p>
<p>[]s</p>
]]></content:encoded>
			<wfw:commentRss>http://www.raphaelmonroe.com/tutoriais/como-criar-repeating-views-no-wicket/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Bem-vindo(a) ao Wicket: Framework JAVA Web.</title>
		<link>http://www.raphaelmonroe.com/tutoriais/bem-vindoa-ao-wicket-framework-java-web/</link>
		<comments>http://www.raphaelmonroe.com/tutoriais/bem-vindoa-ao-wicket-framework-java-web/#comments</comments>
		<pubDate>Wed, 14 Oct 2009 22:08:19 +0000</pubDate>
		<dc:creator>Raphael Monroe</dc:creator>
				<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[Wicket]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.raphaelmonroe.com/?p=440</guid>
		<description><![CDATA[Inicio aqui, uma série de tutoriais sobre o Wicket, este maravilhoso framework com o qual venho tendo enorme prazer em trabalhar. Fornecendo incríveis facilidades para o desenvolvimento Web em JAVA, o Wicket vem se tornando um dos melhores da categoria.
Minha idéia é seguir a linha de raciocínio que utilizei durante a minha aprendizagem. Entretanto, isso [...]]]></description>
			<content:encoded><![CDATA[<p>Inicio aqui, uma série de <a href="http://www.raphaelmonroe.com/tag/tutorial/">tutoriais</a> sobre o <a href="http://wicket.apache.org/">Wicket</a>, este maravilhoso framework com o qual venho tendo enorme prazer em trabalhar. Fornecendo incríveis facilidades para o desenvolvimento Web em JAVA, o Wicket vem se tornando um dos melhores da categoria.</p>
<p>Minha idéia é seguir a linha de raciocínio que utilizei durante a minha aprendizagem. Entretanto, isso não significa que sou um expert, intocável e mestre Wicket. Ainda estudo e aprendo dia após dia. Portanto, ao constatarem erros, fiquem à vontade para comentar sobre eles. Assim, juntos buscaremos sempre as melhores soluções.</p>
<p><span id="more-440"></span></p>
<p><a href="http://www.raphaelmonroe.com/tutoriais/bem-vindoa-ao-wicket-framework-java-web/attachment/apache-wicket/" rel="attachment wp-att-513"><img src="http://www.raphaelmonroe.com/wp-content/uploads/2009/10/apache-wicket.png" alt="apache-wicket" title="apache-wicket" width="590" height="70" class="alignleft size-full wp-image-513" style="border:1px solid #ccc;" /></a></p>
<p>A motivação inicial pra a série de tutoriais foi a falta de documentação, pois o Wicket é relativamente novo e, portanto, ainda carece de tutoriais, exemplos e discussões. Espero, com os artigos, difundir um pouco mais as informações sobre o <a href="http://www.raphaelmonroe.com/tag/framework/">framework</a> porque <cia do pagode> &#8220;tudo que é bonito é pra se mostrar&#8221; </cia do pagode>.</p>
<p>Pois bem, antes de fazermos uma breve introdução sobre o Wicket, gostaria de citar as referências mais utilizadas por desenvolvedores que utilizam o framework atualmente.</p>
<p><img src="http://www.raphaelmonroe.com/wp-content/uploads/2009/10/wicket-reference.png" alt="wicket-reference" title="wicket-reference" width="590" height="70" class="alignleft size-full wp-image-498" style="border:1px solid #ccc;"/></p>
<p><strong><a href="http://wicket.apache.org/">Apache Wicket</a></strong>: Site oficial do projeto. Apresenta introdução, documentação sobre alguns componentes e exemplos de utilização.</p>
<p><strong><a href="http://cwiki.apache.org/WICKET/reference-library.html">Reference Library</a></strong>: Pertence ao site oficial. Explica como fazer várias coisas com o Wicket. Uma boa pedida para os iniciantes. Vale a pena conferir.</p>
<p><strong><a href="http://wicketinaction.com/">Wicket in Action</a></strong>: Ótimo livro para quem deseja inicar os estudos. Apresenta uma boa didática. com vários exemplos. O autor vai, durante o livro, construindo um aplicativo para venda de queijos online. Com este exemplo, os leitores aprendem fácil e rapidamente os conceitos importantes do framework.</p>
<p><strong><a href="http://wicketstuff.org/confluence/display/STUFFWIKI/Wiki">Wicket Stuff</a></strong>: Possui exemplos e vários projetos relacionados ao Wicket. Podemos encontrar alguns bons componentes para utilizarmos em conjunto com o framework.</p>
<p><a href="http://www.raphaelmonroe.com/wp-content/uploads/2009/10/introduction-wicket.png"><img src="http://www.raphaelmonroe.com/wp-content/uploads/2009/10/introduction-wicket.png" alt="introduction-wicket" title="introduction-wicket" width="590" height="70" class="alignleft size-full wp-image-500" style="border:1px solid #ccc;"/></a></p>
<p>Atualmente, existem diversos frameworks para programação <a href="http://www.raphaelmonroe.com/tag/java/">JAVA</a> Web, cada qual possuindo prós e contras. Assim, no princípio de um novo projeto, vários programadores chegam a ficar um tanto quanto preocupados no momento da escolha do melhor framework, dadas as inúmeras alternativas, conforme podemos ver na figura a seguir:</p>
<p><center><div id="attachment_459" class="wp-caption aligncenter" style="width: 578px"><a href="http://www.raphaelmonroe.com/wp-content/uploads/2009/10/lista-frameworks.png"><img src="http://www.raphaelmonroe.com/wp-content/uploads/2009/10/lista-frameworks.png" alt="Figura 1: Frameworks Web" title="lista-frameworks" width="568" height="307" class="size-full wp-image-459" style="border:1px solid #ccc;" /></a><p class="wp-caption-text">Figura 1: Frameworks Web</p></div></center></p>
<p>Uma possível pergunta pode surgir: &#8220;Bom Raphael, se existem tantas opções, porque escolher o <a href="http://www.raphaelmonroe.com/tag/wicket/">Wicket</a>?&#8221;</p>
<p>Peço a permissão de responder essa pergunta explicando alguns termos como <em>stateful</em>, <em>stateless</em> e também sobre clareza de código e separação coerente entre os &#8220;dois mundos&#8221;, no caso, <a href="http://www.raphaelmonroe.com/tag/html/">HTML</a> e JAVA.</p>
<p><a href="http://www.raphaelmonroe.com/tutoriais/bem-vindoa-ao-wicket-framework-java-web/attachment/statefulprogamming/" rel="attachment wp-att-514"><img src="http://www.raphaelmonroe.com/wp-content/uploads/2009/10/statefulprogamming.png" alt="statefulprogamming" title="statefulprogamming" width="590" height="70" class="alignleft size-full wp-image-514" style="border:1px solid #ccc;"/></a></p>
<p>Creio que todos os interessados em programação já pararam pra pensar em como é fácil (leia-se menos difícil) se programar em Java, visando o desenvolvimento de aplicativos Desktop. A facilidade a que me refiro diz respeito ao controle de componentes/variáveis existentes no projeto. Podemos criar vários painéis/frames/modais sem a necessidade de controlar requisições entre elas. Isso porque, todo esse controle do estado da conexão é &#8220;automático&#8221;, ou seja, o estado da conexão é sempre mantido. Tal fato, caracteriza Statefull Programming.</p>
<p><a href="http://www.raphaelmonroe.com/wp-content/uploads/2009/10/statelessprotocol1.png"><img src="http://www.raphaelmonroe.com/wp-content/uploads/2009/10/statelessprotocol1.png" alt="statelessprotocol" title="statelessprotocol" width="590" height="70" class="alignleft size-full wp-image-509" style="border:1px solid #ccc;"/></a></p>
<p>Muitas vezes ao utilizarmos aplicações web, imaginamos que a programação é feita igualmente à Desktop. Ao contrário, o protocolo <a href="http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol">HTTP</a> não fornece nenhuma facilidade &#8220;embutida&#8221; para continuar interações entre as páginas, ou seja, ele não possui nenhuma informação sobre o estado da aplicação (stateless). Tal tarefa fica a cargo do desenvolvedor. </p>
<p>A técnica comumente utilizada para controlar o estado é passar informações diretamente pela URL, por exemplo:<br />
<em><code></p>
<p>http://www.raphaelmonroe.com/index.php?page_id=3&#038;opentab=5</p>
<p></code></em><br />
O simples código acima ilustra a passagem de parâmetros visando um controle da aplicação. No caso, foi solicitada a página com ID=3 e nela, deve-se abrir a aba 5.</p>
<p>Mas como tudo apresenta falhas, passar informações pela URL possui vários questionamentos à respeito de segurança/autenticação e, nos dias de hoje, é difícil imaginar uma aplicação web, na qual todos os estados são controlados por parâmetros no endereço.</p>
<p><a href="http://www.raphaelmonroe.com/wp-content/uploads/2009/10/jsfjavahtml.png"><img src="http://www.raphaelmonroe.com/wp-content/uploads/2009/10/jsfjavahtml.png" alt="jsfjavahtml" title="jsfjavahtml" width="590" height="70" class="alignleft size-full wp-image-493" style="border:1px solid #ccc;"/></a><br />
Creio que quase todos os desenvolvedores JAVA Web, iniciaram seus estudos e projetos (e ainda continuam) seguindo o caminho : Servlets, JSP, JSF, Facelets, RichFaces e por ae vai. Um dos motivos que levam os desenvolvedores para essa estrada, é a quantidade de informações/documentação/exemplos existentes na web. Evidencia-se aqui, um grande problema para os desenvolvedores : a falta de conhecimento teórico.</p>
<p>Em muitos fóruns que frequento, me deparo com inúmeras dúvidas que poderiam ser respondidas com um mínimo de conhecimento teórico. Assim, desenvolvedores vêm utilizando exemplos da net para &#8220;aplicações sérias&#8221; no âmbito corporativo, sem ao menos se preocuparem com o que estão fazendo,  &#8220;remendando&#8221; e &#8220;arresorvendo na gambiarra&#8221;, literalmente. Não estou aqui crucificando frameworks e/ou programadores, só estou alertando para o fato de que &#8220;teoria é preciso&#8221;.</p>
<p>Como falei em JSF, gostaria de indicar um dos melhores posts que já vi à respeito: &#8220;<a href="http://www.rponte.com.br/2009/01/19/o-que-todo-bom-desenvolvedor-jsf-deveria-saber/">O que todo bom desenvolvedor JSF deveria saber</a>&#8221;</p>
<p>Bom, mas porque falar em clareza de código? No site oficial do Wicket, encontramos a seguinte frase à respeito do desenvolvimento em JSP, tendo em vista a presença de código JAVA + HTML :</p>
<blockquote><p>JSP is by far the worst offender, allowing the embedding of Java code directly in web pages, but to some degree almost all of the frameworks from the list (except Tapestry) above introduce some kind of special syntax to your HTML code.</p></blockquote>
<p>A evolução das empresas de TI contribui para maiores &#8220;divisões&#8221; em projetos. A idéia de Webmasters, os quais faziam design, código, etc já está ultrapassada. Hoje, encontramos designers, coders, testers, dentre outros. Aqui, evidencia-se um importante requisito: organização e clareza em todas as partes do projeto, visto que muitas empresas até mesmo terceirizam serviços de design. Portanto, quanto maior a separação entre HTML + CSS e JAVA, maior o rendimento e sucesso de um projeto.</p>
<p><a href="http://www.raphaelmonroe.com/wp-content/uploads/2009/10/escolha-wicket.png"><img src="http://www.raphaelmonroe.com/wp-content/uploads/2009/10/escolha-wicket.png" alt="escolha-wicket" title="escolha-wicket" width="590" height="70" class="alignleft size-full wp-image-495" style="border:1px solid #ccc;"/></a></p>
<p>Ao se programar com o Wicket, você esquece que está desenvolvendo um aplicativo web. Isso porque o desenvolvedor está livre para programar em JAVA com todos os conceitos de orientação a objeto, o qual é stateful. Ou seja, você estará desenvolvendo componentes stateful para um ambiente stateless!! WTF!!!<br />
Essa é a grande &#8220;sacada&#8221; do Wicket. O controle do estado da aplicação é automático.</p>
<p>Um outro aspecto importantíssimo que me ajudou muito, é possibilidade de herança, tanto no JAVA quanto no HTML!!! Basta utilizarmos <a href="http://en.wikipedia.org/wiki/Namespace">namespaces</a> pré-definidos e compatíveis com xhtml. </p>
<p>Com o Wicket o controle é feito orientado à componentes e não à páginas. Tal fato visa facilitar os programadores desktop acostumados com o Swing e awt. Vale ressaltar também o fato de que você nunca verá &#8220;códigos lógicos&#8221; em páginas HTML, as quais apresentarão somente códigos estáticos, sendo a lógica totalmente desenvolvida em JAVA. Por exemplo, se você deseja imprimir na tela uma lista de clientes, basta o seguinte código HTML, ficando a definição do <em>dataview</em> para o código JAVA:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="html" style="font-family:monospace;">&lt;table&gt;
   &lt;tr wicket:id=&quot;clientsList&quot;&gt;
      &lt;td&gt;
         &lt;span wicket:id=”client_name” /&gt;
      &lt;/td&gt;
   &lt;/tr&gt;
&lt;/table&gt;</pre></td></tr></table></div>

<p>Para terminar e não deixar o post muito extenso, uma frase que resume bem os conceitos do Wicket, retirada do site oficial:</p>
<blockquote class="blockquote"><p>Wicket is all about simplicity. There are no configuration files to learn in Wicket. Wicket is a simple class library with a consistent approach to component structure. In Wicket, your web applications will more closely resemble a Swing application than a JSP application. If you know Java (and especially if you know Swing), you already know a lot about Wicket.</p></blockquote>
<p><em>&#8220;Wicket é simplicidade. Não é necessário aprender a criar arquivos de configuração (como aqueles imensos xml&#8217;s de outros frameworks, pois com o wicket é tudo automático). Wicket é uma biblioteca que permite uma programação muito próxima á programação por componentes, pois com este framework, sua aplicação será mais parecida com uma aplicação Swing do que uma mesma JSP. Se você conhece Java (especificamente o Swing), você já possui grande conhecimento sobre o Wicket.&#8221;</em></p>
<p>Em próximos posts, iniciaremos nossos estudos através de exemplos práticos, abordando desde a configuração da IDE até a criação de suas primeiras aplicações utilizando o Wicket. </p>
<p>Até Mais,</p>
<p>[]&#8217;s </p>
]]></content:encoded>
			<wfw:commentRss>http://www.raphaelmonroe.com/tutoriais/bem-vindoa-ao-wicket-framework-java-web/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Vídeo Tutorial Windows 7 &#8211; Detalhes Visuais e Funcionalidades</title>
		<link>http://www.raphaelmonroe.com/tutoriais/video-tutorial-windows-7-detalhes-visuais-e-funcionalidades/</link>
		<comments>http://www.raphaelmonroe.com/tutoriais/video-tutorial-windows-7-detalhes-visuais-e-funcionalidades/#comments</comments>
		<pubDate>Tue, 19 May 2009 22:21:19 +0000</pubDate>
		<dc:creator>Raphael Monroe</dc:creator>
				<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[windows 7]]></category>

		<guid isPermaLink="false">http://www.raphaelmonroe.com/?p=105</guid>
		<description><![CDATA[Boa tarde leitores,
Hoje, estou postando o seguinte vídeo tutorial, mostrando as novas funcionalidades do Windows 7. Tentei abordar as características pelas quais mais me interessei. Espero que através do vídeo, vocês tenham uma idéia sobre essa nova versão lançada recentemente pela Microsoft.

OBS: Essa versão instalada é a Release Candidate (RC) liberada pela Microsoft para livre [...]]]></description>
			<content:encoded><![CDATA[<p>Boa tarde leitores,</p>
<p>Hoje, estou postando o seguinte vídeo <a href="http://www.raphaelmonroe.com/tag/tutorial/" target="_blank">tutorial</a>, mostrando as novas funcionalidades do Windows 7. Tentei abordar as características pelas quais mais me interessei. Espero que através do vídeo, vocês tenham uma idéia sobre essa nova versão lançada recentemente pela Microsoft.</p>
<p><span id="more-105"></span></p>
<p><strong>OBS:</strong> Essa versão instalada é a Release Candidate (RC) liberada pela Microsoft para livre download.</p>
<p><center><object width="425" height="344" data="http://www.youtube.com/v/8VAJlV_dTZM&amp;hl=pt-br&amp;fs=1" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/8VAJlV_dTZM&amp;hl=pt-br&amp;fs=1" /><param name="allowfullscreen" value="true" /></object></center></p>
]]></content:encoded>
			<wfw:commentRss>http://www.raphaelmonroe.com/tutoriais/video-tutorial-windows-7-detalhes-visuais-e-funcionalidades/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Tutorial PHP 5 &#8211; Construção de Layout &#8211; Parte 2</title>
		<link>http://www.raphaelmonroe.com/tutoriais/tutorial-php-5-construcao-de-layout-parte-2/</link>
		<comments>http://www.raphaelmonroe.com/tutoriais/tutorial-php-5-construcao-de-layout-parte-2/#comments</comments>
		<pubDate>Sun, 01 Jun 2008 23:45:20 +0000</pubDate>
		<dc:creator>Raphael Monroe</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[layout]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.raphaelmonroe.com/?p=181</guid>
		<description><![CDATA[Requisitos: Artigo &#8220;Tutorial PHP5 &#8211; Construção de Layout&#8220;.
Olá pessoal,
Seguindo com nosso tutorial de criação de layouts utilizando o php 5, iremos criar a classe &#8220;header&#8221;, a qual será responsável pela criação do cabeçalho do site(topo,imagem do topo, título e descrição).
Utilizarei CSS para o design. Se surgir alguma dúvida a respeito das regras utilizadas, poste seu [...]]]></description>
			<content:encoded><![CDATA[<p>Requisitos: Artigo &#8220;<a href="http://www.raphaelmonroe.com/tutoriais/tutorial-php-5-construcao-de-layout/" target="_blank">Tutorial PHP5 &#8211; Construção de Layout</a>&#8220;.</p>
<p>Olá pessoal,</p>
<p>Seguindo com nosso <a href="http://www.raphaelmonroe.com/tag/tutorial/">tutorial</a> de criação de <a href="http://www.raphaelmonroe.com/tag/layout/">layouts</a> utilizando o php 5, iremos criar a classe &#8220;header&#8221;, a qual será responsável pela criação do cabeçalho do site(topo,imagem do topo, título e descrição).</p>
<p>Utilizarei CSS para o design. Se surgir alguma dúvida a respeito das regras utilizadas, poste seu comentário ou visite o site do <a href="http://www.maujor.com/index.php">maujor</a>. Lá, você encontrará diversos artigos relacionados à criação e utilização de regras css.</p>
<p><span id="more-181"></span></p>
<p>Vamos ao código comentado:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>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
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">&lt;style type=&quot;text/css&quot;&gt;
&lt;!--
&nbsp;
/* Regras CSS */ 
#tudo{
	background-color:#CCCCCC;
	width:800px;
	height:600px;
	float:left;	
}
&nbsp;
#topo{
	width:800px;
	height:100px;
	float:left;
	background-color:#FFFFFF;
	border:1px solid #000;
}
&nbsp;
&nbsp;
--&gt;
&lt;/style&gt;
&nbsp;
<span style="color: #000000; font-weight: bold;">&lt;?php</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//Criado por : Raphael Monroe Marcondes</span>
<span style="color: #666666; font-style: italic;">// BLOG : www.raphaelmonroe.com</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">class</span> head
<span style="color: #009900;">&#123;</span>
	<span style="color: #666666; font-style: italic;">//construtor da classe...</span>
	<span style="color: #000000; font-weight: bold;">function</span> __construct<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
	   <span style="color: #666666; font-style: italic;">//Chama a função de inclusão de início de código HTML...</span>
	   <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">inclui_HTML</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	   <span style="color: #666666; font-style: italic;">//Chama a função de criação do topo...</span>
	   <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">cria_topo</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	   <span style="color: #666666; font-style: italic;">//&quot;Fecha&quot; as tags HTML que foram abertas...</span>
	   <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">fecha_tags</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">function</span> inclui_HTML<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
	    <span style="color: #666666; font-style: italic;">//HTML...</span>
	   <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;&lt;!DOCTYPE html PUBLIC <span style="color: #000099; font-weight: bold;">\&quot;</span>-//W3C//DTD XHTML 1.0 Transitional//EN<span style="color: #000099; font-weight: bold;">\&quot;</span> <span style="color: #000099; font-weight: bold;">\&quot;</span>http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd<span style="color: #000099; font-weight: bold;">\&quot;</span>&gt;&quot;</span><span style="color: #339933;">;</span>
	   <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;&lt;html xmlns=<span style="color: #000099; font-weight: bold;">\&quot;</span>http://www.w3.org/1999/xhtml<span style="color: #000099; font-weight: bold;">\&quot;</span>&gt;&quot;</span><span style="color: #339933;">;</span>
	   <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;&lt;head&gt;&quot;</span><span style="color: #339933;">;</span>
	   <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;&lt;meta http-equiv=<span style="color: #000099; font-weight: bold;">\&quot;</span>Content-Type<span style="color: #000099; font-weight: bold;">\&quot;</span> content=<span style="color: #000099; font-weight: bold;">\&quot;</span>text/html; charset=iso-8859-1<span style="color: #000099; font-weight: bold;">\&quot;</span> /&gt;&quot;</span><span style="color: #339933;">;</span>
	   <span style="color: #666666; font-style: italic;">//Título da página (será melhorado posteriormente a forma de dar títulos á suas paginas)...</span>
	   <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;&lt;title&gt;MINHA PÁGINA&lt;/title&gt;&quot;</span><span style="color: #339933;">;</span>
	   <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;&lt;/head&gt;&quot;</span><span style="color: #339933;">;</span>
	   <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;&lt;body&gt;&quot;</span><span style="color: #339933;">;</span>	
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">function</span> cria_topo<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
	   <span style="color: #666666; font-style: italic;">//Cria dois boxes, um que engloba todo o site e o outro sendo o topo.</span>
	   <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;&lt;div id=<span style="color: #000099; font-weight: bold;">\&quot;</span>tudo<span style="color: #000099; font-weight: bold;">\&quot;</span>&gt;&quot;</span><span style="color: #339933;">;</span>
	   <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;&lt;div id=<span style="color: #000099; font-weight: bold;">\&quot;</span>topo<span style="color: #000099; font-weight: bold;">\&quot;</span>&gt;&lt;/div&gt;&quot;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">function</span> fecha_tags<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
	    <span style="color: #666666; font-style: italic;">//Fecha a a div &quot;tudo&quot;...</span>
	    <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;&lt;/div&gt;&quot;</span><span style="color: #339933;">;</span>
            <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;&lt;/body&gt;&quot;</span><span style="color: #339933;">;</span>
	    <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;&lt;/html&gt;&quot;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>	
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>Salve o código acima como &#8220;head.class.php&#8221;.<br />
Com essa nova classe, já podemos obter nossa primeira visualização de página!<br />
Basta criar o index:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>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
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
&nbsp;
<span style="color: #000088;">$index</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> index<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">class</span> index
<span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">function</span> __construct<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
	  <span style="color: #666666; font-style: italic;">//Inclui as classes necessárias...</span>
	  <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">inclui_classes</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	  <span style="color: #666666; font-style: italic;">//Criando a página index...</span>
	  <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">constroi_index</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">function</span> inclui_classes<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
	    <span style="color: #666666; font-style: italic;">//Incluindo a classe layout...</span>
	    <span style="color: #b1b100;">include_once</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;layout.class.php&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">function</span> constroi_index<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
	    <span style="color: #666666; font-style: italic;">//Criando uma nova página através de layout...</span>
	    <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">layout</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> layout<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>Salve o código acima como &#8220;index.php&#8221;.</p>
<p>Portanto, só para lembrá-los, até agora possuímos 3 arquivos : &#8220;layout.class.php&#8221;, &#8220;head.class.php&#8221; e &#8220;index.php&#8221;. </p>
<p>Basta agora, salvá-los na mesma pasta e abrir o index. Você obterá a primeira visualização da página!</p>
<p><strong>OBS:Para conseguir &#8220;rodar&#8221; o index sem erros, é necessário comentar, na classe &#8220;layout&#8221;, as linhas que incluem as classes que ainda não foram feitas, como por exemplo, &#8220;menu_nav.class.php&#8221;.</strong></p>
<p>Para facilitar, você pode <a href="http://www.raphaelmonroe.com/wp-content/uploads/2009/06/tutoriais-blog.rar">baixar</a> todas as classes(inclusive o &#8220;layout.class.php&#8221; com as linhas comentadas).<br />
Lembrando à todos que estou tentando ser o mais direto possível. Qualquer dúvida é só postar seu comentário!</p>
<p>[]`s</p>
]]></content:encoded>
			<wfw:commentRss>http://www.raphaelmonroe.com/tutoriais/tutorial-php-5-construcao-de-layout-parte-2/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Tutorial PHP 5 &#8211; Construção de Layout.</title>
		<link>http://www.raphaelmonroe.com/tutoriais/tutorial-php-5-construcao-de-layout/</link>
		<comments>http://www.raphaelmonroe.com/tutoriais/tutorial-php-5-construcao-de-layout/#comments</comments>
		<pubDate>Thu, 22 May 2008 21:14:17 +0000</pubDate>
		<dc:creator>Raphael Monroe</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[layout]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.raphaelmonroe.com/?p=115</guid>
		<description><![CDATA[Olá caros leitores,
Hoje abordarei como construir aplicações em php, utilizandoa idéia de classes e objetos.
Não vou, entretanto, abordar aspectos teóricos sobre classes e objetos nesse tutorial. Meu objetivo, neste primeiro tutorial da série, é mostrar os primeiros passos para construção de layouts utilizando orientação à objeto.
Então, mãos à obra!  Nosso &#8220;desenho final&#8221; será um [...]]]></description>
			<content:encoded><![CDATA[<p>Olá caros leitores,</p>
<p>Hoje abordarei como construir aplicações em <a href="http://www.raphaelmonroe.com/tag/php/" target="_blank">php</a>, utilizandoa idéia de classes e objetos.</p>
<p>Não vou, entretanto, abordar aspectos teóricos sobre classes e objetos nesse tutorial. Meu objetivo, neste primeiro <a href="http://www.raphaelmonroe.com/tag/tutorial/" target="_blank">tutorial</a> da série, é mostrar os primeiros passos para construção de <a href="http://www.raphaelmonroe.com/tag/layout/">layouts</a> utilizando orientação à objeto.</p>
<p>Então, mãos à obra!  Nosso &#8220;desenho final&#8221; será um layout de três colunas, com menu de navegação, header e rodapé, como mostra a figura a seguir :</p>
<p><span id="more-115"></span><a href="http://www.raphaelmonroe.com/wp-content/uploads/2009/05/layout.jpg"><img class="size-full wp-image-117" title="Layout" src="http://www.raphaelmonroe.com/wp-content/uploads/2009/05/layout.jpg" alt="Layout que será construído" width="332" height="258" /></a></p>
<div class="mceTemp mceIEcenter">
<dl id="attachment_117" class="wp-caption aligncenter" style="width: 342px;">
<dd class="wp-caption-dd">Layout que será construído</dd>
</dl>
</div>
<p>Iremos desenvolver, portanto, 7 classes : &#8220;layout&#8221;, &#8220;header&#8221;, &#8220;menu_nav&#8221;, &#8220;barra_esq&#8221;, &#8220;corpo&#8221;, &#8220;barra_dir&#8221;, &#8220;rodape&#8221;. Percebam que a classe &#8220;layout&#8221; será utilizada para &#8220;unir&#8221; todas as outras.  Hoje, começaremos a desenvolver o código da classe layout.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>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
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">&nbsp;
<span style="color: #000000; font-weight: bold;">&lt;?php</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//Criado por : Raphael Monroe Marcondes</span>
<span style="color: #666666; font-style: italic;">// BLOG : www.raphaelmonroe.com</span>
<span style="color: #000000; font-weight: bold;">class</span> layout
<span style="color: #009900;">&#123;</span>
	<span style="color: #666666; font-style: italic;">//construtor da classe...</span>
	<span style="color: #000000; font-weight: bold;">function</span> __construct<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #666666; font-style: italic;">//Chama a função de inclusão de classes necessárias...</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">inclui_classes</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #666666; font-style: italic;">//Chama a função de inicialização de variáveis...</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">inicializa_variaveis</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">//Função pra incluir todas as classes que precisaremos para o desenvolvimento </span>
	<span style="color: #666666; font-style: italic;">//do layout...</span>
	<span style="color: #000000; font-weight: bold;">function</span> inclui_classes<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">include_once</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;head.class.php&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">include_once</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;menu_nav.class.php&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">include_once</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;barra_esq.class.php&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">include_once</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;corpo.class.php&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">include_once</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;barra_dir.class.php&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">include_once</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;rodape.class.php&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>				
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">//Função responsável por criar objetos(instâncias) daquelas classes adicionais.</span>
	<span style="color: #666666; font-style: italic;">//A partir de uma linha &quot;$var = new objeto();&quot;, você cria um objeto que será</span>
	<span style="color: #666666; font-style: italic;">//representado por $var.</span>
	<span style="color: #000000; font-weight: bold;">function</span> inicializa_variaveis<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">head</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> head<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">menu_nav</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> menu_nav<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">barra_esq</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> barra_esq<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>		
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">corpo</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> corpo<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">barra_dir</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> barra_dir<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rodape</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> rodape<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>	
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>Salve o código acima como &#8220;layout.class.php&#8221; utilizando o seu editor favorito.</p>
<p>O arquivo fonte pode ser baixado <a href="http://www.raphaelmonroe.com/tutoriais/php5/layout.rar" target="_blank">aqui</a>.</p>
<p>Lembrando que se você rodar o código, nada acontecerá ainda. Estamos iniciando nossos trabalhos!</p>
<p>Aguardem os próximos posts!</p>
<p>Abraço.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.raphaelmonroe.com/tutoriais/tutorial-php-5-construcao-de-layout/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>
