<?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"
	>

<channel>
	<title>Silveira's Blog &#187; netbeans</title>
	<atom:link href="http://silveiraneto.net/tag/netbeans/feed" rel="self" type="application/rss+xml" />
	<link>http://silveiraneto.net</link>
	<description>My personal blog</description>
	<pubDate>Thu, 21 Aug 2008 19:22:57 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.1</generator>
	<language>pt-br</language>
			<item>
		<title>JavaFX, Side Scrolling Gamming</title>
		<link>http://silveiraneto.net/2008/08/18/javafx-side-scrolling-gamming/</link>
		<comments>http://silveiraneto.net/2008/08/18/javafx-side-scrolling-gamming/#comments</comments>
		<pubDate>Mon, 18 Aug 2008 03:29:15 +0000</pubDate>
		<dc:creator>Silveira</dc:creator>
		
		<category><![CDATA[english]]></category>

		<category><![CDATA[animation]]></category>

		<category><![CDATA[game]]></category>

		<category><![CDATA[game development]]></category>

		<category><![CDATA[JavaFX]]></category>

		<category><![CDATA[netbeans]]></category>

		<category><![CDATA[Parallax]]></category>

		<category><![CDATA[side scrolling]]></category>

		<category><![CDATA[Slidding]]></category>

		<guid isPermaLink="false">http://silveiraneto.net/?p=1096</guid>
		<description><![CDATA[I started to make several small JavaFX game demos.  I&#8217;m doing that to fell where JavaFX is good to make this sort of game and what patterns would be frequently needed to implement, where I will place a little framework for fast development of simple casual games. What I&#8217;m calling now just &#8216;GameFX&#8217;.  [...]]]></description>
			<content:encoded><![CDATA[<p>I started to make several small JavaFX game demos.  I&#8217;m doing that to fell where JavaFX is good to make this sort of game and what patterns would be frequently needed to implement, where I will place a little framework for fast development of simple casual games. What I&#8217;m calling now just &#8216;GameFX&#8217;.  My first experiment was to creating a side scrolling animation that&#8217;s is usefull to create the <a title="Parallax Scrolling" href="http://en.wikipedia.org/wiki/Parallax_scrolling">parallax effect</a> in <a title="Side scrolling games on Wikipédia" href="http://en.wikipedia.org/wiki/Side-scrolling_video_game">side scrolling games</a>. For that I created the class Slidding. You create an Slidding with a set of nodes and they will slide from right to left and when a node reaches the left side it back to the right side.</p>
<p style="text-align: center;"><img class="size-full wp-image-1103 aligncenter" title="Slidding explanation" src="http://silveiraneto.net/wp-content/uploads/2008/08/slidding.png" alt="" width="498" height="183" /></p>
<p>Example:</p>
<pre name="code" class="jfx:nogutter">
Slidding {
    content: [
       Circle {
           centerX: 100, centerY: 100, radius: 40
           fill: Color.RED
       },
       Circle {
           centerX: 300, centerY: 100, radius: 40
           fill: Color.BLUE
       }
    ]
    clock: 0.05s
 }</pre>
<p style="text-align: left;">That produces:</p>
<p style="text-align: center;">
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/jczHIVIkclY&#038;hl=pt-br&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.youtube.com/v/jczHIVIkclY&#038;hl=pt-br&#038;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"></embed></object>
</p>
<p>You create a Slidding with a list of Nodes at content, a clock (that will determine the speed of that animation) and a width. If you don&#8217;t provide a width, the slidding will do the best effort to determine one.  You can use this approach to create more complex scenarios, using more Slidding groups.</p>
<p>This is a example of that:</p>
<pre name="code" class="jfx:nogutter">

import javafx.application.*;
import javafx.animation.*;
import javafx.scene.geometry.*;
import javafx.scene.paint.*;
import javafx.scene.*;

import gamefx.Slidding;

var SCREENW = 500;
var SCREENH = 400;

/* the sky is a light blue rectangle */
var sky = Rectangle {
    width: SCREENW, height: SCREENH
    fill: LinearGradient {
        startX: 0.0 , startY: 0.0
        endX: 0.0, endY: 1.0
        proportional: true
        stops: [
            Stop { offset: 0.0 color: Color.LIGHTBLUE },
            Stop { offset: 0.7 color: Color.LIGHTYELLOW },
            Stop { offset: 1.0 color: Color.YELLOW }
        ]
    }
}

/* the ground is a olive rectangle */
var ground = Rectangle {
    translateY: 300
    width: 500, height: 100
    fill: LinearGradient {
        startX: 0.0 , startY: 0.0
        endX: 0.0, endY: 1.0
        proportional: true
        stops: [
            Stop { offset: 0.2 color: Color.OLIVE },
            Stop { offset: 1.0 color: Color.DARKOLIVEGREEN }
        ]
    }
}

/* a clod cloud is like an ellipse */
class Cloud extends Ellipse {
    override attribute radiusX = 50;
    override attribute radiusY = 25;
    override attribute fill = Color.WHITESMOKE;
    override attribute opacity = 0.5;
}

/* we create a slidding of clouds */
var clouds = Slidding {
    content: [
        Cloud{centerX: 100, centerY: 100},
        Cloud{centerX: 150, centerY:  20},
        Cloud{centerX: 220, centerY: 150},
        Cloud{centerX: 260, centerY: 200},
        Cloud{centerX: 310, centerY:  40},
        Cloud{centerX: 390, centerY: 150},
        Cloud{centerX: 450, centerY:  30},
        Cloud{centerX: 550, centerY: 100},
    ]
    clock: 0.2s
}

var SUNX = 100;
var SUNY = 300;
var rotation = 0;

/* the sun, with it's corona */
var sun = Group {
    rotate: bind rotation
    anchorX: SUNX, anchorY: SUNY
    content: [
        for (i in [0..11]) {
            Arc {
                centerX: SUNX, centerY: SUNY
                radiusX: 500, radiusY: 500
                startAngle: 2 * i * (360 / 24), length: 360 / 24
                type: ArcType.ROUND
                fill: Color.YELLOW
                opacity: 0.3
            }
        },
        Circle {
            centerX: SUNX, centerY: SUNY, radius: 60
            fill: Color.YELLOW
        },
    ]
}

/* animate the corona changing the it rotation angle */
var anim = Timeline {
    repeatCount: Timeline.INDEFINITE
    keyFrames : [
        KeyFrame {
            time : 0s
            values: rotation => 0.0 tween Interpolator.LINEAR
        },
        KeyFrame {
            time : 2s
            values: rotation => (360.0/12) tween Interpolator.LINEAR
        },
    ]
}
anim.start();

/* a tree is a simple polygon */
class Tree extends Polygon{
    public attribute x = 0;
    public attribute y = 0;
    override attribute points = [0,0, 10,30, -10,30];
    override attribute fill = Color.DARKOLIVEGREEN;
    init{
        translateX = x;
        translateY = y;
    }
}

/* a forest is a lot of trees */
var forest = Slidding{
    content: [
        Tree{x: 20, y: 320}, Tree{x: 80, y: 280}, Tree{x:120, y: 330},
        Tree{x:140, y: 280}, Tree{x:180, y: 310}, Tree{x:220, y: 320},
        Tree{x:260, y: 280}, Tree{x:280, y: 320}, Tree{x:300, y: 300},
        Tree{x:400, y: 320}, Tree{x:500, y: 280}, Tree{x:500, y: 320}
    ]
    clock: 0.1s
    width: SCREENW
}

Frame {
    title: "Side Scrolling"
    width: SCREENW
    height: SCREENH
    closeAction: function() {
        java.lang.System.exit( 0 );
    }
    visible: true

    stage: Stage {
        content: [sky, sun, clouds, ground, forest]
    }
}
</pre>
<p>Producing: </p>
<p><center><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/Qd0HvPkGF10&#038;hl=pt-br&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.youtube.com/v/Qd0HvPkGF10&#038;hl=pt-br&#038;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"></embed></object></center></p>
<p>If you want to try these examples, place this Slidding implementation as <em>Slidding.fx</em> in a directory named gamefx, or grab <a href="http://silveiraneto.net/downloads/GameFX_version_0.zip">here the NetBeans project</a>.</p>
<pre name="code" class="jfx:nogutter">
package gamefx;

import javafx.scene.CustomNode;
import javafx.scene.Node;
import javafx.scene.Group;
import javafx.animation.Timeline;
import javafx.animation.KeyFrame;

/*
 * The slidding group of nodes for side scrolling animations.
 *
 * @example
 * Slidding {
 *    width: 300
 *    content: [
 *       Circle { centerX: 100, centerY: 100, radius: 40, fill: Color.RED },
 *       Circle { centerX: 200, centerY: 100, radius: 40, fill: Color.BLUE },
 *    ]
 *    clock: 0.05s
 * }
 */
public class Slidding extends CustomNode {
    public attribute content: Node[];
    public attribute clock = 0.1s;
    public attribute width: Number;

    public attribute autostart = true;
    public attribute cycle = true;

    public attribute anim = Timeline {
        repeatCount: Timeline.INDEFINITE
        keyFrames : [
            KeyFrame {
                time : clock
                action: function() {
                    for(node in content){
                        node.translateX--;
                        if (node.getX() + node.translateX + node.getWidth() <= 0){
                            if(cycle){
                                node.translateX = width - node.getX();
                            } else {
                                delete node from content;
                            }
                        }
                    }
                } // action
            } // keyframe
        ]
    } // timeline 

    public function create(): Node {
        // if width is not setted, we try to figure out
        if(width == 0) {
            for(node in content) {
                if(node.getX() + node.getWidth() > width) {
                    width = node.getX() + node.getWidth();
                }
            }
        }

        // normaly the slidding will start automaticaly
        if(autostart){
            anim.start();
        }

        // just a Group of Nodes
        return Group {
            content: content
        };
    }
}
</pre>
<p>Is not the final implementation but it&#8217;s a idea. Soon I&#8217;ll show a demo game I did using theses codes.</p>
]]></content:encoded>
			<wfw:commentRss>http://silveiraneto.net/2008/08/18/javafx-side-scrolling-gamming/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Anúncio do NetBeans 6.5 Beta</title>
		<link>http://silveiraneto.net/2008/08/13/anuncio-do-netbeans-65-beta/</link>
		<comments>http://silveiraneto.net/2008/08/13/anuncio-do-netbeans-65-beta/#comments</comments>
		<pubDate>Wed, 13 Aug 2008 15:22:19 +0000</pubDate>
		<dc:creator>Silveira</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[Ajax]]></category>

		<category><![CDATA[banco de dados]]></category>

		<category><![CDATA[beta]]></category>

		<category><![CDATA[C]]></category>

		<category><![CDATA[Eclipse]]></category>

		<category><![CDATA[GlassFish]]></category>

		<category><![CDATA[Grails]]></category>

		<category><![CDATA[Groovy]]></category>

		<category><![CDATA[Java]]></category>

		<category><![CDATA[JavaScript]]></category>

		<category><![CDATA[netbeans]]></category>

		<category><![CDATA[rails]]></category>

		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://silveiraneto.net/?p=1081</guid>
		<description><![CDATA[
O Netbeans.org anunciou a disponibilidade do NetBeans IDE 6.5 Beta. Abaixo a tradução do anúncio:
O NetBeans IDE 6.5 introduz várias novas funcionalidades, incluindo uma IDE robusta para PHP, deputação de JavaScript para o Firefox e IE, e suporte a Groovy e Grails. Esse lançamento também inclui várias melhorias para o desenvolvimento em Java, Ruby e [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a title="Download Now" href="http://download.netbeans.org/netbeans/6.5/beta/"><img class="size-full wp-image-1082 aligncenter" title="netbeans-65-beta" src="http://silveiraneto.net/wp-content/uploads/2008/08/netbeans-65-beta.png" alt="" width="400" height="137" /></a></p>
<p>O <a title="NetBeans" href="http://netbeans.org">Netbeans.org</a> anunciou a disponibilidade do <a title="NetBeans 6.5 Beta" href="http://www.netbeans.org/community/releases/65/">NetBeans IDE 6.5 Beta</a>. Abaixo a tradução do anúncio:</p>
<p>O NetBeans IDE 6.5 introduz várias novas funcionalidades, incluindo uma IDE robusta para PHP, deputação de JavaScript para o Firefox e IE, e suporte a Groovy e Grails. Esse lançamento também inclui várias melhorias para o desenvolvimento em Java, Ruby e Rails, e C/C++. Dentre as melhorias no Java destacam-se: suporte nativo ao Hibernate, importação de projetos do Eclipse, e compilação no salvamento.</p>
<p>Links:</p>
<ul>
<li><a title="Download Now" href="http://download.netbeans.org/netbeans/6.5/beta/">Faça o Download</a></li>
<li><a title="Saiba Mais" href="http://www.netbeans.org/community/releases/65/">Saiba Mais</a></li>
<li><a href="http://www.netbeans.org/kb/index.html">Tutoriais &amp; Documentação</a></li>
</ul>
<p>Outros destaques:</p>
<ul>
<li> PHP
<ul>
<li>Completação de código</li>
<li>Consertos rápidos e checagem semântica</li>
<li>Suporte a FTP</li>
<li>Depuração com Xdebug</li>
<li>Suporte a Web Services populares</li>
</ul>
</li>
<li>Ajax/JavaScript
<ul>
<li>Suporte a depuração no Firefox e IE</li>
<li>Monitoramento cliente de HTTP</li>
<li>Vêm com as bibliotecas mais populares de JavaScript</li>
</ul>
</li>
<li>Java
<ul>
<li>Suporte a Groovy/Grails</li>
<li>Compilação/Deploy no momento do salvamento</li>
<li>Importação e sincronização de projetos do Eclipse</li>
<li>Suporte nativo a Hibernate</li>
<li>Gerador de CRUD JSF agora com Ajax</li>
</ul>
</li>
<li>Banco de Dados
<ul>
<li>Melhorias no editor</li>
</ul>
</li>
<li>C/C++
<ul>
<li>Melhorias na completação de código e destaque de erros</li>
<li>Desenvolvimento remoto</li>
</ul>
</li>
<li>Ruby
<ul>
<li>Suporte aos Testes Ruby</li>
<li>Melhoria no suporte a Rake</li>
</ul>
</li>
<li>GlassFish V3 &#8220;Prelude&#8221;
<ul>
<li>Menor tamanho, inicialização e deployment mais rápido</li>
<li>Suporte a scripting, inclusive jRuby</li>
</ul>
</li>
</ul>
<div id=":vc" class="ArwC7c ckChnd">
<div>
<div lang="x-western">
<p>O NetBeans IDE 6.5 final está planejado para ser lançado em Outubro de 2008. Como sempre, é bem vindo e nós encorajamos seu feedback sobre sua experiência usando a IDE NetBeans. Visite nossas <a href="http://www.netbeans.org/community/lists/top.html">listas de email</a> ou <a href="http://planetnetbeans.org/">faça uma postagem</a> no seu blog.</div>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://silveiraneto.net/2008/08/13/anuncio-do-netbeans-65-beta/feed/</wfw:commentRss>
		</item>
		<item>
		<title>JavaFX, Draggable Nodes</title>
		<link>http://silveiraneto.net/2008/08/11/javafx-draggable-node/</link>
		<comments>http://silveiraneto.net/2008/08/11/javafx-draggable-node/#comments</comments>
		<pubDate>Mon, 11 Aug 2008 19:18:34 +0000</pubDate>
		<dc:creator>Silveira</dc:creator>
		
		<category><![CDATA[english]]></category>

		<category><![CDATA[Drag]]></category>

		<category><![CDATA[draggable]]></category>

		<category><![CDATA[flickr]]></category>

		<category><![CDATA[JavaFX]]></category>

		<category><![CDATA[Mouse]]></category>

		<category><![CDATA[netbeans]]></category>

		<category><![CDATA[programming]]></category>

		<category><![CDATA[RIA]]></category>

		<guid isPermaLink="false">http://silveiraneto.net/?p=1064</guid>
		<description><![CDATA[One thing that I like a lot to do with JavaFX is draggable objects. Due to some recent changes in the JavaFX syntax my old codes for that are no longer working. Joshua Marinacci from Sun&#8217;s JavaFX engineering team and other guys from the JavaFX community gave me some tips. Here some strategies I&#8217;m using [...]]]></description>
			<content:encoded><![CDATA[<p>One thing that I like a lot to do with JavaFX is draggable objects. Due to some recent changes in the JavaFX syntax my <a href="http://silveiraneto.net/2008/02/16/draggable-and-growable-ball-in-javafx/">old codes for that</a> are no longer working. <a href="http://weblogs.java.net/blog/joshy/">Joshua Marinacci</a> from Sun&#8217;s JavaFX engineering team and other guys from the JavaFX community gave me some tips. Here some strategies I&#8217;m using for making draggable nodes in JavaFX.</p>
<p>In this first example, a simple draggable ellipse.<br />
<center><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/pAJHH-mPLaQ&#038;hl=pt-br&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.youtube.com/v/pAJHH-mPLaQ&#038;hl=pt-br&#038;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"></embed></object></center><br />
video url: <a href="http://www.youtube.com/watch?v=pAJHH-mPLaQ">http://www.youtube.com/watch?v=pAJHH-mPLaQ</a></p>
<pre name="code" class="jfx:nogutter">
import javafx.application.*;
import javafx.scene.paint.*;
import javafx.scene.geometry.*;
import javafx.input.*;

Frame {
    width: 300, height: 300, visible: true
    stage: Stage {
        content: [
            Ellipse {
                var endX = 0.0; var endY = 0.0
                var startX = 0.0; var startY = 0.0
                centerX: 150, centerY: 150
                radiusX: 80, radiusY: 40
                fill: Color.ORANGE
                translateX: bind endX
                translateY: bind endY
                onMousePressed: function(e:MouseEvent):Void {
                    startX = e.getDragX()-endX;
                    startY = e.getDragY()-endY;
                }
                onMouseDragged: function(e:MouseEvent):Void {
                    endX = e.getDragX()-startX;
                    endY = e.getDragY()-startY;
                }
            }
        ]

    }
}
</pre>
<p>When you need to create a group of draggable objects, you can try thie approach of a draggable group like this. Inside on it, you can put whatever you want.</p>
<p><center><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/mHOcPRrgQCQ&#038;hl=pt-br&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.youtube.com/v/mHOcPRrgQCQ&#038;hl=pt-br&#038;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"></embed></object></center><br />
Video url: <a href="http://www.youtube.com/watch?v=mHOcPRrgQCQ">http://www.youtube.com/watch?v=mHOcPRrgQCQ</a></p>
<pre name="code" class="jfx:nogutter">
import javafx.application.*;
import javafx.scene.paint.*;
import javafx.scene.geometry.*;
import javafx.input.*;
import javafx.scene.*;
import javafx.scene.effect.*;
import javafx.scene.image.*;
import javafx.animation.*;

// a graggable group
public class DragGroup extends CustomNode{
    public attribute content: Node[];

    private attribute endX = 0.0;
    private attribute endY = 0.0;

    private attribute startX = 0.0;
    private attribute startY = 0.0;

    public function create(): Node {
        return Group{
            translateX: bind endX
            translateY: bind endY
            content: bind content
        }
    }

    override attribute onMousePressed = function(e:MouseEvent):Void {
        startX = e.getDragX()-endX;
        startY = e.getDragY()-endY;
    }

    override attribute onMouseDragged = function(e:MouseEvent):Void {
        endX = e.getDragX()-startX;
        endY = e.getDragY()-startY;
    }
}

// angle animation, cycles between 0 to 360 in 36 seconds
var angle = 0.0;
var angleAnimation = Timeline {
    repeatCount: Timeline.INDEFINITE
    keyFrames : [
        KeyFrame {
            time: 0s
            values:
                    angle => 0.0
        },
        KeyFrame{
            time: 36s
            values :
                    angle => 360.0 tween Interpolator.LINEAR
        }
    ]
}

// some pictures from my Flickr albums
var me    = "http://farm4.static.flickr.com/3042/2746737338_aa3041f283_m.jpg";

var dog   = "http://farm4.static.flickr.com/3184/2717290793_ec14c26a85_m.jpg";
var plant = "http://farm4.static.flickr.com/3014/2731177705_bed6d6b8fa_m.jpg";
var bird  = "http://farm4.static.flickr.com/3190/2734919599_a0110e7ce0_m.jpg";
var me_89  = "http://farm3.static.flickr.com/2138/2308085138_7b296cc5d0_m.jpg";

Frame {
    width: 640, height: 480, visible: true
    stage: Stage {
        fill: Color.BLACK
        content: [
            DragGroup{
                content: ImageView {
                    anchorX: 120, anchorY: 90
                    rotate: bind 30 + angle
                    image: Image { backgroundLoading: true, url: me }
                }
            },
            DragGroup {
                translateX: 300, translateY: 50
                content: ImageView {
                    anchorX: 120, anchorY: 90
                    rotate: bind -30 + angle
                    image: Image { backgroundLoading: true, url: dog }
                }
            },
            DragGroup {
                translateX: 300, translateY: 300
                content: ImageView {
                    anchorX: 120, anchorY: 90
                    rotate: bind 90 + angle
                    image: Image { backgroundLoading: true, url: plant }
                }
            },
            DragGroup {
                translateX: 200
                translateY: 200
                content: ImageView {
                    anchorX: 120, anchorY: 90
                    rotate: bind 90 + angle
                    image: Image { backgroundLoading: true, url: bird }
                }
            },
            DragGroup {
                translateX: 30
                translateY: 200
                content: ImageView {
                    anchorX: 85, anchorY: 120
                    rotate: bind angle + 180
                    image: Image { backgroundLoading: true, url: me_89 }
                }
            },
        ]

    }

    closeAction: function() {
        java.lang.System.exit( 0 );
    }
}

angleAnimation.start();
</pre>
<p>One more example, using the same class DragGroup, we can put multiple nodes using lists.</p>
<p><center><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/gJqy7EdtEqs&#038;hl=pt-br&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.youtube.com/v/gJqy7EdtEqs&#038;hl=pt-br&#038;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"></embed></object></center><br />
Video url: <a href="http://www.youtube.com/watch?v=gJqy7EdtEqs">http://www.youtube.com/watch?v=gJqy7EdtEqs</a></p>
<pre name="code" class="jfx:nogutter">
import javafx.application.*;
import javafx.scene.*;
import javafx.scene.geometry.*;
import javafx.scene.paint.*;
import javafx.input.*;
import javafx.animation.*;
import java.lang.Math;

// Class to create a draggable group of objects
public class DragGroup extends CustomNode{
    public attribute content: Node[];

    private attribute endX = 0.0;
    private attribute endY = 0.0;

    private attribute startX = 0.0;
    private attribute startY = 0.0;

    override attribute onMousePressed = function(e:MouseEvent):Void {
        startX = e.getDragX()-endX;
        startY = e.getDragY()-endY;
    }

    override attribute onMouseDragged = function(e:MouseEvent):Void {
        endX = e.getDragX()-startX;
        endY = e.getDragY()-startY;
    }

    public function create(): Node {
        return Group{
            translateX: bind endX
            translateY: bind endY
            content: bind content
        }
    }
}

// angle animation, cycles between 0 to 360 in 10 seconds
var angle = 0.0;
var angleAnimation = Timeline {
    repeatCount: Timeline.INDEFINITE
    keyFrames : [
        KeyFrame {
            time: 0s
            values: angle => 0.0
        },
        KeyFrame{
            time: 10s
            values :  angle => 360.0 tween Interpolator.LINEAR
        }
    ]
}

// breath animation, go and back from 0.0 to 10.0 in 2 seconds
var breath = 0.0;
var breathAnimation = Timeline {
    repeatCount: Timeline.INDEFINITE
    autoReverse: true
    keyFrames : [
        KeyFrame {
            time: 0s
            values: breath => 0.0
        },
        KeyFrame{
            time: 1s
            values :  breath => 10.0 tween Interpolator.LINEAR
        }
    ]
}

// Creates n multi colored floating circles around a bigger circle
var n = 12;
var colors = [
    Color.BLUE, Color.AQUA, Color.MAGENTA, Color.RED,
    Color.YELLOW, Color.ORANGE, Color.HOTPINK, Color.LIME
];
var chosen = Color.YELLOW;
var floatingCircles = Group{
    rotate: bind angle
    content: for (i in [1..n])
    Circle {
        fill: colors[i mod sizeof colors]
        radius: 10
        centerX: Math.cos(i * 2 * Math.PI/n) * 70
        centerY: Math.sin(i * 2 * Math.PI/n) * 70
        onMouseClicked: function( e: MouseEvent ):Void {
            chosen = colors[i mod sizeof colors];
        }
    }
}
var circle = Circle{
    radius: bind 50 + breath
    fill: bind chosen
}

Frame {
    width: 400, height: 400, visible: true
    stage: Stage {
        fill: Color.BLACK
        content: [
            DragGroup{
                translateX: 200, translateY: 200
                content: [circle, floatingCircles]
            }
        ]
    }

    closeAction: function() {
        java.lang.System.exit( 0 );
    }
}

// starts all animations
angleAnimation.start();
breathAnimation.start();
</pre>
]]></content:encoded>
			<wfw:commentRss>http://silveiraneto.net/2008/08/11/javafx-draggable-node/feed/</wfw:commentRss>
		</item>
		<item>
		<title>JavaFX, handling events with overlapping elements</title>
		<link>http://silveiraneto.net/2008/07/28/javafx-handling-events-with-overlapping-elements/</link>
		<comments>http://silveiraneto.net/2008/07/28/javafx-handling-events-with-overlapping-elements/#comments</comments>
		<pubDate>Mon, 28 Jul 2008 03:21:46 +0000</pubDate>
		<dc:creator>Silveira</dc:creator>
		
		<category><![CDATA[english]]></category>

		<category><![CDATA[blocksMouse]]></category>

		<category><![CDATA[JavaFX]]></category>

		<category><![CDATA[netbeans]]></category>

		<category><![CDATA[RIA]]></category>

		<category><![CDATA[Videos]]></category>

		<guid isPermaLink="false">http://silveiraneto.net/?p=1000</guid>
		<description><![CDATA[Here is a problem I faced those days while programming with JavaFX.
When you perform a click in a JavaFX area, mouse events are called to all nodes through that position. You can see this behavior in this video.
Example 1.

Here is the code.

import javafx.application.*;
import javafx.scene.geometry.*;
import javafx.scene.geometry.Rectangle;
import javafx.scene.paint.Color;
import javafx.input.MouseEvent;

Frame {
    width: 200
   [...]]]></description>
			<content:encoded><![CDATA[<p>Here is a problem I faced those days while programming with <a href="https://openjfx.dev.java.net/">JavaFX</a>.<br />
When you perform a click in a JavaFX area, mouse events are called to all nodes through that position. You can see this behavior in this video.</p>
<p><strong>Example 1.</strong></p>
<p><center><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/tsHMNrWzYrs&#038;hl=pt-br&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.youtube.com/v/tsHMNrWzYrs&#038;hl=pt-br&#038;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"></embed></object></center></p>
<p>Here is the code.</p>
<pre name="code" class="jfx">
import javafx.application.*;
import javafx.scene.geometry.*;
import javafx.scene.geometry.Rectangle;
import javafx.scene.paint.Color;
import javafx.input.MouseEvent;

Frame {
    width: 200
    height: 200
    visible: true
    stage: Stage {
        content: [
            Rectangle {
                var color1 = Color.BLUE;
                x: 10, y: 10, width: 140, height: 90, fill: bind color1
                onMouseClicked: function( e: MouseEvent ):Void {
                    if (color1==Color.BLUE){
                        color1 = Color.GREEN;
                    } else {
                        color1 = Color.BLUE
                    }
                }
            },
            Circle {
                var color2 = Color.RED
                centerX: 100, centerY: 100, radius: 40, fill: bind color2
                onMouseClicked: function( e: MouseEvent ):Void {
                    if (color2==Color.YELLOW){
                        color2 = Color.RED;
                    } else {
                        color2 = Color.YELLOW
                    }
                }
            }
        ]
    }
}
</pre>
<p>This is the default behavior. All node are called with a mouse event. Is a expected and robust behavior but sometimes we just don&#8217;t want that. We want events called to just one node or a set of nodes.</p>
<p><strong>Example 2.</strong></p>
<p><center><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/85ogNUjXYGU&#038;hl=pt-br&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.youtube.com/v/85ogNUjXYGU&#038;hl=pt-br&#038;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"></embed></object></center></p>
<p>Is exactly the same code but with <em>blocksMouse: true</em> in the circle node. When blocksMouse is true the mouse event will not be called to others node behind it.</p>
<pre name="code" class="JAVA">
package overlapping;

import javafx.application.*;
import javafx.scene.geometry.*;
import javafx.scene.geometry.Rectangle;
import javafx.scene.paint.Color;
import javafx.input.MouseEvent;

Frame {
    width: 200
    height: 200
    visible: true
    stage: Stage {
        content: [
            Rectangle {
                var color1 = Color.BLUE;
                x: 10, y: 10, width: 140, height: 90, fill: bind color1
                onMouseClicked: function( e: MouseEvent ):Void {
                    if (color1==Color.BLUE){
                        color1 = Color.GREEN;
                    } else {
                        color1 = Color.BLUE
                    }
                }
            },
            Circle {
                var color2 = Color.RED
                centerX: 100, centerY: 100, radius: 40, fill: bind color2
                blocksMouse: true
                onMouseClicked: function( e: MouseEvent ):Void {
                    if (color2==Color.YELLOW){
                        color2 = Color.RED;
                    } else {
                        color2 = Color.YELLOW
                    }
                }
            }
        ]
    }
}
</pre>
<p>Thanks guys on the <a href="https://openjfx.dev.java.net/">OpenJDK user mail list</a> and at <a href="http://forums.java.net/jive/category.jspa?categoryID=62">OpenJFX Forum</a>, specially <a href="http://forums.java.net/jive/thread.jspa?messageID=289116">this thread</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://silveiraneto.net/2008/07/28/javafx-handling-events-with-overlapping-elements/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Event Review: JavaDay Juazeiro do Norte</title>
		<link>http://silveiraneto.net/2008/06/16/event-review-javaday-juazeiro-do-norte/</link>
		<comments>http://silveiraneto.net/2008/06/16/event-review-javaday-juazeiro-do-norte/#comments</comments>
		<pubDate>Mon, 16 Jun 2008 15:10:19 +0000</pubDate>
		<dc:creator>Silveira</dc:creator>
		
		<category><![CDATA[english]]></category>

		<category><![CDATA[CEJUG]]></category>

		<category><![CDATA[Java]]></category>

		<category><![CDATA[JavaDay]]></category>

		<category><![CDATA[javaserver faces]]></category>

		<category><![CDATA[Juazeiro do Norte]]></category>

		<category><![CDATA[netbeans]]></category>

		<category><![CDATA[Padre Cícero]]></category>

		<category><![CDATA[PUJ]]></category>

		<category><![CDATA[Rafael Carneiro]]></category>

		<category><![CDATA[Rafael Ponte]]></category>

		<category><![CDATA[SAI]]></category>

		<category><![CDATA[Sun Academic Initiative]]></category>

		<category><![CDATA[Tarso Bersa]]></category>

		<guid isPermaLink="false">http://silveiraneto.net/?p=938</guid>
		<description><![CDATA[Rafael Carneiro, Tarso Bersa, Rafael Ponte and me, after 8 hours of bus travel, arrived in Juazeiro do Norte to talk at the first JavaDay there.

 
     

Rafael Carneiro talked about Java Certification.
Tarso Bersa talked about Spring Framework for JEE applications.
I talked about NetBeans 6.
Rafael Ponte talked about JavaServer Faces.

We answered [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Rafael Carneiro" href="http://www.rafaelcarneiro.org/blog/" target="_blank">Rafael Carneiro</a>, Tarso Bersa, <a title="Rafael Ponte" href="http://www.rponte.com.br/">Rafael Ponte</a> and me, after <strong>8 hours of bus travel</strong>, arrived in <a href="http://en.wikipedia.org/wiki/Juazeiro_do_Norte">Juazeiro do Norte</a> to talk at the first <a title="JavaDay" href="http://silveiraneto.net/2008/05/25/java-day-em-juazeiro-do-norte/" target="_blank">JavaDay</a> there.</p>
<p style="text-align: center;"><a title="Why Free Software? by Silveira Neto, on Flickr" href="http://www.flickr.com/photos/silveiraneto/2579658444/"><img class="aligncenter" src="http://farm4.static.flickr.com/3193/2579658444_aa57b59f08_o.jpg" alt="Why Free Software?" width="512" height="384" /></a></p>
<p style="text-align: center;"><a title="JavaDay_Juazeiro_do_Norte_Silveira_Rafael by Silveira Neto, on Flickr" href="http://www.flickr.com/photos/silveiraneto/2579715154/"><img src="http://farm4.static.flickr.com/3087/2579715154_3ae2b0fc1c_m.jpg" alt="JavaDay_Juazeiro_do_Norte_Silveira_Rafael" width="180" height="240" /></a> <a title="Last touches by Silveira Neto, on Flickr" href="http://www.flickr.com/photos/silveiraneto/2579644754/"><img src="http://farm4.static.flickr.com/3129/2579644754_7d7286c4f0_m.jpg" alt="Last touches" width="180" height="240" /></a></p>
<p style="text-align: center;"><a title="JavaDay Juazeiro do Norte by Silveira Neto, on Flickr" href="http://www.flickr.com/photos/silveiraneto/2579745112/"><img src="http://farm4.static.flickr.com/3125/2579745112_c82b0339e2_m.jpg" alt="JavaDay Juazeiro do Norte" width="240" height="180" /></a> <a title="Silveira Neto by Silveira Neto, on Flickr" href="http://www.flickr.com/photos/silveiraneto/2578912879/"><img src="http://farm4.static.flickr.com/3065/2578912879_21dabeee33_m.jpg" alt="Silveira Neto" width="240" height="180" /></a> <a title="Coffee Break by Silveira Neto, on Flickr" href="http://www.flickr.com/photos/silveiraneto/2578886075/"><img src="http://farm4.static.flickr.com/3133/2578886075_91136a3e4f_m.jpg" alt="Coffee Break" width="240" height="180" /></a> <a title="Gifts by Silveira Neto, on Flickr" href="http://www.flickr.com/photos/silveiraneto/2578914043/"><img src="http://farm4.static.flickr.com/3041/2578914043_0a1b2e2f60_m.jpg" alt="Gifts" width="240" height="180" /></a> <a title="Silveira by Silveira Neto, on Flickr" href="http://www.flickr.com/photos/silveiraneto/2578885069/"><img src="http://farm4.static.flickr.com/3183/2578885069_e34dee7d13_m.jpg" alt="Silveira" width="240" height="180" /></a> <a title="Rafael Ponte by Silveira Neto, on Flickr" href="http://www.flickr.com/photos/silveiraneto/2579832210/"><img src="http://farm4.static.flickr.com/3270/2579832210_58ce12edcb_m.jpg" alt="Rafael Ponte" width="240" height="180" /></a></p>
<ul>
<li>Rafael Carneiro talked about Java Certification.</li>
<li>Tarso Bersa talked about Spring Framework for JEE applications.</li>
<li>I talked about NetBeans 6.</li>
<li>Rafael Ponte talked about JavaServer Faces.</li>
</ul>
<p>We answered a lot of questions and gave lot of gifts. I also showed the <a title="Sun Academic Initiative" href="http://www.sun.com/solutions/landing/industry/education/sai/index.xml">Sun Academic Initiative</a>, which they are already subscribed. We also showed several opportunities they can participate with <a title="Ceará Java User Group" href="http://www.cejug.org">CEJUG</a> like <a title="CEJUG Certified" href="http://cejug.org/display/cejug/CEJUG+Certified">free vouchers</a> or a <a title="Prêmio Universitário Java" href="http://cejug.org/display/cejug/PUJ">free travel for Belgium</a>.</p>
<p>Some pictures we took. These ones during the bus travel. We saw a nice sunrise through beautiful landscapes.</p>
<p style="text-align: center;"><a title="P5260004 by Silveira Neto, on Flickr" href="http://www.flickr.com/photos/silveiraneto/2540195503/"><img src="http://farm4.static.flickr.com/3013/2540195503_55150a5f71_m.jpg" alt="P5260004" width="240" height="180" /></a> <a title="P5260005 by Silveira Neto, on Flickr" href="http://www.flickr.com/photos/silveiraneto/2541010332/"><img src="http://farm3.static.flickr.com/2023/2541010332_dd582211ef_m.jpg" alt="P5260005" width="240" height="180" /></a> <a title="P5260007 by Silveira Neto, on Flickr" href="http://www.flickr.com/photos/silveiraneto/2540178011/"><img src="http://farm4.static.flickr.com/3148/2540178011_352d76519a_m.jpg" alt="P5260007" width="240" height="180" /></a> <a title="P5260006 by Silveira Neto, on Flickr" href="http://www.flickr.com/photos/silveiraneto/2541004126/"><img src="http://farm3.static.flickr.com/2362/2541004126_18ab010ea7_m.jpg" alt="P5260006" width="240" height="180" /></a></p>
<p>We playing guitar hero. <img src='http://silveiraneto.net/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> The city have their own shopping with games, restaurant and cinema.</p>
<p style="text-align: center;"><a title="Guitar Hero by Silveira Neto, on Flickr" href="http://www.flickr.com/photos/silveiraneto/2542327312/"><img src="http://farm4.static.flickr.com/3041/2542327312_5422311146_m.jpg" alt="Guitar Hero" width="240" height="180" /></a> <a title="Guitar Hero by Silveira Neto, on Flickr" href="http://www.flickr.com/photos/silveiraneto/2542312576/"><img src="http://farm4.static.flickr.com/3126/2542312576_a906edec9c_m.jpg" alt="Guitar Hero" width="240" height="180" /></a></p>
<p>The main atraction at Juazeiro is a statue of <a title="Wikipédia em inglês" href="http://en.wikipedia.org/wiki/Padre_C%C3%ADcero">Padre (Priest) Cícero</a> with 7 meters itself and more 8 meters of base. Pilgrimage to this statue takes place in his honour every November, attracting thousands of followers. The city&#8217;s economy is highly influenced by those travelers devotes.</p>
<p style="text-align: center;"><a title="Padim by Silveira Neto, on Flickr" href="http://www.flickr.com/photos/silveiraneto/2542644574/"><img src="http://farm4.static.flickr.com/3044/2542644574_2b28c808c6_m.jpg" alt="Padim" width="240" height="180" /></a> <a title="fitas by Silveira Neto, on Flickr" href="http://www.flickr.com/photos/silveiraneto/2542571880/"><img src="http://farm3.static.flickr.com/2400/2542571880_b2136291fc_m.jpg" alt="fitas" width="240" height="180" /></a></p>
<p style="text-align: center;"><a title="eu e o padim by Silveira Neto, on Flickr" href="http://www.flickr.com/photos/silveiraneto/2542554426/"><img src="http://farm3.static.flickr.com/2091/2542554426_e130a5afe5_m.jpg" alt="eu e o padim" width="240" height="180" /></a> <a title="Padim by Silveira Neto, on Flickr" href="http://www.flickr.com/photos/silveiraneto/2541710083/"><img src="http://farm3.static.flickr.com/2138/2541710083_51895e34fc_m.jpg" alt="Padim" width="240" height="180" /></a></p>
<p>There&#8217;s a museum with several personal objects from Padre Cicero. People go there in order to thanks for  miracles. If you got your a part of your body cured, of place there a wooden replica of that part of your body. If you got a car, you place a wooden car or a photo, and so on. There is thousands, maybe millions, of objects theres.</p>
<p style="text-align: center;"><a title="P5270054 by Silveira Neto, on Flickr" href="http://www.flickr.com/photos/silveiraneto/2541573295/"><img src="http://farm4.static.flickr.com/3071/2541573295_24566a6eaa_m.jpg" alt="P5270054" width="240" height="180" /></a> <a title="P5270063 by Silveira Neto, on Flickr" href="http://www.flickr.com/photos/silveiraneto/2542359812/"><img src="http://farm4.static.flickr.com/3188/2542359812_7b029fc0cf_m.jpg" alt="P5270063" width="240" height="180" /></a></p>
<p style="text-align: center;"><a title="P5270058 by Silveira Neto, on Flickr" href="http://www.flickr.com/photos/silveiraneto/2541550895/"><img src="http://farm4.static.flickr.com/3202/2541550895_bce0321c26_m.jpg" alt="P5270058" width="180" height="240" /></a> <a title="P5270056 by Silveira Neto, on Flickr" href="http://www.flickr.com/photos/silveiraneto/2542380722/"><img src="http://farm3.static.flickr.com/2176/2542380722_4650fbfa61_m.jpg" alt="P5270056" width="180" height="240" /></a> <a title="P5270062 by Silveira Neto, on Flickr" href="http://www.flickr.com/photos/silveiraneto/2542363174/"><img src="http://farm4.static.flickr.com/3024/2542363174_286bbbdeaf_m.jpg" alt="P5270062" width="180" height="240" /></a></p>
<p>You can see all photos at <a title="JavaDay Juazeiro Picassaweb" href="http://picasaweb.google.com/cafecomtapioca/IJuazeiroDoNorteJavaDay">Carneiro&#8217;s album</a> or in <a title="Flickr Album" href="http://flickr.com/photos/silveiraneto/sets/72157605368332652/" target="_blank">my album</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://silveiraneto.net/2008/06/16/event-review-javaday-juazeiro-do-norte/feed/</wfw:commentRss>
		</item>
		<item>
		<title>1º Java Day em Juazeiro do Norte</title>
		<link>http://silveiraneto.net/2008/05/25/java-day-em-juazeiro-do-norte/</link>
		<comments>http://silveiraneto.net/2008/05/25/java-day-em-juazeiro-do-norte/#comments</comments>
		<pubDate>Sun, 25 May 2008 16:32:01 +0000</pubDate>
		<dc:creator>Silveira</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[ceará]]></category>

		<category><![CDATA[CEJUG]]></category>

		<category><![CDATA[certificação]]></category>

		<category><![CDATA[IVIA]]></category>

		<category><![CDATA[JavaDay]]></category>

		<category><![CDATA[JSF]]></category>

		<category><![CDATA[Juazeiro do Norte]]></category>

		<category><![CDATA[netbeans]]></category>

		<category><![CDATA[palestra]]></category>

		<category><![CDATA[Rafael Carneiro]]></category>

		<category><![CDATA[Rafael Ponte]]></category>

		<category><![CDATA[Silveira Neto]]></category>

		<category><![CDATA[Spring]]></category>

		<category><![CDATA[Tarso Bessa]]></category>

		<guid isPermaLink="false">http://silveiraneto.net/?p=911</guid>
		<description><![CDATA[
Esse fim de semana o CEJUG vai colocar o pé na estrada e partir rumo a Juazeiro do Norte para realizar, no dia 31 de Maio, um JavaDay, ciclo de palestras sobre tecnologia Java.

Essa é a grade de palestras:



Horário
Palestra
Palestrante


08:30
Certificação Java. A palestra tem o intuito de apresentar as Certificações da Tecnologia Java, os programas de [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="alignnone size-full wp-image-913 aligncenter" title="CEJUG Ceará Itinerário Mapa" src="http://silveiraneto.net/wp-content/uploads/2008/05/cejug_ceara_itenarario.png" alt="" width="280" height="330" /></p>
<p>Esse fim de semana o <a title="Ceará Java User Group" href="http://www.cejug.org">CEJUG</a> vai colocar o pé na estrada e partir rumo a <a title="Wikipédia, português" href="http://pt.wikipedia.org/wiki/Juazeiro_do_norte">Juazeiro do Norte</a> para realizar, no dia 31 de Maio, um JavaDay, ciclo de palestras sobre tecnologia Java.</p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-912 aligncenter" title="1º JavaDay em Juazeiro do Norte" src="http://silveiraneto.net/wp-content/uploads/2008/05/1_javaday_juazeiro_do_norte.png" alt="" width="303" height="161" /></p>
<p>Essa é a grade de palestras:</p>
<table border="1">
<tbody>
<tr>
<th>Horário</th>
<th>Palestra</th>
<th>Palestrante</th>
</tr>
<tr>
<td>08:30</td>
<td><strong>Certificação Java</strong>. A palestra tem o intuito de apresentar as Certificações da Tecnologia Java, os programas de estudos para obtenção destas certificações, como o mercado de trabalho local avalia os profissionais certificados e as estatísticas referentes a remuneração dos profissionais certificados.</td>
<td><strong>Rafael Carneiro</strong> é JUG Leader do CEJUG (Ceará Java Users Group) e também coordenador do<br />
PortalJava. Trabalha na IVIA, gosta de ler diversos blogs sobre Java e possui algumas certificações da Sun.<br />
Mantém um blog sobre desenvolvimento de software no endereço <a href="http://www.rafaelcarneiro.org">www.rafaelcarneiro.org</a>.</td>
</tr>
<tr>
<td>09:30</td>
<td><strong>Utilizando o Spring Framework em Aplicações JEE</strong>. Desenvolver aplicações na plataforma JEE pode tornar-se difícil dependendo das tecnologias escolhidas. Esta palestra tem o objetivo de mostrar como o Spring Framework pode simplificar o desenvolvimento de software nessa plataforma, mantendo a solução leve e com serviços avançados, tais como gerenciamento de transações, acesso remoto a Web-Services ou RMI, e transparência no uso de AOP.</td>
<td><strong>Tarso Bessa</strong> é um entusiasta Java e atua no desenvolvimento na plataforma há 5 anos. Possui foco em tecnologias Web e gosta de ler bastante sobre novas tecnologias, tendências de mercado e computação distribuída. Atualmente trabalha na IVIA como Arquiteto Java, é formado em Informática pela UNIFOR e possui<br />
algumas certificações da Sun, entre elas a SCEA.</td>
</tr>
<tr>
<td>10:30</td>
<td><strong>Conhecendo o NetBeans 6</strong>. O NetBeans é uma plataforma de desenvolvimento gratuita, livre, multiplataforma e multilinguagem. A palestra apresenta os recursos básicos do NetBeans 6, focando a facilidade de seu aprendizado, seus recursos de produtividade e usabilidade, além da inclusão de linguagens como Ruby, JavaScript e PHP.</td>
<td><strong>Silveira Neto</strong> é estudante de Computação na Universidade Federal do Ceará, Embaixador de<br />
Campus da Sun Microsystems, participa do grupo de pesquisa ParGO (Paralelismo, Grafos e Otimização combinatória) e é membro do CEJUG (Ceará Java Users Group). Tem como hobbies os blogs (<a href="http://silveiraneto.net">silveiraento.net</a> e <a href="http://eupodiatamatando.com">eupodiatamatando.com</a>), o desenho e o desenvolvimento de Softwares Livres.</td>
</tr>
<tr>
<td>11:30</td>
<td><strong>JavaServer Faces, desenvolvendo aplicações web com produtividade</strong>. JSF é um framework que auxilia o desenvolvimento de sistemas para a Web, fornecendo recursos avançados e dinâmicos. A palestra aborda os principais conceitos da tecnologia, como ciclo de vida, características, mercado de trabalho e integração com outros frameworks do mercado.</td>
<td><strong>Rafael Ponte</strong> atua com desenvolvimento de software há mais de 3 anos, atualmente é analista<br />
pogramador na IVIA, com foco no desenvolvimento de aplicações web, entusiasta Java, JSF e Domain Driven<br />
Design, moderador da lista de discussão JavaServer Faces International Group e sócio fundador da empresa<br />
de consultoria Triadworks. Mantém um blog no endereço <a href="http://www.rponte.com.br">www.rponte.com.br</a>.</td>
</tr>
</tbody>
</table>
<p>Vai acontecer na <a title="FJN" href="http://www.fjn.edu.br">Faculdade de Juazeiro do Norte</a> (Rua São Francisco 1224 A São Miguel, Juazeiro do Norte, Ceará), no dia 31 de Maio a partir das 8:30. Além das palestras também vão haver sorteios de vários brindes.</p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-915 aligncenter" title="CEJUG e FJN" src="http://silveiraneto.net/wp-content/uploads/2008/05/cejug_fjn1.png" alt="" width="500" height="148" /></p>
<p>O evento é uma promoção do CEJUG e da Coordenação do Curso de Sistemas de Informação da Faculdade de Juazeiro do Norte.</p>
]]></content:encoded>
			<wfw:commentRss>http://silveiraneto.net/2008/05/25/java-day-em-juazeiro-do-norte/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Java key listening example</title>
		<link>http://silveiraneto.net/2008/05/01/java-key-listening-example/</link>
		<comments>http://silveiraneto.net/2008/05/01/java-key-listening-example/#comments</comments>
		<pubDate>Thu, 01 May 2008 15:36:19 +0000</pubDate>
		<dc:creator>Silveira</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[game]]></category>

		<category><![CDATA[game development]]></category>

		<category><![CDATA[Java]]></category>

		<category><![CDATA[JPanel]]></category>

		<category><![CDATA[KeyEvent]]></category>

		<category><![CDATA[KeyListener]]></category>

		<category><![CDATA[netbeans]]></category>

		<guid isPermaLink="false">http://silveiraneto.net/?p=845</guid>
		<description><![CDATA[This post continues a serie of posts I&#8217;m writing about 2D game development in Java.
A simple example of an JPanel that implements KeyListener (and a little trick) to handle KeyEvents to move a white square.


import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class KeyPanel extends JPanel implements KeyListener{
    private int x=50,y=50;
  [...]]]></description>
			<content:encoded><![CDATA[<p>This post continues a serie of posts I&#8217;m writing about 2D game development in Java.<br />
A simple example of an JPanel that implements KeyListener (and a little trick) to handle KeyEvents to move a white square.</p>
<p><center><img src="http://silveiraneto.net/wp-content/uploads/2008/05/screenshot1.png" alt="Java KeyListening Example" title="Java KeyListening Example" width="424" height="341" class="alignnone size-full wp-image-846" /></center></p>
<pre name="code" class="java">
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class KeyPanel extends JPanel implements KeyListener{
    private int x=50,y=50;
    public KeyPanel() {
        JTextField textfield = new JTextField();
        textfield.addKeyListener(this);
        add(textfield);
        textfield.setPreferredSize(new Dimension(0,0));
    }

    public void keyTyped(KeyEvent e) {}

    public void keyReleased(KeyEvent e) {}

    public void keyPressed(KeyEvent e) {
        if (e.getKeyCode() == KeyEvent.VK_LEFT)
            x-=5;
        if (e.getKeyCode() == KeyEvent.VK_RIGHT)
            x+=5;
        if (e.getKeyCode() == KeyEvent.VK_DOWN)
            y+=5;
        if (e.getKeyCode() == KeyEvent.VK_UP)
            y-=5;
        this.repaint();
    }

    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.setColor(Color.black);
        g.fillRect(0, 0, 500, 500);
        g.setColor(Color.white);
        g.fillRect(x, y, 50, 50);
    }
}
</pre>
<p>Download the complete NetBeans source project files: <a href="http://silveiraneto.net/downloads/KeyTest.tar.bz2">KeyTest.tar.bz2</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://silveiraneto.net/2008/05/01/java-key-listening-example/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Simple Java Tileset Example</title>
		<link>http://silveiraneto.net/2008/04/27/simple-java-tileset-example/</link>
		<comments>http://silveiraneto.net/2008/04/27/simple-java-tileset-example/#comments</comments>
		<pubDate>Mon, 28 Apr 2008 02:55:39 +0000</pubDate>
		<dc:creator>Silveira</dc:creator>
		
		<category><![CDATA[english]]></category>

		<category><![CDATA[art]]></category>

		<category><![CDATA[game development]]></category>

		<category><![CDATA[games]]></category>

		<category><![CDATA[Java]]></category>

		<category><![CDATA[netbeans]]></category>

		<category><![CDATA[tiles]]></category>

		<category><![CDATA[tilset]]></category>

		<guid isPermaLink="false">http://silveiraneto.net/?p=839</guid>
		<description><![CDATA[Tilesets are a common technique in game development to create all kinds of tile-based games (from strategy to RPG games).
Here&#8217;s a example of simple 2D isometric square tilesets. I decided to use 32&#215;32 pixels tiles and store 10 tiles per row in a single image:

I created a class called public class JGameCanvas that extends from [...]]]></description>
			<content:encoded><![CDATA[<p>Tilesets are a common technique in game development to create all kinds of tile-based games (from strategy to RPG games).</p>
<p>Here&#8217;s a example of simple 2D isometric square tilesets. I decided to use 32&#215;32 pixels tiles and store 10 tiles per row in a single image:</p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-841 aligncenter" title="tileset" src="http://silveiraneto.net/wp-content/uploads/2008/04/tileset.png" alt="" width="320" height="320" /></p>
<p>I created a class called public class JGameCanvas that extends from JPanel from swing:</p>
<pre name="code" class="java:nocontrols">
package game;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import javax.swing.JPanel;

enum Tile {
GRASS, GRASS_STONE, GRASS_BAGS, T3, T4, T5, T6, T7, T8, T9,
TREE, TREE_CHOMP, TREE_DEAD, T13, T14, T15, T16, T17, T18, T19,
ROAD_H, ROAD_V, ROAD_HV_DOWN, ROAD_HV_UP, ROAD_VH_RIGHT, ROAD_VH_LEFT, ROAD_CROSS, T27, T28, T29,
WALL, WALL_POSTER, WALL_END_RIGHT, WALL_END_LEFT, T34, T35, T36, T37, T38, T39,
T40, T41, T42, T43, T44, T45, T46, T47, T48, T49,
NEWS, T51,      RES_1, RES_2, BUSS_1, BUSS_2, HOSP_1, HOSP_2, MARK_1, MARK_2,
PIZZ_1, PIZZ_2, RES_3, RES_4, BUSS_3, BUSS_4, HOSP_3, HOSP_4, MARK_3, MARK_4,
PIZZ_3, PIZZ_4, RES_5, RES_6, BUSS_5, BUSS_6, HOSP_5, HOSP_6, MARK_5, MARK_6
}

public class JGameCanvas extends JPanel{
    private static final int tW = 32; // tile width
    private static final int tH = 32; // tile height
    private static final Tile map[][] =
    {{Tile.TREE,Tile.TREE, Tile.TREE, Tile.ROAD_V, Tile.GRASS, Tile.TREE, Tile.TREE_DEAD, Tile.GRASS_STONE, Tile.TREE, Tile.TREE},
     {Tile.WALL, Tile.WALL_POSTER, Tile.WALL_END_RIGHT , Tile.ROAD_V, Tile.WALL_END_LEFT, Tile.WALL, Tile.WALL_END_RIGHT, Tile.TREE_CHOMP, Tile.GRASS_STONE, Tile.GRASS_STONE},
     {Tile.GRASS,Tile.GRASS, Tile.GRASS_STONE, Tile.ROAD_V, Tile.GRASS, Tile.GRASS, Tile.GRASS, Tile.GRASS, Tile.GRASS, Tile.GRASS},
     {Tile.PIZZ_1,Tile.PIZZ_2, Tile.GRASS, Tile.ROAD_V, Tile.GRASS, Tile.GRASS, Tile.GRASS, Tile.GRASS, Tile.GRASS, Tile.GRASS},
     {Tile.PIZZ_3,Tile.PIZZ_4, Tile.GRASS, Tile.ROAD_V, Tile.GRASS, Tile.GRASS, Tile.MARK_1, Tile.MARK_2, Tile.HOSP_1, Tile.HOSP_2},
     {Tile.ROAD_H,Tile.ROAD_H, Tile.ROAD_H, Tile.ROAD_VH_LEFT, Tile.TREE, Tile.TREE_DEAD, Tile.MARK_3, Tile.MARK_4, Tile.HOSP_3, Tile.HOSP_4},
     {Tile.GRASS,Tile.BUSS_1, Tile.BUSS_2, Tile.ROAD_V, Tile.TREE, Tile.NEWS, Tile.MARK_5, Tile.MARK_6, Tile.HOSP_5, Tile.HOSP_6},
     {Tile.GRASS,Tile.BUSS_3, Tile.BUSS_4, Tile.ROAD_VH_RIGHT, Tile.ROAD_H, Tile.ROAD_H, Tile.ROAD_H, Tile.ROAD_H, Tile.ROAD_H, Tile.ROAD_H},
     {Tile.GRASS,Tile.BUSS_5, Tile.BUSS_6, Tile.ROAD_V, Tile.GRASS, Tile.GRASS, Tile.GRASS, Tile.GRASS, Tile.GRASS, Tile.GRASS},
     {Tile.GRASS,Tile.GRASS, Tile.GRASS, Tile.ROAD_V, Tile.GRASS, Tile.GRASS, Tile.GRASS, Tile.GRASS, Tile.GRASS, Tile.GRASS}
    };

    private Image tileset;

    public JGameCanvas() {
        tileset = Toolkit.getDefaultToolkit().getImage(this.getClass().getResource("resources/tileset.png"));
    }

    @Override
    protected void paintComponent(Graphics g) {
        g.setColor(Color.black);
        g.fillRect(0, 0, getWidth(), getHeight());

        for(int i=0;i<10;i++)
            for(int j=0;j<10;j++)
                drawTile(g, map[j][i], i*tW,j*tH);
    }

    protected void drawTile(Graphics g, Tile t, int x, int y){
        // map Tile from the tileset
        int mx = t.ordinal()%10;
        int my = t.ordinal()/10;
        g.drawImage(tileset, x, y, x+tW, y+tH,
                mx*tW, my*tH,  mx*tW+tW, my*tH+tH, this);
    }
}
</pre>
<p>Program running:</p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-840 aligncenter" title="Tilset Game Example" src="http://silveiraneto.net/wp-content/uploads/2008/04/tileset_game_java_screenshot.png" alt="" width="353" height="426" /></p>
<p>Those graphics I created for the game <a href="http://batalhao.codigolivre.org.br">Batalhão</a> and are under <a href="http://creativecommons.org/licenses/by-sa/3.0/">Creative Commons Attribution Share Alike 3.0</a> license. The source code is under GPL license, download the NetBeans project with sources: <a href="http://silveiraneto.net/downloads/tileset.tar.bz2">tileset.tar.bz2</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://silveiraneto.net/2008/04/27/simple-java-tileset-example/feed/</wfw:commentRss>
		</item>
		<item>
		<title>NetBeans Day Fortaleza with Gregg Sporar</title>
		<link>http://silveiraneto.net/2008/04/21/netbeans-day-fortaleza-with-gregg-sporar/</link>
		<comments>http://silveiraneto.net/2008/04/21/netbeans-day-fortaleza-with-gregg-sporar/#comments</comments>
		<pubDate>Mon, 21 Apr 2008 22:42:24 +0000</pubDate>
		<dc:creator>Silveira</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[Brazil]]></category>

		<category><![CDATA[ceará]]></category>

		<category><![CDATA[CEJUG]]></category>

		<category><![CDATA[fortaleza]]></category>

		<category><![CDATA[Gregg Sporar]]></category>

		<category><![CDATA[netbeans]]></category>

		<category><![CDATA[NetBeans Day]]></category>

		<category><![CDATA[NetBeans Day Fortaleza]]></category>

		<category><![CDATA[Sun]]></category>

		<category><![CDATA[Sun Microsystems]]></category>

		<category><![CDATA[ufc]]></category>

		<category><![CDATA[Universidade Federal do Ceará]]></category>

		<guid isPermaLink="false">http://silveiraneto.net/?p=832</guid>
		<description><![CDATA[
Those days Gregg Sporar, NetBeans enthusiast working at Sun Microsystems was here in Brazil and went to our city Fortaleza to speak in our NetBeans Day Fortaleza. We had only a couple of days to prepare everything but is always good work under such pressure.  

Me and my friend (Cassiano Carvalho) could toke care [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img src="http://farm3.static.flickr.com/2270/2415790466_1d989b61dc.jpg" alt="Gregg Sporar and CEJUG" width="500" height="375" /></p>
<p style="margin-bottom: 0cm;" lang="en-US">Those days <em>Gregg Sporar</em>, NetBeans enthusiast working at Sun Microsystems was here in Brazil and went to our city Fortaleza to speak in our <a title="NetBeans Day Oficial site" href="http://lia.ufc.br/netbeansday">NetBeans Day Fortalez</a>a. We had only a couple of days to prepare everything but is always good work under such pressure. <img src='http://silveiraneto.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p style="margin-bottom: 0cm; text-align: center;" lang="en-US"><img src="http://farm4.static.flickr.com/3119/2412582970_a3019a3399.jpg" alt="Me at the airport" width="500" height="375" /></p>
<p style="margin-bottom: 0cm;" lang="en-US">Me and my friend (Cassiano Carvalho) could toke care of him. First we got Gregg at our international airport, Pinto Martins from a flight from Recife. After that we went to a typical food dinner at <em>Coco Bambu</em> where&#8217;s Gregg could taste our tapioca and figure why our local JUG (CEJUG) event is called <em>Tapioca with Coffee</em>.</p>
<p style="margin-bottom: 0cm; text-align: center;" lang="en-US"><img src="http://farm3.static.flickr.com/2254/2412582978_bc34942fab.jpg" alt="Gregg tasting Tapioca" width="500" height="375" /></p>
<p style="margin-bottom: 0cm;" lang="en-US">After that we went to the hotel but we did not have realized that that day was the birthday of our city Fortaleza and the birthday party was a public concert at beach of one of most famous artist in Brazil, Roberto Carlos.</p>
<p style="margin-bottom: 0cm; text-align: center;" lang="en-US"><img class="alignnone size-medium wp-image-836" title="Roberto Carlos in the early years" src="http://silveiraneto.net/wp-content/uploads/2008/04/220px-robertocarlosinicioanos70-172x300.jpg" alt="Roberto Carlos in the early years" width="172" height="300" /><br />
<small><a title="Wikipedia, english" href="http://en.wikipedia.org/wiki/Roberto_Carlos_%28singer%29">Roberto Carlos</a> in the early years&#8230; <img src='http://silveiraneto.net/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /><br />
</small></p>
<p style="margin-bottom: 0cm;" lang="en-US">For those who are not Brazilians, To have an idea what Roberto Carlos is, just imagine (in a smaller proportion of course) some kind of Brazilian Elvis Presley. When we quited the restaurant the show was just finished, we had a huge crowd walking back for everywhere, streets blocked, mess and traffic extremely slow. We spend about two hour on this. We decided to park the car, get Gregg&#8217;s luggage and go walking the hotel. Luckily the rain don&#8217;t caught us.</p>
<p style="margin-bottom: 0cm; text-align: center;" lang="en-US"><img src="http://farm3.static.flickr.com/2055/2414748725_e25bb6bae5.jpg" alt="Rainy Day" width="500" height="375" /></p>
<p style="margin-bottom: 0cm;" lang="en-US">In the morning was raining cats and dogs at Fortaleza, what is very uncommon.</p>
<p style="text-align: center;"><img src="http://farm4.static.flickr.com/3163/2420062980_b38e792da3.jpg" alt="Gregg cheking out" width="500" height="375" /></p>
<p style="margin-bottom: 0cm;" lang="en-US">I picked Gregg at the hotel to the campus so we can meet the NPD (acronym in Portuguese for Data Processing Core) building, the Internet backbone of the entire state and where some projects are using NetBeans. Gregg also met our CS department, our labs and our cluster.</p>
<p style="margin-bottom: 0cm;" lang="en-US">While that we prepared the auditorium and some last details, test microphones and projector.</p>
<p style="text-align: center;"><a title="P4140007 by Silveira Neto, on Flickr" href="http://www.flickr.com/photos/silveiraneto/2414785031/"><img src="http://farm4.static.flickr.com/3104/2414785031_6543437a9d_m.jpg" alt="P4140007" width="240" height="180" /></a> <a title="P4140006 by Silveira Neto, on Flickr" href="http://www.flickr.com/photos/silveiraneto/2415604772/"><img src="http://farm3.static.flickr.com/2138/2415604772_b4aff5e5a9_m.jpg" alt="P4140006" width="240" height="180" /></a></p>
<p>People started to get and we got their names and mails for event certifications.  I opened the event talking about NetBeans, <a title="CEJUG" href="http://www.cejug.org">CEJUG</a> projects and opportunities for the students.</p>
<p style="text-align: center;"><a title="P4140019 by Silveira Neto, on Flickr" href="http://www.flickr.com/photos/silveiraneto/2415624912/"><img src="http://farm3.static.flickr.com/2259/2415624912_b1a793c5c5.jpg" alt="P4140019" width="500" height="343" /></a></p>
<p style="text-align: center;"><a title="P4140024 by Silveira Neto, on Flickr" href="http://www.flickr.com/photos/silveiraneto/2414817179/"><img src="http://farm3.static.flickr.com/2014/2414817179_e367fcb667.jpg" alt="P4140024" width="500" height="375" /></a></p>
<p>People from <a title="TV Software Livre" href="http://twiki.softwarelivre.org">TV Software Livre</a> (Free Software Television) was there too to record and transmit the event.</p>
<p style="text-align: center;"><a title="P4140017 by Silveira Neto, on Flickr" href="http://www.flickr.com/photos/silveiraneto/2415619536/"><img src="http://farm4.static.flickr.com/3019/2415619536_60391dd403_m.jpg" alt="P4140017" width="240" height="180" /></a> <a title="P4140025 by Silveira Neto, on Flickr" href="http://www.flickr.com/photos/silveiraneto/2415642166/"><img src="http://farm3.static.flickr.com/2079/2415642166_a113939810_m.jpg" alt="P4140025" width="240" height="180" /></a></p>
<p>The first Gregg&#8217;s talk was about NetBeans and some new features from the last version of NetBeans and some new features for the version 6.1.</p>
<p style="text-align: center;"><img src="http://farm3.static.flickr.com/2293/2414873915_7411060f79.jpg" alt="P4140045" width="500" height="375" /></p>
<p>The second was about Memory Leaks in Java and a method for detecting those. Very interesting.</p>
<p style="text-align: center;"><img src="http://farm3.static.flickr.com/2085/2415783616_2aa180e980.jpg" alt="Gregg Sporar" width="500" height="375" /></p>
<p style="text-align: center;"><img src="http://farm3.static.flickr.com/2005/2415683486_659f944ed2_m.jpg" alt="NetBeans Day Fortaleza" width="240" height="131" /></p>
<p style="text-align: center;"><img src="http://farm3.static.flickr.com/2086/2414865453_a244f9ba10_m.jpg" alt="NetBeans Day Fortaleza" width="240" height="180" /></p>
<p style="text-align: center;"><img src="http://farm3.static.flickr.com/2145/2414894449_98365c3ee3_m.jpg" alt="NetBeans Day" width="240" height="180" /> <img src="http://farm3.static.flickr.com/2399/2414896875_4ee1c85c75_m.jpg" alt="NetBeans Day Fortaleza" width="240" height="180" /></p>
<p style="text-align: center;"><img src="http://farm4.static.flickr.com/3119/2415777520_9e6f32def7.jpg" alt="Gregg Sporar" width="500" height="375" /></p>
<p>After Gregg quited to fly to Brasilia I did a presentation on NetBeans 6 and 6.1 Beta news features. You can download Gregg&#8217;s slides <a title="Slides 1" href="http://lia.ufc.br/netbeansday/IntegratedProfilingTools.pdf">here</a> and <a title="Slides 2" href="http://lia.ufc.br/netbeansday/NB.pdf">here</a>, my slides <a href="http://www.slideshare.net/silveiraneto/uma-olhada-no-netbeans-6/">here</a>.The recorded video is hosted at <a title="Google Video" href="http://video.google.com/videoplay?docid=-3688282154127203923">Google Video</a>. You can see more photos in <a title="Flickr Album" href="http://www.flickr.com/photos/silveiraneto/sets/72157604524166374/">this album</a>:</p>
<p style="text-align: center;"><img src="http://farm4.static.flickr.com/3052/2414770045_e7986cf550.jpg" alt="Gregg Sporar" width="500" height="375" /></p>
<p>Gregg, thank you very much and hope you liked your quick visit to Fortaleza. <img src='http://silveiraneto.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> Thanks also <a href="http://www.cejug.org">CEJUG</a> and all guys that made this event possible.</p>
]]></content:encoded>
			<wfw:commentRss>http://silveiraneto.net/2008/04/21/netbeans-day-fortaleza-with-gregg-sporar/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Netbeans Day Fortaleza</title>
		<link>http://silveiraneto.net/2008/04/11/netbeans-day-fortaleza/</link>
		<comments>http://silveiraneto.net/2008/04/11/netbeans-day-fortaleza/#comments</comments>
		<pubDate>Fri, 11 Apr 2008 04:22:06 +0000</pubDate>
		<dc:creator>Silveira</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[CEJUG]]></category>

		<category><![CDATA[fortaleza]]></category>

		<category><![CDATA[Greeg Sporar]]></category>

		<category><![CDATA[netbeans]]></category>

		<category><![CDATA[NetBeans Day]]></category>

		<category><![CDATA[ufc]]></category>

		<guid isPermaLink="false">http://silveiraneto.net/?p=826</guid>
		<description><![CDATA[
Gregg Sporar, evangelista do Netbeans pela Sun Microsystems, estará essa segunda-feira (14/Abril/2008) em Fortaleza para participar do NetBeans Day Fortaleza.
O evento será essa segunda-feira a partir das 13 horas no auditório da Pró-Reitoria de Graduação, no prédio da Biblioteca Central no Campus do Pici. Dê uma olhada no mapa. Os assentos são limitados, chegue cedo [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a title="NetBeans Day Fortaleza" href="http://lia.ufc.br/netbeansday/"><img class="alignnone size-full wp-image-825" title="Netbeans Day Fortaleza" src="http://silveiraneto.net/wp-content/uploads/2008/04/nbdayfortaleza.png" alt="Netbeans Day Fortaleza" width="476" height="100" /></a></p>
<p><a title="Gregg Sporar" href="http://weblogs.java.net/blog/gsporar/" target="_blank"><img class="alignnone size-full wp-image-827 alignleft" style="float: left;" title="Gregg Sporar, Sun Microsystems" src="http://silveiraneto.net/wp-content/uploads/2008/04/gregg.jpg" alt="Gregg Sporar, Sun Microsystems" width="132" height="147" /><strong>Gregg Sporar</strong></a>, evangelista do Netbeans pela <a title="Sun Microsystems" href="http://br.sun.com">Sun Microsystems</a>, estará essa segunda-feira (14/Abril/2008) em Fortaleza para participar do <strong><a title="NetBeans Day Fortaleza" href="http://lia.ufc.br/netbeansday/">NetBeans Day Fortaleza</a></strong>.</p>
<p>O evento será essa segunda-feira a partir das 13 horas no auditório da Pró-Reitoria de Graduação, no prédio da Biblioteca Central no Campus do Pici. <a title="Mapa" href="http://maps.google.com/maps?f=q&amp;hl=en&amp;geocode=&amp;q=Campus+do+pici&amp;sll=-3.718394,-38.543395&amp;sspn=0.322044,0.6427&amp;ie=UTF8&amp;ll=-3.742553,-38.573931&amp;spn=0.002516,0.005021&amp;t=h&amp;z=18">Dê uma olhada no mapa</a>. Os assentos são limitados, chegue cedo e garanta seu lugar.</p>
<p>No NetBeans Day eu também vou fazer uma apresentação mostrando a palestra que eu vou apresentar no FISL, <em>Netbeans 6: indo além do Java</em> na trilha de Ruby.</p>
<p>Em seguida ele partirá para Brasília e depois para Porto Alegre onde ele apresentará sua palestra no <a title="FISL" href="http://fisl.softwarelivre.org/9.0/papers/pub/programacao/239">FISL</a> intitulada <em>Memory Leaks in Java Applications - Different Tools for Different Types of Leaks.</em></p>
<p>Espero vocês lá!</p>
<p>E esse sábado tem o nosso tradicional <a title="CCT" href="http://www.cejug.org/pages/viewpage.action?pageId=22282243">Café com Tapioca</a>, não esqueçam de ir!</p>
]]></content:encoded>
			<wfw:commentRss>http://silveiraneto.net/2008/04/11/netbeans-day-fortaleza/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
