<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
    <channel>
        <title>Coffeejolts</title>
        <link>http://coffeejolts.com/site/</link>
        <description></description>
        <language>en-US</language>
        <copyright>Copyright 2008</copyright>
        <lastBuildDate>Fri, 08 Aug 2008 14:04:35 -0500</lastBuildDate>
        <generator>http://www.sixapart.com/movabletype/</generator>
        <docs>http://www.rssboard.org/rss-specification</docs>
        
        <item>
            <title>FXContainer v0.1</title>
            <description><![CDATA[After playing around with the modification I made im my previous post to MediaView, I was able to come up with a solution that works for any Node you pass in. The class is called FXContainer. Its purpose it to scale its contents to whatever width &amp; height you specify, while maintaining the aspect ratio of the original. <br /><br />By default, this results in the "black bar" effect that you've probably seen used to maintain aspect ratio in movies. That is usually appropriate, but there are also times when you may want the content expanded to fit the FXContainer, while still respecting the aspect ratio. For example, you may want a background image to fill the entire frame, but not become distorted. That is what the fillDimensions attribute does.<br /><br />Here are screenshots demonstating the FXContainer:<br /><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="fillFalse.png" src="http://coffeejolts.com/site/images/fillFalse.png" class="mt-image-left" style="margin: 0pt 20px 20px 0pt; float: left;" width="329" height="438" /></span>&nbsp;<span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="fillTrue.png" src="http://coffeejolts.com/site/images/fillTrue.png" class="mt-image-none" style="" width="329" height="439" /></span>
<br />Here is the source code.<br />
<blockquote>
<textarea name="code" class="jfx">
/*
 * FXContainer.fx
 *
 * Created on Aug 4, 2008, 10:02:32 PM
 * 
 * This class provides a container that can scale and
 * center its contents while maintaining the aspect 
 * ratio of the original
 */

package org.coffeejolts.javafx.tests;

import javafx.scene.*;
import javafx.application.*;
import javafx.scene.transform.*;


/**
 * @author coffeejolts
 */

public class FXContainer extends CustomNode{

    attribute fillDimensions:Boolean = false;

    attribute content:Node;
   
    attribute width:Integer;

    attribute height:Integer;
   
    private attribute group:Group = Group{
        content: bind content
        transform: bind [translate, scale]
    }
   

    private attribute sf:Number = bind 
    getScale(width,height,content.getBoundsWidth(),content.getBoundsHeight(),fillDimensions);

    private attribute scale:Scale = Scale{
        x: bind sf;
        y: bind sf;
    };

    private attribute translate:Translate = Translate{
        x: bind getTranslation(width, content.getBoundsWidth() * sf);
        y: bind getTranslation(height, content.getBoundsHeight() * sf);
    };

    private function getTranslation(a1:Number, a2:Number):Integer{
        return (
        a1 - a2) / 2.0  as Integer;
    }

    private function getScale(vw:Number, vh:Number, sw:Number, 
    sh:Number, fullscreen:Boolean):Number{
       
        var ar_v:Number = vw / vh;
        var ar_s:Number = sw / sh;
        var arViewLower:Boolean = ar_v < ar_s;
        if(
        fullscreen){
            arViewLower = not arViewLower;
        }
        if(
        arViewLower){
            return vw / sw;
        }
        return vh / sh;
    }

    function create():Node{
        return group;
    }
}


</textarea>
</blockquote>

You can run the demo via webstart below. I have pack200 enabled, which will greatly reduce the download size for those of you using the Java 1.6.10 beta.

<p><script src="http://java.com/js/deployJava.js"></script>
         <script>
            var url="http://coffeejolts.com/java/webstart/fxcontainer/launch.jnlp";
            deployJava.createWebStartLaunchButton(url, "1.6");
        </script>
</p>]]></description>
            <link>http://coffeejolts.com/site/2008/08/fxcontainer-v01.html</link>
            <guid>http://coffeejolts.com/site/2008/08/fxcontainer-v01.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">Java</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">JavaFX</category>
            
            
            <pubDate>Fri, 08 Aug 2008 14:04:35 -0500</pubDate>
        </item>
        
        <item>
            <title>An &apos;improved&apos; JavaFX MediaView class</title>
            <description><![CDATA[Since the JavaFX Preview SDK was released, I have been toying around with its video support. Overall, it is really, <u><i><b>really</b></i></u> good. I'm impressed and I've only hit the tip of the iceberg. Of course, there is room for improvement. For example, the current MediaView class does not have any concept of width nor height, whereas the ImageView class does. I was able to fix that with this amazingly short piece of code. <br />
<blockquote>
   <textarea name="code" class="jfx">package org.coffeejolts.javafx.tests;

/*
 * BetterMediaView.fx
 *
 * adds width, height, and surrounding bar color to 
 * MediaView.fx
 */



import javafx.scene.media.MediaView;
import javafx.scene.paint.Color;
import javafx.lang.*;

/**
 * @author coffeejolts
 */

public class ImprovedMediaView extends MediaView{

    attribute fill:Color = Color.BLACK
    on replace{
        myJPanel.setBackground(fill.getAWTColor());
    };
        
    attribute width:Integer
    on replace{
        sgc.setSize(width, height); 
    };
    
    attribute height:Integer
    on replace{
        sgc.setSize(width, height); 
    };    
    
}
   </textarea>
</blockquote>
Yes, that is really it. To use it, just swap out ImprovedMediaView for MediaView, and set your width, height, and fill like this...<br />
<blockquote>
   <textarea name="code" class="jfx">package org.coffeejolts.javafx.tests;
var frame:Frame = Frame {
    title: "ImprovedMediaView Test"
    width: 430
    height: 360
    closeAction: function() { 
        java.lang.System.exit( 0 ); 
    }
    visible: true

    stage: Stage {        
        content:[
            Rectangle{
                x: 10, y: 10
                width: bind frame.stage.width - 20
                height: bind frame.stage.height - 20
                fill: Color.DARKGRAY                
            },
            ImprovedMediaView{                
                width: bind frame.stage.width - 40
                height: bind frame.stage.height - 40
                translateX: 20
                translateY: 20
                fill: Color.BLACK
                clipAntialiased: true
                mediaPlayer: MediaPlayer{
                    autoPlay: true
                    repeatCount: MediaPlayer.REPEAT_FOREVER
                    media: Media{
                        source: "file:/C:/media/movie.avi";
                    }
                }
            }
        ]        
    }
}</textarea>
</blockquote>

The result looks like this: <br /><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="imv-cap1.png" src="http://coffeejolts.com/site/images/imv-cap1.png" class="mt-image-left" style="margin: 0pt 20px 20px 0pt; float: left;" width="273" height="322" /></span> <div><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="imv-cap2.png" src="http://coffeejolts.com/site/images/imv-cap2.png" class="mt-image-left" style="margin: 0pt 20px 20px 0pt; float: left;" width="600" height="327" /></span></div><div><br /></div>]]></description>
            <link>http://coffeejolts.com/site/2008/08/an-improved-javafx-mediaview-c.html</link>
            <guid>http://coffeejolts.com/site/2008/08/an-improved-javafx-mediaview-c.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">Java</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">JavaFX</category>
            
            
            <pubDate>Tue, 05 Aug 2008 18:05:45 -0500</pubDate>
        </item>
        
        <item>
            <title>JavaFX Brush for Syntax Highlighter</title>
            <description><![CDATA[In anticipation of the JavaFX SDK preview release, I have whipped up a very primitive JavaFX Script brush for <a href="http://code.google.com/p/syntaxhighlighter/">Syntax Highlighter</a>. Adding the brush is easy, so I will not bore you with boilerplate. Include the brush, set your code class to "jfx", and you get nicely highlighted JavaFX Script code on your blog!<br /><br />Download the brush here: <a href="http://coffeejolts.com/downloads/shBrushJavaFX.js">http://coffeejolts.com/downloads/shBrushJavaFX.js</a><br /><br />Here is a sample from <a href="http://learnjavafx.typepad.com/">James Weaver's blog</a>, highlighted using my brush:<br />
<textarea name="code" class="jfx">/*
 *  ButtonNode.fx - 
 *  A node that functions as an image button
 *
 *  Developed 2008 by James L. Weaver (jim.weaver at lat-inc.com)
 *  to demonstrate how to create custom nodes in JavaFX
 */

package com.javafxpert.custom_node;
 
import javafx.animation.*;
import javafx.input.*;
import javafx.scene.*;
import javafx.scene.effect.*;
import javafx.scene.image.*;
import javafx.scene.paint.*;
import javafx.scene.text.*;

public class ButtonNode extends CustomNode { 
  
  /**
   * The title for this button
   */
  public attribute title:String;

  /**
   * The Image for this button
   */
  private attribute btnImage:Image;

  /**
   * The URL of the image on the button
   */
  public attribute imageURL:String on replace {
    btnImage = 
      Image {
        url: imageURL
      };
  }
   
  /**
   * A Timeline to control fading behavior when mouse enters or exits a button
   */
  private attribute fadeTimeline =
    Timeline {
      keyFrames: [
        KeyFrame {
          time: 0ms
          values: [
            fade =&gt; 0.0
          ]
        },
        KeyFrame {
          time: 600ms
          values: [
            fade =&gt; 1.0 tween Interpolator.LINEAR
          ]
        }
      ]
    };

  /**
   * This attribute is interpolated by a Timeline, and various
   * attributes are bound to it for fade-in behaviors
   */
  private attribute fade:Number = 1.0;
  
  /**
   * This attribute represents the state of whether the mouse is inside
   * or outside the button, and is used to help compute opacity values
   * for fade-in and fade-out behavior.
   */
  private attribute mouseInside:Boolean;

  /**
   * The action function attribute that is executed when the
   * the button is pressed
   */
  public attribute action:function():Void;
   
  /**
   * Create the Node
   */
  public function create():Node {
    Group {
      var imageRef:ImageView
      var textRef:Text
      content: [
        imageRef = ImageView {
          image: btnImage
          opacity: bind if (mouseInside) 1.0 - fade / 2 else fade / 2 + 0.5
        },
        textRef = Text {
          translateX: bind imageRef.getWidth() / 2 - textRef.getWidth() / 2
          translateY: bind imageRef.getHeight() - textRef.getHeight() 
          textOrigin: TextOrigin.TOP
          content: title
          fill: Color.WHITE
          opacity: bind if (mouseInside) fade else 1.0 - fade
          font:
            Font {
              name: "Sans serif"
              size: 16
              style: FontStyle.BOLD
            }
        },       
      ]
      onMouseEntered:
        function(me:MouseEvent):Void {
          mouseInside = true;
          fadeTimeline.start();
        }
      onMouseExited:
        function(me:MouseEvent):Void {
          mouseInside = false;
          fadeTimeline.start();
          me.node.effect = null
        }
      onMousePressed:
        function(me:MouseEvent):Void {
          me.node.effect = Glow {
            level: 0.9
          };
        }
      onMouseClicked:
        function(me:MouseEvent):Void {
          fadeTimeline.start();
          action();
          me.node.effect = null;
        }
    };
  }
}  
</textarea>]]></description>
            <link>http://coffeejolts.com/site/2008/07/javafx-brush-for-syntax-highli.html</link>
            <guid>http://coffeejolts.com/site/2008/07/javafx-brush-for-syntax-highli.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">Java</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">JavaFX</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">brush</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">James Weaver</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">java</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">javafx</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">syntaxhighlighter</category>
            
            <pubDate>Mon, 28 Jul 2008 09:27:54 -0500</pubDate>
        </item>
        
        <item>
            <title>Java Media - Little By Little</title>
            <description><![CDATA[<p>The Java Media Components jar from the JavaFX SDK preview is available from the nightly builds. Without the native dlls, this is of little use. However, I managed to at least get a list of the supported formats from the package. I built it into a web start app. I'm especially interested to see what those of you running MacOS or Linux see when you run this.</p>  <p><script src="http://java.com/js/deployJava.js"></script>         <script>
            var url="http://coffeejolts.com/java/webstart/jmc/launch.jnlp";
            deployJava.createWebStartLaunchButton(url, "1.6");
        </script></p>]]></description>
            <link>http://coffeejolts.com/site/2008/07/java-media-little-by-little.html</link>
            <guid>http://coffeejolts.com/site/2008/07/java-media-little-by-little.html</guid>
            
            
            <pubDate>Tue, 01 Jul 2008 10:36:09 -0500</pubDate>
        </item>
        
        <item>
            <title>More Java Media Components Information Released!</title>
            <description><![CDATA[Sun has posted some slides from a presentation on Java Media Components on the JavaONE website. Unfortunately, the demos weren't included, but the source code in the slides hints at a very simple to use media API.<br /><br />For example: <br />

 <textarea name="code" class="java" cols="60" rows="10">class SimplePlayerDemo extends JFrame {
    MediaPlayerDemo() {
        JMediaPlayer mp;
        try {
            mp = new JMediaPlayer(new URI("movie.mov"));
        } catch (Exception e) {
        System.out.println("Error opening media" + e);
        ...
    }
    add(mp);
    pack();
    setVisible(true);
    mp.play();
} ...
</textarea>
<br />I am SO looking forward to the SDK pre-release.<br /> <a href="http://dsc.sun.com/learning/javaoneonline/2008/pdf/TS-6509.pdf">http://dsc.sun.com/learning/javaoneonline/2008/pdf/TS-6509.pdf</a> <div><br /></div>]]></description>
            <link>http://coffeejolts.com/site/2008/06/more-java-media-components-inf.html</link>
            <guid>http://coffeejolts.com/site/2008/06/more-java-media-components-inf.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">Java</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">JavaFX</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">Java Media Components</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">JavaFX</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">JMC</category>
            
            <pubDate>Mon, 09 Jun 2008 10:06:42 -0500</pubDate>
        </item>
        
        <item>
            <title>Trunk install</title>
            <description><![CDATA[<p>After a bunch of wrangling, I have fixed (hidden) the audio noise problems by using a ground loop isolator. With that taken care of, I started work on creating a proper trunk installation for the car PC.</p>
<p>I wanted everything to be easily removable, so I chose to build a shelf out of 1/2" MDF and hang it using threaded rods. I covered the shelf in black carpet to match the trunk, and mounted a bracket on it to secure the computer to.</p>Everything seems to fit nicely. The computer is secure, and the trunk is still usable. I'm debating removing the carpet and replacing it with black Veltex, which is the fuzzy side of Velcro. Doing so would allow me to keep the cables secure, while at the same time easily movable. The next step is for me to take some pictures, which I should have done during the install.<br /><p></p><br /><p>&nbsp;</p>]]></description>
            <link>http://coffeejolts.com/site/2008/05/trunk-install.html</link>
            <guid>http://coffeejolts.com/site/2008/05/trunk-install.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">Mobile Computing</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">car pc install log</category>
            
            
            <pubDate>Fri, 23 May 2008 11:18:00 -0500</pubDate>
        </item>
        
        <item>
            <title>Fix for Mevenide 1 on Netbeans 6.*</title>
            <description><![CDATA[Netbeans 6 has great Maven 2 support. Unfortunately, my company is still using Maven 1, and there's no change in sight. There are mevenide builds for Netbeans 6 available, but the plugin has trouble finding MAVEN_HOME, at least on Windows. <br /><br />I scoured Jira, and found a fix. <a href="http://mevenide.codehaus.org/download/mevenide-netbeans-1.2.zip">Assuming that you have already downloaded and installed the correct version of mevenide</a>,&nbsp; add the following entry to the netbeans_default_options variable in netbeans.conf: -J-DEnv-MAVEN_HOME=\"<i><b>YourPathToMavenHome</b></i>\". That's it!<br />]]></description>
            <link>http://coffeejolts.com/site/2008/05/fix-for-mevenide-1-on-netbeans.html</link>
            <guid>http://coffeejolts.com/site/2008/05/fix-for-mevenide-1-on-netbeans.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">Java</category>
            
            
            <pubDate>Fri, 02 May 2008 15:25:43 -0500</pubDate>
        </item>
        
        <item>
            <title>GPS died- and then came back to life!</title>
            <description><![CDATA[So, I finally got navigation working right and then I notice this morning that the GPS receiver can't get a lock. I did a bit of Google-ing, and found some posts saying that removing the battery can fix this problem. I took the GPS receiver apart, only to find that the manufacturer glued the battery to the prongs. <br /><br />Miraculously, after I put it back together, the GPS started working again. My guess is that it resets itself after a certain amount of time passes. The important thing is that it is working again. I'll keep my eyes open for new receivers in case this one dies again.<br />]]></description>
            <link>http://coffeejolts.com/site/2008/04/gps-died.html</link>
            <guid>http://coffeejolts.com/site/2008/04/gps-died.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">car pc install log</category>
            
            
            <pubDate>Mon, 21 Apr 2008 14:57:41 -0500</pubDate>
        </item>
        
        <item>
            <title>Ground point upgraded</title>
            <description><![CDATA[I upgraded the grounding point last night. Or, maybe I should say that <u>I hope</u> that I upgraded the grounding point last night. I had it grounded to the trunk pan, which was causing a lot of noise in the audio. So, I took out one of the bolts that hold the back seat in, sanded all the paint off of the surfaces, and grounded the system to that. <br /><br />I couldn't actually test it last night, since my DC-DC power supply is still on its way back from Opus Solutions. I sent it back to them to have it modified because it was powering USB devices even when the car was turned off. The PSU should be waiting for me when I get home from work. I can't wait to hook everything up and see how it works now. I'm keeping my fingers crossed that my ground loop noise is gone.<br /><br /><b>UPDATE</b><br /><br /><i>Moving the ground point did help a little, but I still had some noise, especially when the computer read from the hard disk. I then tried re-routing the audio cables away from the power cables, which did not help at all. So, I finally broke down and bought a <a href="http://images.bestbuy.com/BestBuy_US/images/products/4118/4118145_sa.jpg" target="_blank">ground loop isolator</a>. I don't notice any signal degradation, and all of the noise is gone. With this noise problem solved, I'm finally ready to build the trunk installation and post some pictures.</i><br />]]></description>
            <link>http://coffeejolts.com/site/2008/04/ground-point-upgraded.html</link>
            <guid>http://coffeejolts.com/site/2008/04/ground-point-upgraded.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">Mobile Computing</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">car pc install log</category>
            
            
            <pubDate>Thu, 17 Apr 2008 12:09:51 -0500</pubDate>
        </item>
        
        <item>
            <title>Installation update</title>
            <description><![CDATA[Here are the tasks I have completed on the car pc so far. I should have taken pictures to document, but I was in a hurry.<br /><br /><ul><li>Map pocket modified and installed.</li><ul><li>I took the map
pocket apart and installed a hinge to mount the LCD to. I also drilled
a hole in the back to route the power cables through.<br /></li></ul><li>AuxMod installed</li><ul><li>I removed the stock head-unit and installed the auxmod module into it.</li></ul><li>Lots and lots of cable routing done</li><ul><li>Routed power, audio, video, and usb cables throughout the car.</li><li>Installed distribution blocks for power / ground.<br /></li></ul><li>USB hub installed</li><li>All software installed and configured on the PC.</li><li>Performed power button modification hack so that the PC turns on and off with the car, via the Opus PSU.</li></ul>]]></description>
            <link>http://coffeejolts.com/site/2008/04/installation-update.html</link>
            <guid>http://coffeejolts.com/site/2008/04/installation-update.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">car pc install log</category>
            
            
            <pubDate>Wed, 16 Apr 2008 15:12:54 -0500</pubDate>
        </item>
        
        <item>
            <title>More Java Media Components News Coming</title>
            <description><![CDATA[I went hunting for more information on <a href="http://www.google.com/search?hl=en&amp;safe=active&amp;q=%22Java+Media+Components%22" target="_blank">Java Media Components</a>, and found that there are two sessions scheduled for <a href="http://java.sun.com/javaone/sf/" arget="_blank">JavaOne</a> that should shine some light on the new API.<br /><br /><a href="https://www28.cplan.com/cc191/session_details.jsp?isid=296509&amp;ilocation_id=191-1&amp;ilanguage=english" target="_blank">https://www28.cplan.com/cc191/session_details.jsp?isid=296509&amp;ilocation_id=191-1&amp;ilanguage=english</a><br /><br /><a href="https://www28.cplan.com/cc191/session_details.jsp?isid=296511&amp;ilocation_id=191-1&amp;ilanguage=english" target="_blank"> https://www28.cplan.com/cc191/session_details.jsp?isid=296511&amp;ilocation_id=191-1&amp;ilanguage=english</a><br />]]></description>
            <link>http://coffeejolts.com/site/2008/04/more-java-media-components-new.html</link>
            <guid>http://coffeejolts.com/site/2008/04/more-java-media-components-new.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">Java</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">JavaFX</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">Java Media Components</category>
            
            <pubDate>Mon, 14 Apr 2008 14:49:34 -0500</pubDate>
        </item>
        
        <item>
            <title>Yahoo Maps in Swing!</title>
            <description><![CDATA[<p>I found a page documenting the tile naming schemes of the various online map providers today. With that information, and the <a href="http://today.java.net/pub/a/today/2007/11/13/mapping-mashups-with-jxmapviewer.html">JxMapViewer</a> component from <a href="http://swinglabs.org/projects.jsp">swingx-ws</a>, I was able to hack together a Yahoo Maps mash-up in under an hour.<br /><br />The code still has a bug in it: latitude / longitude do not translate correctly. The marker on the map should be placed on London. I'll have to do some more tweaking to see if I can finish this up. The code needed to do this is surprisingly short:</p>
<textarea name="code" class="java" cols="60" rows="10">public class YahooMapFrame extends javax.swing.JFrame {

    TileFactoryInfo yahoo = new TileFactoryInfo(0, 17, 18, 256, true, true, "http://us.maps2.yimg.com/us.png.maps.yimg.com/png?v=3.1.0&amp;t=m", "x", "y", "z") {

        @Override
        public String getTileUrl(int x, int y, int zoom) {
            int yp = ((int) Math.pow(2, 18 - zoom)) / 2 - y;           
            String url = new StringBuffer(baseURL).append("&amp;x=").append(x).append("&amp;y=").append(yp).append("&amp;z=").append(zoom).toString();
            return url;
        }
    };
    TileFactory factory = new DefaultTileFactory(yahoo);

    /** Creates new form YahooMapFrame */
    public YahooMapFrame() {
        setLook();
        initComponents();
        mapKit.setTileFactory(factory);
        mapKit.setZoom(17);
    }
</textarea>

<script src="http://java.com/js/deployJava.js"></script>
        <script>
            var url="http://coffeejolts.com/java/webstart/jxym/launch.jnlp";
            deployJava.createWebStartLaunchButton(url, "1.6");
        </script>
]]></description>
            <link>http://coffeejolts.com/site/2008/04/yahoomaps-swing.html</link>
            <guid>http://coffeejolts.com/site/2008/04/yahoomaps-swing.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">General</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">Java</category>
            
            
            <pubDate>Fri, 11 Apr 2008 10:29:53 -0500</pubDate>
        </item>
        
        <item>
            <title>Car PC Page Posted</title>
            <description><![CDATA[I've added a page to document my Car PC install. You can view it at&nbsp; <a href="http://coffeejolts.com/site/car-pc.html">http://coffeejolts.com/site/car-pc.html</a><br /><br />]]></description>
            <link>http://coffeejolts.com/site/2008/02/car-pc.html</link>
            <guid>http://coffeejolts.com/site/2008/02/car-pc.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">General</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">Mobile Computing</category>
            
            
            <pubDate>Fri, 29 Feb 2008 12:19:44 -0500</pubDate>
        </item>
        
        <item>
            <title>Installing Jax-WS in a local Maven Repository</title>
            <description><![CDATA[<p>I said I wouldn't, but I did it anyway. This morning, I built a batch file and a pom to install the NetBeans distribution of Jax-WS into my local maven 2 repository. I based my approach on <a href="http://mohanrajk.wordpress.com/2006/12/03/maven-2-jax-ws-ri-and-tomcat-deploy-part-i/">this post</a>, which detailed the process using a unix shell.<br /><br />I use Windows at work, so I created a batch file to install the jars and a pom into my local repository. The group ids for each package are the public group prepended with 'local'. To use the library, include the following dependency in your project pom:<br /><br /><tt>&lt;dependency&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;groupId&gt;local.sun.java.net&lt;/groupId&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;artifactId&gt;jaxws-ri&lt;/artifactId&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;version&gt;2.1&lt;/version&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;type&gt;pom&lt;/type&gt;<br />&lt;/dependency&gt;</tt><br /></p><p>You can download a zip file containing the jars and the bat file here: <a href="http://coffeejolts.com/site/downloads/jaxws21.zip">jaxws21.zip</a> Just unzip and click install.bat.<br /></p><p> </p>]]></description>
            <link>http://coffeejolts.com/site/2008/01/installing-jaxws-in-local-mave.html</link>
            <guid>http://coffeejolts.com/site/2008/01/installing-jaxws-in-local-mave.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">Java</category>
            
            
            <pubDate>Fri, 04 Jan 2008 09:53:01 -0500</pubDate>
        </item>
        
        <item>
            <title>Maven 2 Woes</title>
            <description><![CDATA[I use Maven at my job to handle builds and manage dependencies. Most libraries are available and up to date. All I have to do is add them to my POM and build. <br /><br />The key word there is <i>most.</i> If a jar is not available on a Maven repository, you can install the jar in question manually to your local repository. This isn't a big deal if it's one jar. When you have multiple jars that are interdependent, things quickly get ugly, and result in a huge dependency list in your project pom. <br /><br />It could be worse- and today it was. I tried to set up a jax-ws 2.1 project in maven and immediately ran into a third scenario. The jars in the maven repository were incorrect and the respective pom files listing incorrect dependencies. I spent hours sorting through the mess until I finally gave up and used Ant instead. There is no way for me to go in and clean up the mess in the maven repository. I could go in and fix this on my local repository, but why? Isn't managing dependencies the selling point for Maven? If I'm managing all the dependencies myself, what do I need Maven for? <br /><br />To be fair, the problem is not the Maven team's fault. They don't manage the repository in question. I'll continue to use Maven for most of my projects. When things get ugly, I'll bring out Ant.<br /><p> </p>]]></description>
            <link>http://coffeejolts.com/site/2008/01/maven-2-woes.html</link>
            <guid>http://coffeejolts.com/site/2008/01/maven-2-woes.html</guid>
            
            
            <pubDate>Thu, 03 Jan 2008 14:15:00 -0500</pubDate>
        </item>
        
    </channel>
</rss>
