The trouble with Skins

Scott Palmer swpalmer at
Sat Mar 21 18:46:50 UTC 2015

But that's not right.  A *List* is 'a container for an unbounded list of items".  A ListView is a specific type of control that gives you a view to that list *in a specific way*.  It has properties in addition to the list itself.  It *should* have a scroll position because that is a property of that kind of control - even though the skin will implement it. These controls are visible elements and must expose properties that will ultimately be implemented in the skin. They must be Nodes.  Otherwise they will be far too cumbersome to use.
 You may not need to expose where the scroll bars are, or get access to arrow buttons, etc., but you should have access to what items are visible, what the scroll position is, etc.  you should be able to change the scroll position programmatically without knowing the skin.

A page based view is a different kind of control. It can still use a List model, but flipping to a page system from a scrollable list is not something I would expect when changing the look and feel.  I might expect to have the view change from pixel-based scrolling to line based scrolling, or have up/down arrows at one end of the scroll bar instead of each end.


> On Sat, Mar 21, 2015 at 12:01 PM, John Hendrikx <hjohn at> wrote:
> As someone that has been tempted to write a new Control that replaces ListView atleast half a dozen times now because of restrictions or idioms that don't match my needs, I'd disagree.  A ListView doesn't need to scroll at all.  An application that isn't mouse or touchscreen controlled (keyboard or remote controlled for example) has zero need for scrollbars except maybe as information to show the relative size of the view.
> A List of items could be paged only, or they could flip.  I'd like to be able to take a List, and wrap it in a ScrollBarView... or in a PagerView, FlipOverView or CoverFlowView (with 30 new properties to set things like reflections, 3d parameters, distance between items, etc).   It is possible to do this with Skins, but it feels like a hack rather than simply a different Look&Feel in the end.
>  After all, a ListView is a container for an unbounded list of items.  I can think of half a dozen ways of how that can be shown to the user, and the current ListView is just one way to do it.  The promise of Skins here is that I could just change the look & feel, but unfortunately way too many details of the "default" look & feel leak through in the Control itself
> --John. 

More information about the openjfx-dev mailing list