<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>Coffeejolts</title>
    <link rel="alternate" type="text/html" href="http://www.coffeejolts.com/site/" />
    <link rel="self" type="application/atom+xml" href="http://www.coffeejolts.com/site/atom.xml" />
    <id>tag:www.coffeejolts.com,2009-01-05:/site//2</id>
    <updated>2010-04-28T14:34:49Z</updated>
    
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type 4.31-en</generator>

<entry>
    <title>Update</title>
    <link rel="alternate" type="text/html" href="http://www.coffeejolts.com/site/2010/04/update.html" />
    <id>tag:www.coffeejolts.com,2010:/site//2.106</id>

    <published>2010-04-28T12:00:00Z</published>
    <updated>2010-04-28T14:34:49Z</updated>

    <summary>I tried to contact the current owner of the Spider half a dozen times. He never picks up the phone, and never returns my calls. So I&apos;m left to assume that he is not at all interested in parting with...</summary>
    <author>
        <name>Coffeejolts</name>
        <uri>http://coffeejolts.com</uri>
    </author>
    
        <category term="Cars" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://www.coffeejolts.com/site/">
        <![CDATA[I tried to contact the current owner of the Spider half a dozen times. He never picks up the phone, and never returns my calls. So I'm left to assume that he is not at all interested in parting with the car. Although I wish things were different, I can understand why he wants to keep it. The past is the past and (for now) the Spider is going to stay in my past. I'll try again every six months or so. I haven't completely given up, but I'm putting the entire process on the back burner.&nbsp; ]]>
        
    </content>
</entry>

