ComboBox and cell factories
Jonathan Giles
jonathan.giles at oracle.com
Mon Apr 23 12:46:12 PDT 2012
Thanks everyone for the feedback on this issue. I am now seeking a +1
from Richard. I guess I will follow normal procedure and give 24 hours
notice for this, and will otherwise assume approval by neglect :-)
-- Jonathan
On 19/04/2012 10:16 a.m., Jonathan Giles wrote:
> Hi all,
>
> Today I have a new topic I'd like opinions on:
>
> http://javafx-jira.kenai.com/browse/RT-21023
>
> The ComboBox control, being the specialisation of the ComboBoxBase
> class, is a Button/TextField and ListView specific control, as I
> mentioned yesterday. The basic issue is that there was an oversight
> when developing Combobox for 2.1. The issue is that, whilst it is
> great to support a cell factory in not just the popup listview, but
> also in the button area itself, it is often the case that you want the
> representation to be different. Currently, one cell factory is used
> for both the Button and the ListView.
>
> The jira issue has screenshots demonstrating where this is an issue in
> the HTMLEditor control. Basically, you don't want to render a font
> name in the button area, and you don't want the font size to be shown
> in the button area (as large font sizes will grow the height of the
> button).
>
> So, to resolve this, we need to support having a way to configure a
> separate cell to be shown in the button area and / or to use the
> default cell in the button area (whilst using the custom cell factory
> for the listview). The question comes down to how obvious we want the
> API to be. Some options I can think of include:
>
> 1. Adding a separate ComboBox 'buttonCell' property of type
> ListCell<T>. If this property is set, it is used for the button
> area. If it is not set, we should use the default 'toString' cell
> (rather than using the ComboBox.cellFactory to generate a cell, as
> we do now). If a developer wants the same rendering in the button
> as the ListView, they will now need to create a cell from the cell
> factory they have set in the ComboBox.cellFactory property, and
> manually set that in buttonCell property.
> 2. We can make the API less obvious by setting some property in the
> ListCell used in the button (from the skin). This property can
> then be watched for in the custom cell instances, drawing as
> appropriate. The place to set any property would be in the
> properties map, rather than adding new API to ListCell.
>
> My preference is strongly towards approach 1, but I would be
> interested in hearing your feedback, on these options, as well as
> other options. I would like to fix this for 2.2, but time is short so
> I would appreciate your feedback as soon as possible.
>
> Thanks,
> Jonathan
>
More information about the openjfx-dev
mailing list