<?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>Eric Wendelin's Blog &#187; JavaFX</title>
	<atom:link href="http://eriwen.com/category/javafx/feed/" rel="self" type="application/rss+xml" />
	<link>http://eriwen.com</link>
	<description>Programming productively with open-source tools</description>
	<lastBuildDate>Tue, 13 Jul 2010 13:14:03 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=abc</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>What and why: the tech behind Cheqlist</title>
		<link>http://eriwen.com/programming/the-tech-behind-cheqlist/</link>
		<comments>http://eriwen.com/programming/the-tech-behind-cheqlist/#comments</comments>
		<pubDate>Thu, 22 Oct 2009 11:00:04 +0000</pubDate>
		<dc:creator>Eric Wendelin</dc:creator>
				<category><![CDATA[Groovy]]></category>
		<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Project]]></category>

		<guid isPermaLink="false">http://eriwen.com/?p=962</guid>
		<description><![CDATA[After <a href="http://eriwen.com/tools/cheqlist-remember-the-milk-app/" title="Cheqlist: A free, open-source desktop app for Remember The Milk">launching Cheqlist</a> last week, I felt compelled to give you a peek under the covers to see the tools involved and why I chose certain technologies. I hope to give you insight for times where you decide what to work with.

<h2>Getting started</h2>
Before I could really start working on a major project, I had to choose a VCS. I went with <a href="http://mercurial.selenic.com/wiki/">mercurial</a> based on a friend's insistence that I introduce myself to a <acronym title="Distributed Version Control System">DVCS</acronym> (specifically Hg) immediately. I knew what it was but never took time to try it myself. <strong>I am very glad I tried it.</strong>

Looking back, though, I think <strong><a href="http://git-scm.com/">git</a> may have been a (very slightly) better choice</strong>. Regardless, mercurial has served me very well and I strongly encourage anyone who hasn't given a DVCS a spin to do so!


Related posts:<ol><li><a href='http://eriwen.com/tools/cheqlist-remember-the-milk-app/' rel='bookmark' title='Permanent Link: Cheqlist: A free, open-source desktop app for Remember The Milk'>Cheqlist: A free, open-source desktop app for Remember The Milk</a></li>
<li><a href='http://eriwen.com/books/staplesofthebookshelf-lifehacker-88-tech-tricks-to-turbocharge-your-day/' rel='bookmark' title='Permanent Link: Lifehacker: 88 tech tricks to turbocharge your day'>Lifehacker: 88 tech tricks to turbocharge your day</a></li>
<li><a href='http://eriwen.com/tools/moving-to-github/' rel='bookmark' title='Permanent Link: Why I&#8217;m moving my projects to GitHub'>Why I&#8217;m moving my projects to GitHub</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>After <a href="http://eriwen.com/tools/cheqlist-remember-the-milk-app/" title="Cheqlist: A free, open-source desktop app for Remember The Milk">launching Cheqlist</a> last week, I felt compelled to give you a peek under the covers to see the tools involved and why I chose certain technologies. I hope to give you insight for times where you decide what to work with.</p>
<h2>Getting started</h2>
<p>Before I could really start working on a major project, I had to choose a VCS. I went with <a href="http://mercurial.selenic.com/wiki/">mercurial</a> based on a friend&#8217;s insistence that I introduce myself to a <abbr title="Distributed Version Control System">DVCS</abbr> (specifically Hg) immediately. I knew what it was but never took time to try it myself. <strong>I am very glad I tried it.</strong></p>
<p>Looking back, though, I think <strong><a href="http://git-scm.com/">git</a> may have been a (very slightly) better choice</strong>. Regardless, mercurial has served me very well and I strongly encourage anyone who hasn&#8217;t given a DVCS a spin to do so!</p>
<p>After getting some code and tests written, it was time to pick a project host. I chose <a href="http://kenai.com">kenai.com</a> because it integrated well with NetBeans (which is THE <acronym title="Integrated Development Environment">IDE</acronym> for JavaFX), it supported mercurial, and I like the direction Kenai is taking.</p>
<h2>Communicating with Remember The Milk: GroovyRTM</h2>
<p>RTM has a <a href="http://www.rememberthemilk.com/services/api/">REST API</a> that you can use to interact with the service. I decided to start by creating my own Groovy consumer of that API that would do the heavy lifting of interacting with <a href="http://www.rememberthemilk.com/">Remember The Milk</a> so I could keep my options open when looking for a UI technology. </p>
<p><img src="http://eriwen.com/images/groovyrtm.png" style="margin: 0 auto; display: block;" /></p>
<p>I chose <a href="http://groovy.codehaus.org/" title="The Groovy programming language">Groovy</a> because:</p>
<ul style="margin-left: 2em; list-style-type: upper-roman;">
<li>I didn&#8217;t want to write and maintain a lot of code</li>
<li>I wanted to be able compile to Java classes I could use with other languages that run on the <abbr title="Java Virtual Machine">JVM</abbr></li>
<li>It has great utilities for <a href="http://groovy.codehaus.org/Reading+XML+using+Groovy%27s+XmlSlurper">parsing XML</a> and <a href="http://groovy.codehaus.org/HTTP+Builder">making HTTP requests</a></li>
</ul>
<p>In the end, <strong>Groovy totally came through for me</strong>. It did everything I needed and more, easily.</p>
<p>UPDATE: I&#8217;ve been polishing <a href="http://github.com/emwendelin/groovyrtm">GroovyRTM</a> a lot since May and I&#8217;m confident in saying it is, by far, the best Java API kit available. If you have suggestions or improvements, <a href="http://eriwen.com/contact/">let me know</a>!</p>
<h2>The UI</h2>
<p><a href="http://www.rememberthemilk.com/services/api/">JavaFX</a> was a natural choice for me since I&#8217;d been playing with it since before it was 1.0. I was eager to develop something more than a demo app with it. The two key features here were:</p>
<ul style="margin-left: 2em; list-style-type: upper-roman;">
<li>Easily using Java classes &#8211; just an import</li>
<li>Deployment to the desktop AND mobile phones (hoping to deploy to Android eventually). I&#8217;m <strong>holding off on mobile</strong> right now because RTM introduced their own Android app which I can&#8217;t compete with (yet)</li>
<li>Java Web Start deployment gave me a lot of goodies for the desktop (title, icon, auto-update etc.)</li>
</ul>
<p>Here is where I thank <a href="http://learnjavafx.typepad.com/" title="Helping you become a JavaFXpert">Jim Weaver</a> and <a href="http://blogs.sun.com/rakeshmenonp/" title="Java, JavaFX and beyond...">Rakesh Menon</a> in particular for their useful JavaFX examples, helping me find a couple bugs, and their suggestions. If you use JavaFX and you&#8217;re not subscribing to their blogs, it&#8217;s time to come out from under that rock. </p>
<p>Frankly, I don&#8217;t think JavaFX was ready for building real applications until version 1.2 (released in June). Even then, including the <a href="http://code.google.com/p/jfxtras/">JFXtras</a> project is a must. <strong>There is no way I could have done this without them.</strong> I still had to create or adapt a few custom components. In all fairness, JavaFX is a young technology and I know that the team is working very, very hard on producing a lot more for JavaFX 1.3. <strong>Oh, and I can&#8217;t wait for the Sun to release the JavaFX visual designer.</strong></p>
<h2>Launch</h2>
<p>Last but not least, I needed to easily make a screencast to introduce Cheqlist. After listening to <a href="http://faceoffshow.com/2009/09/01/episode-32-screencast-showdown/">Faceoff Show&#8217;s excellent screencasting review</a>, I chose <a href="http://screenr.com">Screenr</a>. The only thing that caught me by surprise is that the video didn&#8217;t embed in my aggregation feeds. Could have been my idiot mistake, though.</p>
<p>You can catch <a href="http://screenr.com/vvH">my intro video here</a> if you haven&#8217;t for some reason.</p>
<h2>Updates!</h2>
<ul style="margin-left: 2em; list-style-type: upper-roman;">
<li>Where&#8217;d my edit button go? Oh yeah, you don&#8217;t need it anymore since all task edits occur immediately now.</li>
<li>Create and delete lists (including smart lists)</li>
<li>Toaster looks and acts much better ;)</li>
<li>Cheqlist is now on twitter! Follow <a href="https://twitter.com/cheqlist">@cheqlist</a> for news and updates.</li>
<li>Yet another update: Cheqlist has been approved for the <a href="http://store.java.com">Java Store</a>!</li>
</ul>
<p><a href="http://eriwen.com/cheqlist/Cheqlist.jnlp"><img width="88" height="34" style="border: medium none;" title="Launch Cheqlist via Java Web Start" src="http://eriwen.com/images/webstart.gif" alt="Launch Cheqlist"/></a></p>
<p>In addition, you should know that I&#8217;m currently working on <strong>notes management, minimizing to taskbar icon, and undo functionality</strong>. Anything else you want? Hit me up <a href="http://twitter.com/eriwen/">on twitter</a>, <a href="http://eriwen.com/contact/">email me</a> or <a href="http://github.com/emwendelin/cheqlist/issues">submit an issue</a>.</p>
<p>What would you have done differently? Comment!</p>


<p>Related posts:<ol><li><a href='http://eriwen.com/tools/cheqlist-remember-the-milk-app/' rel='bookmark' title='Permanent Link: Cheqlist: A free, open-source desktop app for Remember The Milk'>Cheqlist: A free, open-source desktop app for Remember The Milk</a></li>
<li><a href='http://eriwen.com/books/staplesofthebookshelf-lifehacker-88-tech-tricks-to-turbocharge-your-day/' rel='bookmark' title='Permanent Link: Lifehacker: 88 tech tricks to turbocharge your day'>Lifehacker: 88 tech tricks to turbocharge your day</a></li>
<li><a href='http://eriwen.com/tools/moving-to-github/' rel='bookmark' title='Permanent Link: Why I&#8217;m moving my projects to GitHub'>Why I&#8217;m moving my projects to GitHub</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://eriwen.com/programming/the-tech-behind-cheqlist/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Cheqlist: A free, open-source desktop app for Remember The Milk</title>
		<link>http://eriwen.com/tools/cheqlist-remember-the-milk-app/</link>
		<comments>http://eriwen.com/tools/cheqlist-remember-the-milk-app/#comments</comments>
		<pubDate>Mon, 12 Oct 2009 11:00:34 +0000</pubDate>
		<dc:creator>Eric Wendelin</dc:creator>
				<category><![CDATA[Groovy]]></category>
		<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Project]]></category>

		<guid isPermaLink="false">http://eriwen.com/?p=939</guid>
		<description><![CDATA[<img src="http://eriwen.com/cheqlist/cheqlist_logo_64.png" style="float: left; margin: 0 8px 0 0; border: 0px solid none;"/>Anyone looking to stay productive with their work, errands or chores keeps a to-do list. You need to have that to-do list available at all times and be easy to manage. 

With that in mind, I am introducing an application that I think will help you with that: <a href="http://eriwen.com/cheqlist/Cheqlist.jnlp">Cheqlist</a>. A desktop application powered by <a href="http://www.rememberthemilk.com/">Remember The Milk</a> that does 2 things very well: make <strong>managing tasks very efficient</strong> and <strong>look sweet</strong> on your desktop.

<h2>What makes Cheqlist awesome</h2>
I wanted to build an application that I, myself, would use everyday. There are a few key features that would make that happen:
<ul style="margin-left: 2em; list-style-type: upper-roman;"><li>Adding tasks quickly using RTM's new <a href="<a href="http://www.rememberthemilk.com/services/smartadd/">Smart Add feature</a></li>
<li>Visual appeal and lots of room for customization. Special thanks to Rakesh Menon for allowing me to use his <a href="http://blogs.sun.com/rakeshmenonp/entry/javafx_color_picker">JavaFX color picker</a></li>
<li>Easily search tasks and use RTM's <a href="http://www.rememberthemilk.com/help/answers/search/advanced.rtm">custom search keywords</a></li>
<li>Must work on all the OSes I use: Windows, Mac OS X, and Linux</li>
</ul>

On top of that, I think there are some things you'll come to appreciate:
<ul style="margin-left: 2em; list-style-type: upper-roman;"><li>Easy-update: Cheqlist checks for updates on startup, and if you want to upgrade, it takes just seconds!</li>
<li>Free and <a href="http://github.com/emwendelin/cheqlist" title="Cheqlist at GitHub">open-source</a></li>
<li>Lots of nice "easter egg" features for those of you who take time to find them ;)</li></ul>



Related posts:<ol><li><a href='http://eriwen.com/groovy/introducing-groovyrtm/' rel='bookmark' title='Permanent Link: Introducing GroovyRTM: A Groovier way to Remember The Milk'>Introducing GroovyRTM: A Groovier way to Remember The Milk</a></li>
<li><a href='http://eriwen.com/programming/the-tech-behind-cheqlist/' rel='bookmark' title='Permanent Link: What and why: the tech behind Cheqlist'>What and why: the tech behind Cheqlist</a></li>
<li><a href='http://eriwen.com/tools/moving-to-github/' rel='bookmark' title='Permanent Link: Why I&#8217;m moving my projects to GitHub'>Why I&#8217;m moving my projects to GitHub</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><img src="http://eriwen.com/cheqlist/cheqlist_logo_64.png" style="float: left; margin: 0 8px 0 0; border: 0px solid none;"/>Anyone looking to stay productive with their work, errands or chores keeps a to-do list. You need to have that to-do list available at all times and be easy to manage. </p>
<p>With that in mind, I am introducing an application that I think will help you with that: <a href="http://eriwen.com/cheqlist/Cheqlist.jnlp">Cheqlist</a>. A desktop application powered by <a href="http://www.rememberthemilk.com/">Remember The Milk</a> that does 2 things very well: make <strong>managing tasks very efficient</strong> and <strong>look sweet</strong> on your desktop.</p>
<h2>What makes Cheqlist awesome</h2>
<p>I wanted to build an application that I, myself, would use everyday. There are a few key features that would make that happen:</p>
<ul style="margin-left: 2em; list-style-type: upper-roman;">
<li>Adding tasks quickly using RTM&#8217;s new <a href="<a href="http://www.rememberthemilk.com/services/smartadd/">Smart Add feature</a></li>
<li>Visual appeal and lots of room for customization. Special thanks to Rakesh Menon for allowing me to use his <a href="http://blogs.sun.com/rakeshmenonp/entry/javafx_color_picker">JavaFX color picker</a></li>
<li>Easily search tasks and use RTM&#8217;s <a href="http://www.rememberthemilk.com/help/answers/search/advanced.rtm">custom search keywords</a></li>
<li>Must work on all the OSes I use: Windows, Mac OS X, and Linux</li>
</ul>
<p>On top of that, I think there are some things you&#8217;ll come to appreciate:</p>
<ul style="margin-left: 2em; list-style-type: upper-roman;">
<li>Easy-update: Cheqlist checks for updates on startup, and if you want to upgrade, it takes just seconds!</li>
<li>Free and <a href="http://github.com/emwendelin/cheqlist" title="Cheqlist at GitHub">open-source</a></li>
<li>Lots of nice &#8220;easter egg&#8221; features for those of you who take time to find them ;)</li>
</ul>
<h2>A quick look</h2>
<p>I&#8217;ve created a short (3 minutes) introductory video to show you the main features. UPDATE: Apparently screenr videos don&#8217;t show up in RSS properly. View it <a href="http://screenr.com/vvH" title="Cheqlist intro video">here</a>.</p>
<p><object classid='clsid:d27cdb6e-ae6d-11cf-96b8-444553540000' codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,115,0' width='560' height='345' style='margin-left: 10px;'><param name='movie' value='http://screenr.com/Content/assets/screenr_0817090731.swf' /><param name='flashvars' value='i=18211' /><param name='allowFullScreen' value='true' /><embed src='http://screenr.com/Content/assets/screenr_0817090731.swf' flashvars='i=18211' allowFullScreen='true' width='560' height='345' pluginspage='http://www.macromedia.com/go/getflashplayer'></embed></object></p>
<p>Here are a few screenshots:<br />
<img src="http://eriwen.com/images/cheqlist_screen_1.png" alt="Cheqlist Splash Screen and Edit panes"/><br />
<img src="http://eriwen.com/images/cheqlist_screen_2.png" alt="Cheqlist Settings"/></p>
<p>You can find more on the <a href="http://wiki.github.com/emwendelin/cheqlist/">Cheqlist Wiki</a>.</p>
<h2>Try it out!</h2>
<p>What you need:</p>
<ul style="margin-left: 2em; list-style-type: upper-roman;">
<li>A marginally recent (6u11 or newer) version of <a href="http://www.java.com/en/download/index.jsp" title="Download Java">Java</a></li>
<li><a href="http://www.rememberthemilk.com/">Remember The Milk account</a></li>
<li><strong><a href="http://eriwen.com/cheqlist/Cheqlist.jnlp">Launch Cheqlist</a></strong></li>
</ul>
<h2>Other resources</h2>
<p>Something missing? Request a feature at the <a href="http://github.com/emwendelin/cheqlist/issues" title="Cheqlist issue tracker">issue tracker</a>. </p>
<p>Having trouble? <a href="http://eriwen.com/contact/">Let me know</a> directly. </p>
<p>For more information, you can hit the <a href="http://github.com/emwendelin/cheqlist">project page</a> and <a href="http://wiki.github.com/emwendelin/cheqlist/">Wiki</a> on GitHub. </p>
<p>Enjoy!</p>


<p>Related posts:<ol><li><a href='http://eriwen.com/groovy/introducing-groovyrtm/' rel='bookmark' title='Permanent Link: Introducing GroovyRTM: A Groovier way to Remember The Milk'>Introducing GroovyRTM: A Groovier way to Remember The Milk</a></li>
<li><a href='http://eriwen.com/programming/the-tech-behind-cheqlist/' rel='bookmark' title='Permanent Link: What and why: the tech behind Cheqlist'>What and why: the tech behind Cheqlist</a></li>
<li><a href='http://eriwen.com/tools/moving-to-github/' rel='bookmark' title='Permanent Link: Why I&#8217;m moving my projects to GitHub'>Why I&#8217;m moving my projects to GitHub</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://eriwen.com/tools/cheqlist-remember-the-milk-app/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>JavaFX for the Java developer presentation</title>
		<link>http://eriwen.com/javafx/javafx-for-the-java-developer/</link>
		<comments>http://eriwen.com/javafx/javafx-for-the-java-developer/#comments</comments>
		<pubDate>Thu, 12 Mar 2009 11:00:43 +0000</pubDate>
		<dc:creator>Eric Wendelin</dc:creator>
				<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://eriwen.com/?p=601</guid>
		<description><![CDATA[I gave a talk this last Tuesday at the <a href="http://boulderjug.org/" title="Boulder Java Users Group homepage">Boulder JUG</a> on the topic of <em>JavaFX for the Java developer</em>. My audience and I both learned a lot from the experience. 

<strong><a href="http://eriwen.com/jfx/html/all.html" title="JavaFX for the Java developer slides">Check out the slide deck</a></strong>

<h2>What I covered</h2>

<ol><li>What is JavaFX and why do you care?</li>
<li>Comparisons between Java and JavaFX syntax</li>
<li>JavaFX language features</li>
<li>Building a sample application</li>
<li>Platform support</li></ol>



Related posts:<ol><li><a href='http://eriwen.com/javafx/javafx-syntaxhighlighter/' rel='bookmark' title='Permanent Link: How to add JavaFX to SyntaxHighlighter'>How to add JavaFX to SyntaxHighlighter</a></li>
<li><a href='http://eriwen.com/javafx/holiday-fun-with-javafx/' rel='bookmark' title='Permanent Link: Holiday fun with JavaFX'>Holiday fun with JavaFX</a></li>
<li><a href='http://eriwen.com/opinion/what-i-wanted-to-know/' rel='bookmark' title='Permanent Link: What I wanted to know before I left college: A programmer reflects'>What I wanted to know before I left college: A programmer reflects</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>I gave a talk this last Tuesday at the <a href="http://boulderjug.org/" title="Boulder Java Users Group homepage">Boulder JUG</a> on the topic of <em>JavaFX for the Java developer</em>. My audience and I both learned a lot from the experience. </p>
<p><img src="http://eriwen.com/images/javafxtalk.jpg" style="float:left; margin: 0 36px 4px 0;"/><strong><a href="http://eriwen.com/jfx/html/all.html" title="JavaFX for the Java developer slides" target="_blank">Check out the slide deck &raquo;</a></strong></p>
<h2>What I covered</h2>
<ol>
<li>What is JavaFX and why do you care?</li>
<li>Comparisons between Java and JavaFX syntax</li>
<li>JavaFX language features</li>
<li>Building a sample application</li>
<li>Platform support</li>
<li>Additional resources</li>
</ol>
<h2>How I approached the talk</h2>
<p>I took <a href="http://fredjean.net/">Fred Jean</a>&#8217;s advice and used the <a href="http://github.com/pragdave/codex/tree/master" title="Codex presentation system">Codex</a> presentation system which is a Ruby gem that adds to Eric Meyer&#8217;s <a href="http://meyerweb.com/eric/tools/s5/" title="Simple Standards-Based Slide Show System">S5</a>. Unlike Fred, though, I opted to use Mercurial to keep track of versioning. </p>
<p>To get some good practice for my talk <strong>I hosted a brown-bag discussion</strong> at Sun. This was a good idea because it made sure I was prepared fairly early and I got good feedback from my co-workers. Hopefully they learned something as well. I ended up about 20 minutes short during my brown-bag so I added 10 more slides (which hardly helped&#8230; I talked much too fast). </p>
<h2>What I would change</h2>
<p>Since I ran so short at BJUG, I&#8217;d probably try to talk about more JavaFX language features and explain them in greater detail than I did. Making jokes during the presentation seemed to go over very well and I might throw in a couple more. </p>
<p>If you missed my talk, you can <a href="http://eriwen.com/jfx/html/all.html" title="JavaFX for the Java developer slides" target="_blank">Check out the slides</a>. I hope the speak about this again at the <a href="http://denverjug.org">Denver JUG</a> later this year. Hope to see you there!</p>


<p>Related posts:<ol><li><a href='http://eriwen.com/javafx/javafx-syntaxhighlighter/' rel='bookmark' title='Permanent Link: How to add JavaFX to SyntaxHighlighter'>How to add JavaFX to SyntaxHighlighter</a></li>
<li><a href='http://eriwen.com/javafx/holiday-fun-with-javafx/' rel='bookmark' title='Permanent Link: Holiday fun with JavaFX'>Holiday fun with JavaFX</a></li>
<li><a href='http://eriwen.com/opinion/what-i-wanted-to-know/' rel='bookmark' title='Permanent Link: What I wanted to know before I left college: A programmer reflects'>What I wanted to know before I left college: A programmer reflects</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://eriwen.com/javafx/javafx-for-the-java-developer/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>How to add JavaFX to SyntaxHighlighter</title>
		<link>http://eriwen.com/javafx/javafx-syntaxhighlighter/</link>
		<comments>http://eriwen.com/javafx/javafx-syntaxhighlighter/#comments</comments>
		<pubDate>Mon, 09 Mar 2009 10:00:47 +0000</pubDate>
		<dc:creator>Eric Wendelin</dc:creator>
				<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://eriwen.com/?p=582</guid>
		<description><![CDATA[I got sick and tired of my JavaFX code not having proper syntax highlighting on my blog and in my presentations, so I extended <a href="http://alexgorbatchev.com/wiki/SyntaxHighlighter" title="SyntaxHighlighter project">SyntaxHighlighter</a> to do just that. 

<h2>How to implement it</h2>

First, you'll want to <a href="http://alexgorbatchev.com/wiki/SyntaxHighlighter:Download" title="download SyntaxHighlighter">download SyntaxHighlighter</a> or get the <a href="http://wordpress.org/extend/plugins/syntaxhighlighter-plus/" title="get the SyntaxHighlighter Plus Wordpress plugin">Wordpress plugin</a> (and <a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&#038;hosted_button_id=2930402">make a donation</a>, it really is a cool piece of work). Next, unzip or otherwise install it. Download my <a href="http://eriwen.com/downloads/shBrushJavaFX.js" title="JavaFX SyntaxHighlighter extension">shBrushJavaFX.js</a> and copy it to <em>&#60;install_directory&#62;/scripts</em>


Related posts:<ol><li><a href='http://eriwen.com/javafx/javafx-for-the-java-developer/' rel='bookmark' title='Permanent Link: JavaFX for the Java developer presentation'>JavaFX for the Java developer presentation</a></li>
<li><a href='http://eriwen.com/javafx/holiday-fun-with-javafx/' rel='bookmark' title='Permanent Link: Holiday fun with JavaFX'>Holiday fun with JavaFX</a></li>
<li><a href='http://eriwen.com/microformats/add-hcard-to-blogroll/' rel='bookmark' title='Permanent Link: Microformats: Add hCard to your blogroll in 2 minutes flat'>Microformats: Add hCard to your blogroll in 2 minutes flat</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>I got sick and tired of my JavaFX code not having proper syntax highlighting on my blog and in my presentations, so I extended <a href="http://alexgorbatchev.com/wiki/SyntaxHighlighter" title="SyntaxHighlighter project">SyntaxHighlighter</a> to do just that. </p>
<h2>How to implement it</h2>
<p>First, you&#8217;ll want to <a href="http://alexgorbatchev.com/wiki/SyntaxHighlighter:Download" title="download SyntaxHighlighter">download SyntaxHighlighter</a> or get the <a href="http://wordpress.org/extend/plugins/syntaxhighlighter-plus/" title="get the SyntaxHighlighter Plus Wordpress plugin">Wordpress plugin</a> (and <a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&#038;hosted_button_id=2930402">make a donation</a>, it really is a cool piece of work). Next, unzip or otherwise install it. Download my <a href="http://eriwen.com/downloads/shBrushJavaFX.js" title="JavaFX SyntaxHighlighter extension">shBrushJavaFX.js</a> and copy it to <em>&lt;install_directory&gt;/scripts</em></p>
<p>If you&#8217;re using the Wordpress plugin, you&#8217;ll have to edit the <em>syntaxhighlighter.php</em> file like so:</p>
<pre class="brush: php;">
//About line 112, just after this line
$this-&gt;aliases = apply_filters( 'agsyntaxhighlighter_aliases', array(

//Add the following:
'JavaFX'  =&gt; array('jfx', 'javafx'),
</pre>
<p>Now give it a try using the language &#8220;javafx&#8221; or &#8220;jfx&#8221;!</p>
<h2>JavaFX highlighting demo</h2>
<pre class="brush: javafx;">
def wheelCenterY:Number = stageHeight / 2 - 30;
var winnerId:Integer;
var wheelRotation:Number = 360 on replace {
    //Set winner
    winnerId = ((wheelRotation mod 360) / 360.0 * arr.size()).intValue();
}
var contestants = [&quot;Eric&quot;,&quot;Fred&quot;,&quot;Helga&quot;];
insert &quot;Olaf&quot; after contestants[0];
// contestants -&gt; Eric,Olaf,Fred,Helga
delete &quot;Helga&quot; from contestants;
// contestants -&gt; Eric,Olaf,Fred
</pre>
<p>Download the Javascript code for <a href="http://eriwen.com/downloads/shBrushJavaFX.js" title="JavaFX SyntaxHighlighter 2.0">SyntaxHighlighter 2.0.x</a> or <a href="http://eriwen.com/downloads/shBrushJavaFX1.5.js" title="JavaFX SyntaxHighlighter 1.5.x">SyntaxHighlighter 1.5.x</a>. Let me know if you see any bugs or have any feedback. Enjoy!</p>


<p>Related posts:<ol><li><a href='http://eriwen.com/javafx/javafx-for-the-java-developer/' rel='bookmark' title='Permanent Link: JavaFX for the Java developer presentation'>JavaFX for the Java developer presentation</a></li>
<li><a href='http://eriwen.com/javafx/holiday-fun-with-javafx/' rel='bookmark' title='Permanent Link: Holiday fun with JavaFX'>Holiday fun with JavaFX</a></li>
<li><a href='http://eriwen.com/microformats/add-hcard-to-blogroll/' rel='bookmark' title='Permanent Link: Microformats: Add hCard to your blogroll in 2 minutes flat'>Microformats: Add hCard to your blogroll in 2 minutes flat</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://eriwen.com/javafx/javafx-syntaxhighlighter/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Holiday fun with JavaFX</title>
		<link>http://eriwen.com/javafx/holiday-fun-with-javafx/</link>
		<comments>http://eriwen.com/javafx/holiday-fun-with-javafx/#comments</comments>
		<pubDate>Wed, 24 Dec 2008 20:43:19 +0000</pubDate>
		<dc:creator>Eric Wendelin</dc:creator>
				<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://eriwen.com/?p=380</guid>
		<description><![CDATA[After seeing all of the hype surrounding <a href="http://javafx.com" title="Download JavaFX">JavaFX</a> and it's recent 1.0 release, I decided to go ahead and play around with it a bit. Here's a bit of what I learned, and a cool little holiday app you can run. 

<h2>WTF is JavaFX and why might you care?</h2>
JavaFX is basically a way to develop much cooler GUIs with much less effort than Swing and have your app run almost everywhere. I would argue that it's not as easy as Flex BUT it allows gives you more control. 

<h2>A little holiday app</h2>

If you want to try it out yourself, just <a href="http://eriwen.com/extras/Holiday.jnlp">run it here</a> (with JavaFX installed) or grab the <a href="http://eriwen.com/downloads/Holiday.zip">NetBeans JavaFX project</a>, unzip it, and import it. Here is the code:


Related posts:<ol><li><a href='http://eriwen.com/javafx/javafx-syntaxhighlighter/' rel='bookmark' title='Permanent Link: How to add JavaFX to SyntaxHighlighter'>How to add JavaFX to SyntaxHighlighter</a></li>
<li><a href='http://eriwen.com/javafx/javafx-for-the-java-developer/' rel='bookmark' title='Permanent Link: JavaFX for the Java developer presentation'>JavaFX for the Java developer presentation</a></li>
<li><a href='http://eriwen.com/css/color-palette-with-css-and-moo/' rel='bookmark' title='Permanent Link: Create a Color Palette Using CSS and MooTools 1.2'>Create a Color Palette Using CSS and MooTools 1.2</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>After seeing all of the hype surrounding <a href="http://javafx.com" title="Download JavaFX">JavaFX</a> and it&#8217;s recent 1.0 release, I decided to go ahead and play around with it a bit. Here&#8217;s a bit of what I learned, and a cool little holiday app you can run. </p>
<h2>WTF is JavaFX and why might you care?</h2>
<p>JavaFX is basically a way to develop much cooler GUIs with much less effort than Swing and have your app run almost everywhere. I would argue that it&#8217;s not as easy as Flex BUT it allows gives you more control. </p>
<h2>A little holiday app for you</h2>
<p>If you want to try it out yourself, just <a href="http://eriwen.com/extras/Holiday.jnlp">run it here</a> (with JavaFX installed) or grab the <a href="http://eriwen.com/downloads/Holiday.zip">NetBeans JavaFX project</a>, unzip it, and import it. Here is the code:</p>
<pre class="brush: javafx;">
package holiday;
import javafx.animation.*;
import javafx.scene.*;
import javafx.scene.control.TextBox;
import javafx.scene.image.*;
import javafx.scene.input.MouseEvent;
import javafx.scene.paint.Color;
import javafx.scene.shape.*;
import javafx.scene.text.*;
import javafx.stage.*;
import java.lang.System;

var stageWidth = 325;
var stageHeight = 200;
var titleFont = Font { name:&quot;Helvetica&quot;, size: 15 };
var footerFont = Font { name:&quot;Helvetica&quot;, size: 10 };
// Node positioning
var titleHeight = 25;
var detailY = stageHeight;
var footerHeight = 25;

class Holiday {
    public var title:String;
    public var greeting:String;
}
var holidays:Holiday[];

public class HolidayList extends CustomNode {
    public var holidays:Holiday[];

    public override function create():Node {
        return Group {
            translateX: 0, translateY: 10,
            content: bind for(i in holidays) {
                var holidayY = indexof i * 20 + titleHeight;
                Group {
                    id: &quot;{i.title}&quot;,
                    content: [
                        HolidayListItem {
                            holiday: i,
                            holidayY: holidayY,
                            originalHolidayY: holidayY
                        }
                    ]
                }
            }
        }
    }
}
var holidayList = HolidayList { holidays: bind holidays };

class HolidayListItem extends CustomNode {
    public var holiday:Holiday;
    var expanded:Boolean = false;
    public var holidayY:Number;
    public var originalHolidayY:Number;
    public var holidayWidth:Number = stageWidth - 20;
    public var holidayHeight:Number = 20;

    public override function create():Node {
        return Group {
            translateY: bind holidayY,
            blocksMouse: true,
            clip: Rectangle {
                width: bind holidayWidth,
                height: stageHeight,
                fill: Color.WHITE
            },
            content: [
                Rectangle {
                    width: holidayWidth,
                    height: stageHeight,
                    fill: Color.WHITE
                },
                Text {
                    content: holiday.title,
                    translateX: 10, translateY: 10,
                },
                Rectangle {
                    var holidayHoverFill = Color.rgb(0,0,0,0);
                    y: -14, x: 10,
                    width: holidayWidth,
                    height: bind holidayHeight + 10,
                    fill: bind holidayHoverFill,
                    onMouseEntered: function(e:MouseEvent) { holidayHoverFill = Color.rgb(0,0,0,0.07); e.node.cursor = Cursor.HAND; },
                    onMouseExited: function(e:MouseEvent) { holidayHoverFill = Color.rgb(0,0,0,0); e.node.cursor = Cursor.DEFAULT; },
                    onMouseClicked: function(e:MouseEvent) {
                        if (currentHoliday == holiday) {
                            currentHoliday = null;
                        } else {
                            currentHoliday = holiday;
                        }
                        System.out.println(&quot;--applying onclick for {currentHoliday.title}&quot;);

                        if (expanded == false) {
                            var expand = Timeline {
                                keyFrames: [
                                    KeyFrame {
                                        time:0.6s values:holidayY =&gt; 20.0 tween Interpolator.LINEAR
                                        action: function() {
                                            holidayHeight = 150;
                                        }
                                    },
                                ]
                            };
                            expand.play();
                            expanded = true;
                        }
                        else {
                            var collapse = Timeline {
                                keyFrames: [
                                    KeyFrame {
                                        time:0.6s values:holidayY =&gt; originalHolidayY tween Interpolator.LINEAR
                                        action: function() {
                                            holidayHeight = 20;
                                        }
                                    },
                                ]
                            };
                            collapse.play();
                            expanded = false;
                        }
                    }
                }
            ]
        }
    }
}

class HolidayDetail extends CustomNode {
    public var curHoliday:Holiday = Holiday {
        title: &quot;NA&quot;,
        greeting: &quot;NA&quot;
    }
    public var detailFillColor:Color = Color.RED;
    public var detailFont:Font = Font.font(&quot;sansserif&quot;, FontWeight.REGULAR,24);
    public var detailBgColor:Color = Color.WHITE;
    public override function create():Node {
        System.out.println(&quot;----got holiday {curHoliday.title}&quot;);
        return Group {
            content: [
                Rectangle {
                    width: stageWidth,
                    height: stageHeight-60,
                    fill: bind detailBgColor,
                    blocksMouse: true
                },
                Text { content: bind curHoliday.greeting, translateX: 10, translateY: 40, font: detailFont, fill: detailFillColor },
            ]
        }
    }
}
var holidayDetailPane = HolidayDetail { translateY: bind detailY };

// Shows and hides Holiday detail when a Holiday is clicked
public var currentHoliday:Holiday = null on replace {
    var newDetailY = stageHeight; //Default to below the stage
    if (currentHoliday != null) {
        newDetailY = 27 + titleHeight;
        holidayDetailPane.curHoliday = currentHoliday;
        System.out.println(&quot;clicked holiday: {currentHoliday.title}&quot;);
    }
    // Show/hide detail pane
    var anim = Timeline {
        keyFrames: [
            KeyFrame { time: 0s, values: detailY =&gt; detailY tween Interpolator.LINEAR },
            KeyFrame { time: 0.7s, values: detailY =&gt; newDetailY tween Interpolator.LINEAR }
        ]
    };
    anim.play();
}

var titleBar = Group {
    content: [
        Rectangle { width: stageWidth, height: titleHeight, fill: Color.WHITE },
        Text { x: 85, y: 18, font: titleFont, fill: Color.BLACK content: &quot;Choose-a-holiday&quot; },
        Line { startX: 0, startY: titleHeight, endX: stageWidth, endY: titleHeight, stroke: Color.DARKGRAY }
    ]
}

var footerBar = Group {
    content: [
        Rectangle { x: 0, y: stageHeight-footerHeight, width: stageWidth, height: footerHeight, fill: Color.WHITE },
        Text { x: 75, y: stageHeight - 10, font: footerFont, fill: Color.BLACK, content: &quot;created by Eric Wendelin&quot; }
    ]
}

def stage = Stage {
    title: &quot;Choose-a-holiday&quot;,
    resizable: true,
    width: stageWidth,
    height: stageHeight,
    visible: true,
    scene: Scene {
        content: Group {
            content: bind [
                holidayList,
                holidayDetailPane,
                titleBar,
                footerBar
            ]
            clip: Rectangle {
                width: stageWidth,
                height: stageHeight
            }
        }
        fill: Color.TRANSPARENT
    }
}

function run() {
    //Add holidays
    insert Holiday {
        title: &quot;Christmas&quot;,
        greeting: &quot;Merry Christmas!&quot;
    } into holidays;
    insert Holiday {
        title: &quot;Hanukkah&quot;,
        greeting: &quot;Happy Hanukkah!&quot;
    } into holidays;
    insert Holiday {
        title: &quot;Kwanzaa&quot;,
        greeting: &quot;Happy Kwanzaa!&quot;
    } into holidays;
    insert Holiday {
        title: &quot;Festivus&quot;,
        greeting: &quot;Festivus for the rest of us!&quot;
    } into holidays;
    insert Holiday {
        title: &quot;New Year's Day&quot;,
        greeting: &quot;Happy New Year!&quot;
    } into holidays;
}
</pre>
<p>Cool, no?</p>
<h2>How to make your own JavaFX app</h2>
<p>I downloaded the <a href="http://www.netbeans.org/downloads/index.html" title="Download NetBeans IDE">NetBeans with JavaFX</a> bundle since that seemed like the easiest way to get started. They say it doesn&#8217;t work on Linux, but they lie. Follow <a href="http://www.weiqigao.com/blog/2008/12/11/javafx_1_0_on_linux_netbeans_plugin.html">these instructions</a> and you&#8217;ll be setup quickly.</p>
<p>Create a new &quot;JavaFX Script Application&quot; project, set it as the main project, and have it auto-create a Main .fx file. Copy the source above and hit &quot;Run Main Project&quot;. If you decide to play around with JavaFX, you&#8217;ll definitely need the <a href="http://java.sun.com/javafx/1/docs/api/">JavaFX API Docs</a>.</p>
<p>Enjoy! Merry Christmas!</p>


<p>Related posts:<ol><li><a href='http://eriwen.com/javafx/javafx-syntaxhighlighter/' rel='bookmark' title='Permanent Link: How to add JavaFX to SyntaxHighlighter'>How to add JavaFX to SyntaxHighlighter</a></li>
<li><a href='http://eriwen.com/javafx/javafx-for-the-java-developer/' rel='bookmark' title='Permanent Link: JavaFX for the Java developer presentation'>JavaFX for the Java developer presentation</a></li>
<li><a href='http://eriwen.com/css/color-palette-with-css-and-moo/' rel='bookmark' title='Permanent Link: Create a Color Palette Using CSS and MooTools 1.2'>Create a Color Palette Using CSS and MooTools 1.2</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://eriwen.com/javafx/holiday-fun-with-javafx/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>