<entry>
    <title>Car Found</title>
    <link rel="alternate" type="text/html" href="http://www.coffeejolts.com/site/2009/10/car-found.html" />
    <id>tag:www.coffeejolts.com,2009:/site//2.105</id>

    <published>2009-10-19T16:53:04Z</published>
    <updated>2009-10-19T17:04:56Z</updated>

    <summary>My investigator came through. I have the Pininfarina Spider&apos;s current owner&apos;s name, address, and telephone number. The car is only a few miles from the house I grew up in. Now I need to get the huevos to pick up...</summary>
    <author>
        <name>Coffeejolts</name>
        <uri>http://coffeejolts.com</uri>
    </author>
    
    
    <content type="html" xml:lang="en-us" xml:base="http://www.coffeejolts.com/site/">
        <![CDATA[My investigator came through. I have the Pininfarina Spider's current owner's name, address, and telephone number. The car is only a few miles from the house I grew up in. Now I need to get the huevos to pick up the phone and call the guy.<br /><br />How exactly do you start a conversation like this? <br /><blockquote>Me: <i>Hey, I hired a guy to track you down because I want to buy your car. </i><br />Him: <i>You what? What kind of person does that? </i><br />Me: <i>No really! Tell me, how is the car?</i><br /><b>&lt;-click-&gt;</b><br />Me: <i>Hello? Hello?</i><br /></blockquote><br />I'm looking for suggestions, people. HELP! <br />&nbsp; ]]>
        
    </content>
</entry>

<entry>
    <title>Car Chase Update</title>
    <link rel="alternate" type="text/html" href="http://www.coffeejolts.com/site/2009/10/car-chase-update.html" />
    <id>tag:www.coffeejolts.com,2009:/site//2.104</id>

    <published>2009-10-14T10:49:59Z</published>
    <updated>2009-10-14T17:53:16Z</updated>

    <summary>I have exciting news in my search for my old car: it is still under active title. I suppose this does not mean anything by itself, other than it isn&apos;t sitting in a junk yard. Still, this is a big...</summary>
    <author>
        <name>Coffeejolts</name>
        <uri>http://coffeejolts.com</uri>
    </author>
    
        <category term="Cars" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="General" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://www.coffeejolts.com/site/">
        <![CDATA[I have exciting news in my search for my old car: <b>it is still under active title</b>. I suppose this does not mean anything by itself, other than it isn't sitting in a junk yard. Still, this is a big clue to the car's current location. I can't get any more information than this on my own. The nice helpful folks at the dept of motor vehicles aren't allowed to say too much; and that's probably a good thing. They've seen <i>Gone in Sixty Seconds</i>.<br /><br />I've enlisted the help of a private investigator. He is confident that he can find the location of my old car. When he pulls through, I'll have my answers. I'm trying hard to enjoy the chase, and not get too caught up in the what ifs. <br />&nbsp; <br /><ul><li>What if the DMV information is wrong or outdated?</li><li>What if the owner refuses to talk with me?</li><li>What if the car is unsalvageable?</li><li>What if the owner refuses to sell, or asks an exorbitant price?</li></ul>&nbsp; <br />Any or all of the above could happen. My dream of finding the car in good condition and the owner willing to sell are really long shots. Fiats are known for rust problems. My old car had rust starting on the rear fender wells when I last saw it. It's almost a foregone conclusion that the car will need thousands of dollars in body work. Let's say five grand for paint and body work (no bondo). Then there is the transmission: these cars were known to have weak transmissions, and my old car had transmission issues. Figure three thousand for a new transmission, or two thousand for a rebuilt unit. That's seven thousand dollars in repairs for a car that isn't worth seven thousand dollars, and the car would have needed even more than that. These aren't collector cars, so it is unlikely that the current owner spent a lot of money keeping the car perfect. If he did, it suggests that the owner is emotionally tied to the car (like me) and won't want to sell it at any price.<br /><br />Those are my what-ifs. How well do you think I'm doing on not thinking about them?<br />&nbsp;]]>
        
    </content>
</entry>

<entry>
    <title>Chasing My (former) Classic Car</title>
    <link rel="alternate" type="text/html" href="http://www.coffeejolts.com/site/2009/10/chasing-my-former-classic-car.html" />
    <id>tag:www.coffeejolts.com,2009:/site//2.103</id>

    <published>2009-10-13T03:00:00Z</published>
    <updated>2009-10-13T17:33:30Z</updated>

    <summary>I confess. I&apos;m a car guy. Ok, I&apos;m more than just a car guy, I&apos;m a car nut. I like them new and old, import and domestic. I fly into Detroit in January just to attend the auto show. I...</summary>
    <author>
        <name>Coffeejolts</name>
        <uri>http://coffeejolts.com</uri>
    </author>
    
        <category term="Cars" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="General" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://www.coffeejolts.com/site/">
        <![CDATA[I confess. I'm a car guy. Ok, I'm more than just a car guy, I'm a car nut. I like them new and old, import and domestic. I fly into Detroit in January just to attend the auto show. I subscribe to the car magazines. I surf Jalopnik and lurk around on the Motor Trend forums when I'm not in the garage or on the road.<br /><br />My current classic car is a 1981 Corvette. My wonderful wife brought the 'vette home in 1998, after she overheard the original owner saying he wanted to sell the car and buy a Harley Davidson. Imagine getting this phone call:<br /><br /><blockquote>Her: <i>I'm on my way home from work. Can you meet me in the driveway?</i><br /><br />Me: [Half asleep] <i>Why? It's one AM...</i><br /><br />Her: <i>I'm driving a Corvette home for you to look at.<br /><br /></i>Me: [stunned silence]<i> <br /><br /></i>Her:<i> Are you awake?</i><br /></blockquote> <br />We kept the car for a week to have it inspected. Two different Chevrolet dealers verified the car and we've had it ever since. The car (and more importantly how I obtained it) is extremely dear to me. I'll part with it sometime <i>after </i>I draw my last breath.<br /><br />A few weeks ago, I started going through the boxes of old papers I had stored in my garage. In among old tax returns and receipts was the VIN# of <i><b>my very first car</b></i>: a 1985 <a href="http://en.wikipedia.org/wiki/Fiat_124_Sport_Spider">Pininfarina (think Fiat) Spider</a>. It was 1993 and I was eighteen years old. I was driving along a two lane highway when I noticed a small black convertible sitting in front of a hotel with a for sale sign on it. I swung my (parents') car in "just for a look"; but I was already hooked. A few days later, I drove back and purchased the Spider.<br /><br />Like any Italian (myself included), it had its share of quirks. It had power windows, but those only worked for the few days after I took the window switch apart and cleaned it. It was technically a five speed, but the car was so prone to popping out of 2nd that I stopped using it. The tail lights and interior lights would switch off every time I turned the steering wheel, so I avoided driving at night. The car had no A/C and the windshield defroster was a joke, making muggy rainy days almost impossible to drive in. Qualified mechanics were few, far between, and expensive.<br /><br />I didn't care. It was 1993. I was eighteen years old. I had a convertible. In spite of its quirks, I really loved that car. <i>Girls liked the car</i>. And it HANDLED. The car had a degree of connectedness to the road that I'd never experienced before. There seemed to be no corner it couldn't conquer. I'd take it out on country roads on my days off just to commune with the car. It was breathtaking. Did I mention that <u>girls liked the car</u>? :)<br /><br />I only spent one summer with the Pininfarina. It was just too much for my broke, stupid, eighteen year-old ass to keep up with. I haven't seen the car in over sixteen years, and I honestly didn't think about it much until I found the VIN among my old papers. Ever since last weekend, I've been obsessed with finding what became of it. Where is it? Does it still run? What kind of shape is it in? <i>Might I be able to repurchase it</i>? I can't stop myself. I have to find out. <br /><br />Welcome to Chasing Classic Car(-s), personal edition. Hop on in. We'll find out how this all ends together.<br /><br />-CJ<br />]]>
        
    </content>
</entry>

<entry>
    <title>Updated FXContainer</title>
    <link rel="alternate" type="text/html" href="http://www.coffeejolts.com/site/2008/12/updated-fxcontainer.html" />
    <id>tag:www.coffeejolts.com,2008:/site//2.102</id>

    <published>2008-12-09T21:59:07Z</published>
    <updated>2009-01-05T20:37:09Z</updated>

    <summary>I have updated the FXContainer helper class to the JavaFX 1.0 SDK. Here is the updated code: import javafx.scene.CustomNode; import javafx.scene.Group; import javafx.scene.Node; import javafx.scene.transform.Scale; import javafx.scene.transform.Translate; /** * @author coffeejolts */ public class FXContainer extends CustomNode{ public var fillDimensions:Boolean...</summary>
    <author>
        <name>Coffeejolts</name>
        <uri>http://coffeejolts.com</uri>
    </author>
    
    <category term="java" label="Java" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="javafx" label="JavaFX" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en-us" xml:base="http://www.coffeejolts.com/site/">
        <![CDATA[I have updated the FXContainer helper class to the JavaFX 1.0 SDK. Here is the updated code:<br /><br /><br />
<blockquote>
<textarea name="code" class="jfx" cols="50" rows="50">
import javafx.scene.CustomNode;
import javafx.scene.Group;
import javafx.scene.Node;
import javafx.scene.transform.Scale;
import javafx.scene.transform.Translate;

/**
 * @author coffeejolts
 */

public class FXContainer extends CustomNode{

    public var fillDimensions:Boolean = false;

    public var content:Node;

    public var width:Integer;

    public var height:Integer;

    var group:Group = Group{
        content: bind content
        transforms: bind [translate, scale]
    }

    var sf:Number = bind getScale(width,
                                  height,
                                  content.boundsInLocal.width,
                                  content.boundsInLocal.height,
                                  fillDimensions);

    var scale:Scale = Scale{
        x: bind sf;
        y: bind sf;
    };

    var translate:Translate = Translate{
        x: bind getTranslation(width, content.boundsInLocal.width * sf);
        y: bind getTranslation(height, content.boundsInLocal.height * sf);
    };

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

    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 &lt; ar_s;
        if(fullscreen){
            arViewLower = not arViewLower;
        }
        if(arViewLower){
            return vw / sw;
        }
        return vh / sh;
    }

    override function create():Node{
        return group;
    }
}
</textarea>
</blockquote>]]>
        
    </content>
</entry>

<entry>
    <title>FXContainer v0.1</title>
    <link rel="alternate" type="text/html" href="http://www.coffeejolts.com/site/2008/08/fxcontainer-v01.html" />
    <id>tag:www.coffeejolts.com,2008:/site//2.101</id>

    <published>2008-08-08T18:04:35Z</published>
    <updated>2009-01-05T20:40:06Z</updated>

    <summary>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...</summary>
    <author>
        <name>Coffeejolts</name>
        <uri>http://coffeejolts.com</uri>
    </author>
    
        <category term="Java" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="JavaFX" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://www.coffeejolts.com/site/">
        <![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 is the source code.<br />
<blockquote>
<textarea name="code" class="jfx" cols="50" rows="50">
/*
 * 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 &lt; 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" type="text/javascript"></script>
         <script type="text/javascript">
            var url="http://coffeejolts.com/java/webstart/fxcontainer/launch.jnlp";
            deployJava.createWebStartLaunchButton(url, "1.6");
        </script>
</p>]]>
        
    </content>
</entry>

<entry>
    <title>An &apos;improved&apos; JavaFX MediaView class</title>
    <link rel="alternate" type="text/html" href="http://www.coffeejolts.com/site/2008/08/an-improved-javafx-mediaview-c.html" />
    <id>tag:www.coffeejolts.com,2008:/site//2.100</id>

    <published>2008-08-05T22:05:45Z</published>
    <updated>2009-01-05T20:41:43Z</updated>

    <summary>Since the JavaFX Preview SDK was released, I have been toying around with its video support. Overall, it is really, really good. I&apos;m impressed and I&apos;ve only hit the tip of the iceberg. Of course, there is room for improvement....</summary>
    <author>
        <name>Coffeejolts</name>
        <uri>http://coffeejolts.com</uri>
    </author>
    
        <category term="Java" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="JavaFX" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://www.coffeejolts.com/site/">
        <![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" cols="50" rows="50">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" cols="50" rows="50">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>]]>
        
    </content>
</entry>

<entry>
    <title>JavaFX Brush for Syntax Highlighter</title>
    <link rel="alternate" type="text/html" href="http://www.coffeejolts.com/site/2008/07/javafx-brush-for-syntax-highli.html" />
    <id>tag:www.coffeejolts.com,2008:/site//2.99</id>

    <published>2008-07-28T13:27:54Z</published>
    <updated>2009-01-05T20:37:08Z</updated>

    <summary>In anticipation of the JavaFX SDK preview release, I have whipped up a very primitive JavaFX Script brush for Syntax Highlighter. Adding the brush is easy, so I will not bore you with boilerplate. Include the brush, set your code...</summary>
    <author>
        <name>Coffeejolts</name>
        <uri>http://coffeejolts.com</uri>
    </author>
    
        <category term="Java" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="JavaFX" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="brush" label="brush" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="jamesweaver" label="James Weaver" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="java" label="java" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="javafx" label="javafx" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="syntaxhighlighter" label="syntaxhighlighter" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en-us" xml:base="http://www.coffeejolts.com/site/">
        <![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" cols="50" rows="50">/*
 *  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>]]>
        
    </content>
</entry>

<entry>
    <title>Java Media - Little By Little</title>
    <link rel="alternate" type="text/html" href="http://www.coffeejolts.com/site/2008/07/java-media-little-by-little.html" />
    <id>tag:www.coffeejolts.com,2008:/site//2.85</id>

    <published>2008-07-01T14:36:09Z</published>
    <updated>2009-01-05T20:37:07Z</updated>

    <summary>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...</summary>
    <author>
        <name>Coffeejolts</name>
        <uri>http://coffeejolts.com</uri>
    </author>
    
    
    <content type="html" xml:lang="en-us" xml:base="http://www.coffeejolts.com/site/">
        <![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" type="text/javascript"></script>         <script type="text/javascript">
            var url="http://coffeejolts.com/java/webstart/jmc/launch.jnlp";
            deployJava.createWebStartLaunchButton(url, "1.6");
        </script></p>]]>
        
    </content>
</entry>

<entry>
    <title>More Java Media Components Information Released!</title>
    <link rel="alternate" type="text/html" href="http://www.coffeejolts.com/site/2008/06/more-java-media-components-inf.html" />
    <id>tag:www.coffeejolts.com,2008:/site//2.86</id>

    <published>2008-06-09T14:06:42Z</published>
    <updated>2009-01-05T20:37:07Z</updated>

    <summary>Sun has posted some slides from a presentation on Java Media Components on the JavaONE website. Unfortunately, the demos weren&apos;t included, but the source code in the slides hints at a very simple to use media API.For example: class SimplePlayerDemo...</summary>
    <author>
        <name>Coffeejolts</name>
        <uri>http://coffeejolts.com</uri>
    </author>
    
        <category term="Java" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="JavaFX" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="javamediacomponents" label="Java Media Components" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="javafx" label="JavaFX" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="jmc" label="JMC" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en-us" xml:base="http://www.coffeejolts.com/site/">
        <![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="50" rows="50">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>]]>
        
    </content>
</entry>

<entry>
    <title>Trunk install</title>
    <link rel="alternate" type="text/html" href="http://www.coffeejolts.com/site/2008/05/trunk-install.html" />
    <id>tag:www.coffeejolts.com,2008:/site//2.87</id>

    <published>2008-05-23T15:18:00Z</published>
    <updated>2009-01-05T20:37:07Z</updated>

    <summary>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. I wanted everything...</summary>
    <author>
        <name>Coffeejolts</name>
        <uri>http://coffeejolts.com</uri>
    </author>
    
        <category term="Mobile Computing" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="car pc install log" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://www.coffeejolts.com/site/">
        <![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>]]>
        
    </content>
</entry>

<entry>
    <title>Fix for Mevenide 1 on Netbeans 6.* (not quite)</title>
    <link rel="alternate" type="text/html" href="http://www.coffeejolts.com/site/2008/05/fix-for-mevenide-1-on-netbeans.html" />
    <id>tag:www.coffeejolts.com,2008:/site//2.88</id>

    <published>2008-05-02T19:25:43Z</published>
    <updated>2009-01-05T20:37:07Z</updated>

    <summary>Netbeans 6 has great Maven 2 support. Unfortunately, my company is still using Maven 1, and there&apos;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....</summary>
    <author>
        <name>Coffeejolts</name>
        <uri>http://coffeejolts.com</uri>
    </author>
    
        <category term="Java" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://www.coffeejolts.com/site/">
        <![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 /><br />Well, not quite. Adding this line fixes some of the problems, but the plugin itself it still very flawed on NB6.*, so much so that I am back to using NetBeans 5.5 for all of my development work. I can get the project to build, but that is about it. Here's a list of things I haven't figured out how to fix yet...<br /><br /><ol><li>NetBeans uses the JDK it is running on for code completion and error checking. So, if your project uses JDK 1.5, but your IDE is running on JDK 1.6, expect 1.6 level code completion and error checking.</li><li>NetBeans is unable to resolve dependencies upon other maven projects. So, if project A depends upon project B, and both of them are in my workspace, NetBeans will draw red lines all over your code.</li></ol>This is a real bummer because NetBeans 6 is a great IDE, and I'd love to use it as my every day IDE. Without Maven 1 support, it's a non starter.<br />]]>
        
    </content>
</entry>

<entry>
    <title>GPS died- and then came back to life!</title>
    <link rel="alternate" type="text/html" href="http://www.coffeejolts.com/site/2008/04/gps-died.html" />
    <id>tag:www.coffeejolts.com,2008:/site//2.89</id>

    <published>2008-04-21T18:57:41Z</published>
    <updated>2009-01-05T20:37:07Z</updated>

    <summary>So, I finally got navigation working right and then I notice this morning that the GPS receiver can&apos;t get a lock. I did a bit of Google-ing, and found some posts saying that removing the battery can fix this problem....</summary>
    <author>
        <name>Coffeejolts</name>
        <uri>http://coffeejolts.com</uri>
    </author>
    
        <category term="car pc install log" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://www.coffeejolts.com/site/">
        <![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 />]]>
        
    </content>
</entry>

<entry>
    <title>Ground point upgraded</title>
    <link rel="alternate" type="text/html" href="http://www.coffeejolts.com/site/2008/04/ground-point-upgraded.html" />
    <id>tag:www.coffeejolts.com,2008:/site//2.90</id>

    <published>2008-04-17T16:09:51Z</published>
    <updated>2009-01-05T20:37:07Z</updated>

    <summary>I upgraded the grounding point last night. Or, maybe I should say that I hope 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...</summary>
    <author>
        <name>Coffeejolts</name>
        <uri>http://coffeejolts.com</uri>
    </author>
    
        <category term="Mobile Computing" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="car pc install log" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://www.coffeejolts.com/site/">
        <![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 />]]>
        
    </content>
</entry>

<entry>
    <title>Installation update</title>
    <link rel="alternate" type="text/html" href="http://www.coffeejolts.com/site/2008/04/installation-update.html" />
    <id>tag:www.coffeejolts.com,2008:/site//2.91</id>

    <published>2008-04-16T19:12:54Z</published>
    <updated>2009-01-05T20:37:08Z</updated>

    <summary>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.Map pocket modified and installed.I took the map pocket apart and installed a hinge to...</summary>
    <author>
        <name>Coffeejolts</name>
        <uri>http://coffeejolts.com</uri>
    </author>
    
        <category term="car pc install log" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://www.coffeejolts.com/site/">
        <![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>]]>
        
    </content>
</entry>

</feed>
