calendar picker chaining

Jonathan Giles jonathan.giles at oracle.com
Sat Aug 11 14:42:24 PDT 2012


>
> How would this be done? I am not supposed use the setSkin method, so 
> does specifying that a certain control on a certain screen uses the 
> multimonth skin belong in the CSS? And the configuration of the skin; 
> how many months, grid layout (2x2, 3x1), also in the CSS? How would I 
> access this information in the skin itself?

Unfortunately the images never arrived, so I'm not entirely clear on 
what you are showing. I'm also not totally clear on your question. 
However, here is an answer to a question, hopefully somewhat related to 
yours.

What we do in the JavaFX UI controls team is have one control with 
potentially multiple visuals represented as different style classes. You 
can see this with the TabPane, it has a public static final 
STYLE_CLASS_FLOATING string, which users may use to modify the styling, 
as such:

TabPane tabPane = new TabPane();
tabPane.getStyleClass().add(TabPane.STYLE_CLASS_FLOATING);

We use the STYLE_CLASS prefix to clarify the purpose of the public 
static string. It should be noted that probably no one knows about the 
existence of this floating style, but I'm sure one day someone will make 
the discovery. We don't do this too many times, from memory I think it 
is also done in the new 2.2 controls Pagination and ColorPicker as well.

I know that, in the case of ColorPicker, there is code that modifies the 
actual layout based on the style class. In the case of TabPane (last 
time I looked) there is no difference in the skin code, just in the CSS. 
So, it all comes down to the complexity of the skin, and of course the 
preference is to push it out as far to the boundaries as possible (that 
is, CSS should take precedence over skin layout code whenever possible). 
It would definitely pay to check out OpenJFX and look at the code for 
TabPane, ColorPicker and Pagination.

If you want to expose new CSS properties you'll have to use private API 
currently. Look at TreeCellSkin - it exposes -fx-indent as a CSS 
property to let users configure how much indentation there is per level 
in the TreeView. Of course, standard disclaimers apply - we can't stop 
you using private API, but please don't complain to us when we break 
your code - and I promise we will.

Hope that helps,
-- Jonathan


More information about the openjfx-dev mailing list