Wednesday, July 4, 2012

Project Oxbow has moved to GitHub!

The project is now on the GitHub. I have moved and enhanced all the documentation and currently in a process of moving unresolved issues.

GitHub is clearly a better environment for open source projects and pleasure to work with. My main hope is that this move will increase the rate of contributions, making the project even better.

The Google Code repository is not going anywhere - it will be be around as the archive for the project. I may even upload new artifacts there since a lot of people are used to dowloading from this location.
In my view, both the TaskDialog and the SwingBits are mature projects, being out there for more than a year. Since their ultimate goal is the same, to make Swing UI developement easier, and to simplify their maintenance and release procedures, I've decided to consolidate them into one - SwingBits. This introduces small breaking changes(package names are changing to org.oxbow.swingbits.*), but no API changes, so updgrading should be as straightforward as updating your import statements (some IDEs have that automated)

So SwingBits is now moving towards 1.0 release to signify its maturity.

As always... your comments, suggestions and contributions are welcome.
The project is avalable at under BSD license.

Saturday, April 9, 2011

Swing TaskDialog 1.3 release

It is my pleasure to  announce the availability of TaskDialog version 1.3.

This release is fairly small and concentrated on requests and issues I received from the library users. It is amazing to me that, according to various statistics I ran, the TaskDialog library is used by at least 150 developers. Some of them are very passionate and vocal, which means there is a need for the library and they want it to be better. I'm glad it helps so many people.

Full details of this release can be found in the Release Notes Wiki at

The new version is available immediately. As always… Your comments and suggestions are welcome.
The project is available at under BSD license.

Saturday, February 12, 2011

Swing Bits: new UI library from Oxbow project

Through the years, I created a lot of Swing UI code. A lot of it was was packaged as reusable libraries for internal use. These libraries were polished for many years and now power many applications in the company I work for. I've always had a desire to share my experience with the "outside world". Unfortunately, this is not always as simple as it seems.

So, I finally decided to recreate some of the bits as an open source library. That is why I chose the name "Swing Bits". The plan is to add useful code and components I found through the years to the library to help Swing developers around the world.
Today I uploaded version 0.0.2 of the library which inlcudes:
  • Table Filter UI
  • Check List 
  • Several useful utilities: DeepCopy, Screenshot
As a teaser, here is a code which adds table filter UI to any JTable

As always, the project is available at under BSD license.
I'm trying to keep the wiki up-to-date with my development efforts.
Your comments and suggestions are welcome.

Tuesday, December 28, 2010

Swing TaskDialog 1.2 release

I'm glad to announce an availability of TaskDialog version 1.2.
The release includes both enhancements and fixes to several reported issues.  Full list is available in release notes and issue tracker. I want to describe just some of the enhancements.

Task Dialog Builder
The main addition for version 1.2 is a Task Dialog Builder based on a Builder pattern.
The idea is to have maximum flexibility while quickly creating common task dialogs. TaskDialogs class methods are nice but not flexible enough. This is where the Builder comes. Consider the following code

Even though it looks slightly more verbose then simple methods of TaskDialogs class it is infinitely more flexible.

“Input” dialogs
Additional “shortcut” methods to quickly create a simple dialog to enter a value.

produces the following dialog


New “Always Expanded” property
Sometimes a dialog should stay always expanded. This is now supported with the introduction of “AlwaysExpanded” property. It was suggested by carlos.costaesilva, who made a significant contribution to the project by submitting fixes for several issues, suggesting new functionality and providing new example code. Thank you!

 Default keystrokes on Commands
Default keystrokes where introduced on Commands through the CommandTags. This simply means that by default OK command can be executed by pressing Enter key, Cancel Command –Cancel key etc.  Thanks to scanti.rula for pointing that out.

More i18n resources
French, Italian and German resources were added.
The new version is available immediately. As always… Your comments and suggestions are welcome.The project is available at under BSD license.

Saturday, June 19, 2010

Swing TaskDialog 1.1 release

Today I’m announcing the immediate availability of TaskDialog library version 1.1
This release includes several requested enchacements and fixes to the reported issues. Information on issue fixes is available in the issue tracker, so I will concentrate on the enhancements.

Command Wait Interval

Command Wait Intervals were discussed in a previous post and are now a permanent feature of the library

Ability to conditionally enable/disable commands

This feature will allow adding simple validation to more complex task dialogs. It is based on the IValidationListener interface which is implemented by commands and other internal components. This simply means that they are able to react on validation events triggered by TaskDialog’s fireValidationFinished method. For example, a panel with several fields can be set as a fixed dialog component. As the field content is changing, the panel may trigger validation events based on it’s internal logic, effectively disabling the OK command if the data is invalid. Here is how such a code may look:

The new library version is available immediately. As always… Your comments and suggestions are welcome The project is available at under BSD license.

Wednesday, April 28, 2010

Wait Timer for Commands in TaskDialog library

I’ve got several requests to implement timer functionality in TaskDialog commands. The latest code drop contains requested changes. This is a preliminary design and I invite a discussion on implementation which would cover the most common use cases.
Here are the main points of current implementation:
  • TaskDialog.Command interface now includes getWaitInterval function which should return required wait interval in seconds.
  • TaskDialog.StandardCommand by default returns 0, but includes new variant of the derive function with additional waitInterval parameter. This allows for adding custom commands with specified wait interval.
How would we do it with our very convenient methods from TaskDialogs class? By passing special commands with instruction text. Following will show a warning dialog with wait interval of 10 seconds.


This works on all TaskDialogs methods except choice and showException. My current feeling is that more work is required to make it perfect.
As always… Your comments and suggestions are welcome :) The project is available at under BSD license.

Saturday, April 24, 2010

Swing TaskDialog 1.0 official release

It is my pleasure to announce the availability of the official release of TaskDialog library version 1.0.
This release includes following features:
  • Implementation of Microsoft TaskDialog standard.
  • Support for additional custom components
  • Standard and Custom commands
  • Support for Command Links
  • i18n support
  • Customizable UI defaults
  • Simplified utility methods for common cases
  • Support for Mac OS X
The project is available at under BSD license.As always your comments and suggestions are welcome.