Creating Custom Caspian Skins

Creating Custom Caspian Skins

Dean Iverson has just now blogged about creating custom Caspian controls in JavaFX. As soon as I saw his link run up on Twitter I fired it around my team mates in the JavaFX controls team (yes, we’re still working, and in fact we’re all working precisely on what Dean is talking about). We all like what he is doing, and with JavaFX 1.3 coming up we hope to make this kind of thing far easier.

CaspianColors

From Deans blog post:

Creating custom controls in JavaFX is not difficult. Creating custom controls that fit nicely with the default Caspian theme, with its pervasive use of gradients and animation, is a little trickier. This is only because the utility classes and methods that make it simple lie buried within com.sun packages that are not publicly documented. A little digging reveals a few gems that can be used to make your controls fit right in with the core JavaFX controls.

So, if you’re keen right now to create great looking skins in JavaFX using the Caspian technology that shipped in JavaFX 1.2, give Deans blog post a read.

JavaFX links of the week, December 14

Welcome back to JavaFX links of the week. There have been a few interesting bits of news this week, so let’s get right into it.

That’s us for another week. If you know of any JavaFX news that you think is worthy of being included here, please email me and let me know. Catch you all in a weeks time!

Vancouver Olympics Chooses JavaFX

Vancouver Olympics Chooses JavaFX

Some really great news I’ve had to keep under my hat for the past few months is that the Vancouver Olympics website has chosen JavaFX for a really cool visualization. It is an exceptionally well done application with stunning UI and does a terrific job showing off the potential of JavaFX in data visualization scenarios.

Vancouver Olympics JavaFX Application

Vancouver Olympics JavaFX Application

Go and check out the application running live. It has data going back many years showing how many metals were won by different countries over time, which athletes won which metals, and so on. It is built and delivered on the publicly shipping release of JavaFX. Really exciting for JavaFX!

Silicon Valley JavaFX JUG

I had the honor to be the first official speaker at the first JavaFX user group meeting (of which I am aware!). The Silicon Valley JavaFX JUG, organized by Stephen Chin (one of the authors of Pro JavaFX, which is an excellent book), met this past Wednesday. Google hosted the event and supplied the evening’s pizza, for which I am personally very grateful!

PDF Version

Stephen had setup a streaming feed so people not in the area could follow along, which I thought was really cool. Its always fun to present about JavaFX as it is something I’m passionately interested in. Yes, working on JavaFX is my day job, but if I didn’t really love it and believe in it I wouldn’t be doing it. The thing that energizes me is knowing both what it is that we have built, and what we are building. It is really a fantastic platform. Its a joy to use when building applications and getting better all the time.

That Infernal Scenegraph Warning Message: Part Deux

Stuart Marks has written up part II of the three-part series on the scenegraph warning message that you have seen in JavaFX1.2. I covered and linked to the first version previously. It really is a terrific read, and details some of the subtle semantics of bind. Stuart always does such an excellent job describing these subtle issues.

In my earlier post on this topic I hinted that we had found a resolution to the issue surrounding the warning message, I hinted further in some of my replies to comments, and I even left it as sort of a cliffhanger as to what the resolution was. So, here’s the resolution.

We’ve decided that when a node is added to a group, that node is automatically removed from the group that previously owned it, if any. (Let’s call this the “auto-remove” feature.) We’ve also decided to turn off the warning message by default, but to have it be enabled optionally, possibly via a system property, for debugging purposes. Finally, we’ve relaxed the enforcement of some scene graph invariants in cases where the group’s content sequence is bound.

During the development of our current release, we kept running into this issue. A couple of us wrote code that we thought was reasonable, yet it surprised us when the warning message came out! We had a few hallway conversations from time to time, but a clear-cut answer never emerged. Finally, we realized that we had to get the interested parties in a room and have a knock-down, drag-out meeting to resolve the issue. And so on October 7, 2009, Amy Fowler, Kevin Rushforth, Richard Bair, and I got into a conference room to decide the issue. Three hours later — with no breaks! — we had decided. Actually, it was a great meeting, without a lot of conflict. There were just a lot of issues to cover. Each of us came into the meeting with our initial opinions, but the issues were so close that I think each one of us switched sides at least once during the meeting.