This is the fourth part in the ongoing series of providing support for SwingX components in Substance look and feel.
The first part showed the support for JXTaskPaneContainer and JXTaskPane.
The second part showed the support for JXStatusBar.
The third part showed the support for JXTitledPanel.
This part will show the support for JXTipOfTheDay. As with task panes, status bars and titled panels, the UI delegate for tip of the day respects the header painter of the current skin (sometimes using its secondary painter defined on the skin level), which results in a consistent and unique appearance for the “decoration” areas of the UI. Here is a screenshot of a JXTipOfTheDay dialog under Business skin:
Here is the same dialog under Business Blue Steel skin:
Here is the same dialog under Nebula Brick Wall skin:
Here is the same dialog under Office Silver 2007 skin:
Here is the same dialog under dark Raven skin:
Here is the same dialog under dark Magma skin:
As with other UI delegates (such as for JXTaskPane), the UI delegate for JXTipOfTheDay provides additional animations. In the movie below, watch the icon glow when the mouse moves over the internal header. Note how the glow animation doesn’t stop abruptly (in the first sequence), but instead finishes the current loop:
This is the third part in the ongoing series of providing support for SwingX components in Substance look and feel.
The first part showed the support for JXTaskPaneContainer and JXTaskPane.
The second part showed the support for JXStatusBar.
This part will show the support for JXTitledPanel. Much like the case with task panes and status bars, the UI delegate for titled panel respects the header painter of the current skin (sometimes using its secondary painter defined on the skin level), which results in a consistent and unique appearance for the “decoration” areas of the UI. Here is a screenshot of a frame with a few JXTitledPanels under Business skin:
Here is the same frame under Business Black Steel skin:
Here is the same frame under Nebula Brick Wall skin:
Here is the same frame under Office Blue 2007 skin:
Here is the same frame under dark Raven Graphite skin:
Here is the same frame under dark Magma skin:
Here is the same frame under saturated Finding Nemo skin:
Note that the painting of the title is consistent with the main title pane of the frame (including the texture where necessary), the global watermark and colors. In addition, the panel itself has a dropshadow border installed on it.
This is the second part in the ongoing series of providing support for SwingX components in Substance look and feel. The first part showed the support for JXTaskPaneContainer and JXTaskPane, and this part will show the support for JXStatusBar.
Much like the case with task panes, the UI delegate for status bar respects the header painter of the current skin, which results in a consistent and unique appearance “decoration” areas of the UI. Here is a screenshot of a frame with JXStatusBar (along with a menu bar and a toolbar) under Business skin:
The same frame under Business Black Steel skin:
The same frame under Mist Silver skin:
The same frame under Nebula skin:
The same frame under Nebula Brick Wall skin:
The same frame under dark Raven skin:
The same frame under dark Magma skin:
As you can see, the UI delegate for the JXStatusBar provides consistent appearance for the background, watermark and separator painting. Under skins with dark header (such as Business Black Steel above), the status bar is painted with the main active theme (to prevent clashes of dark foreground colors of status bar controls). In addition, note the resize grip in the right hand corner – which is not painted on maximized frames and on Mac (which paints the resize grip itself).
It saddens me to say this, but Substance module for NetBeans, which allows you to play with all the available themes, watermarks, skins, and even set an arbitrary image as the IDE watermark (a feature that was used extensively in the NetBeans look and feel contest about a year ago) will not be supported in NetBeans 6.0.
You can see the comments on issue 66335 and issue 103361. The first one was opened more than two years ago, and asked to clean up the code of the custom tabbed pane used for the NetBeans editor. The vast majority of the code there is either private or package-protected, and as such, i had to copy a lot of it into Substance module. This led to quite significant code bloat on my part (which was completely unnecessary), making the code base much less readable and maintainable. Nonetheless, the module was functioning as expected in 5.0 and in 5.5 (without any code changes).
However, the upcoming version 6.0 introduces binary incompatibilities in the tabbed pane component (see the second issue above), which breaks the Substance module. In order to address this, i would have to copy yet more classes into my module, since the base implementation is, once again, either private or package-protected. Unfortunately, NetBeans developers view this as internal implementation details, saying this in the comments on the first bug that i filed:
The code is not designed for extensibility to other UI delegates (which is btw complicated task, believe me) and I doubt it will ever be, currently we have no plan to support it, simply because this library was intended primarily as private use-only-in-IDE library and we can’t afford to maintain it as public extensible library with nice API. Too little effect for too much work for us, sorry.
Hopefully this decision will be reconsidered, since this plugin is quite a popular one (featuring in the top ten most popular NetBeans plugins). If not, you will have to uninstall it if you’re planning to upgrade to NetBeans 6.0.