Friday, November 25, 2011

SteelSeries 3.9.9

It took some time due to some conferences and my new job but i finally decided that it's time for another release of the SteelSeries component library.
Because i will port the complete library to JavaFX 2.0 this will be the last release  of the Swing library for the next months. 
Porting the lib to JavaFX 2.0 means a complete rewrite from scratch combined with learning this will also take some time...which means patience my friends...
But now let's talk about the stuff that's in this release...

The DisplaySingle component (lcd with a single row) got most of my attention in this release. So first of all it's now capable of displaying also text instead of numbers only.

Click me to see a youtube video of the scrolling...
If you click on the link below the image you will see a little video on youtube that shows the rudimentary scrolling capability that is supported by the DisplaySingle component.
The display of text could be enabled/disabled by using setting the lcdNumericValues property to false and fill the lcdText property with some text.

There's also a new LcdColor available that is only useful in the DisplaySingle component and will be used to visualize sections in the lcd display.

Without any section applied to the DisplaySingle it will look like this:

As an example i defined sections as follows:

Section[] sections = {

    new Section(0, 25, Color.GREEN),
    new Section(25, 50, Color.YELLOW),
    new Section(50, 75, Color.ORANGE),
    new Section(75, 100, Color.RED)

If you set these sections with the setSections() method to a DisplaySingle component and activate the visibility of the sections by calling setSectionsVisible(true) you will get results like follows:

We will use this feature to visualize the quality of kpi's in the next version of the Quintiq software.

In the gauges it's now possible to adjust the color for the inner (green in the image) and outer frame (red in the image), which was requested...

And again some new pointer types are available...

The pointer type 13 and also type 2 now change their color dependend on the background color. That means the pointer will get a better contrast on the choosen background color. The color that will be used to fill the pointer is the same as the label color defined in the background color.

Another new thing i've added to the lib is the ability to use logarithmic scaling for the gauges which might be useful when measuring over a large range of values.
The implementation is rudimentary and only for base 10 but it's a start...

logScaling disabled (default)

logScaling enabled
The logarithmic scaling is available on the radial and linear gauges and bargraphs.

As you could see on the images above there's also another new feature that makes it possible to adjust the orientation of the ticklabels.
There are three possibilities available:

  • normal
  • horizontal
  • tangent

and that's how they look like...

And that's still not the end, there's also a new frame design called GlossyMetal which looks like this...

Started talking about the frames there's also a new feature that makes it possible to choose a custom color for a frame (this feature only works for the frame design named ShinyMetal) and could be switched on with setFrameBaseColorEnabled(true). If you have switched this feature on you could set a frame base color that will be used to colorize the frame of the gauge which leads to a visualization like this...

The next feature is something that was on my list for a long time but i never found the time to do it's done...
Frameless gauges...

If you switch off the visibility of the frame the gauge will take the whole space of the component instead of simply not show the frame. This is really useful if you do have a lot of gauges on your dashboard where you don't need the frames.

At least i made some modifications to the visualization of the sections in a gauge that might be useful for business dashboards. Because that are only small modifications i won't explain everthing but show you some more images...

As always you could find the binary version on the right side of this blog.

I guess that's it for 3.9.9 and like i said already this will be the last release for the next months because i really have not time to do all this stuff in my spare time again and will focus on the SteelSeriesFX stay tuned and keep coding...


  1. these changes will be very useful!
    Thanks han!

  2. Hallo,

    At the first, thanks for frameless mode and other improvements in version 3.9.9. But there are two more questions I would like to ask you :
    1) Is there a setting that forbids a shadow for a pointer type?
    2) Why are "getAreas" and "getSections" methods marked as protected? We use JavaScript in Java and we can setup sections easily but we cannot get sections. Is there a technical reason for this "protected" access modifier, or is it anything else?

  3. Hi there,
    Answer 1: There's no method yet to switch of the pointer shadow

    Answer 2: There's no reason for the protected methods

    Final answer: Made a note about both and will change it in the next snapshot release which could also be downloaded on the blog...


  4. Hi,
    Thank's for the good work, this library is really a gem :-)
    I have a question, how should i change the sections values after declarations?
    in my application, thresholds for meters and displays coloring can be changed.
    i declare the sections in the main with other objects, and for instance i didnt found the way to modify them.
    I wonder how i should do that, maybe it's not possible, in this case, should i create new sections each time the threshold values are modified?

    I notice a strange behavior in the radial 2 top, if i set area from -3.0 to +3.0 and labels orientation to tangent, the last label dissapear (in my case it's the 3.0 on the right) it's not the case if i use a positive range (0 to 6 for example)
    so it's maybe related to using negative range start.

  5. i notice, that the range slider don't react at statechanged when on the upper value handle, it reacts only on the lower value handle.
    Do you know where it comes from?

  6. Hi,
    cool work, love to use it in my project. Question: is it possible to draw a radial gauge with a scale that has its zero crossing at 9 o'clock position and is positive clock wise and negative counter clock wise? I would like to animate a variometer (vertical speed indicator). See this example here:
    Can I customize a standard radial gauge to look like this?
    Thanks, Patric