[API Review] RT-24916 - TableView.scrollTo(TableColumn)
Jonathan Giles
jonathan.giles at oracle.com
Mon Feb 4 12:02:07 PST 2013
This is a fair comment: scrollTo has been designed with a
'fire-and-forget' approach in mind, but I would be loath to add a means
of requesting a self-correcting scrollTo function. Wouldn't a suitable
workaround be to call scrollTo after the image loading has completed in
all cells?
Regarding a lower-level API for exact positioning, please file a jira
tweak request.
Thanks,
-- Jonathan
On 5/02/2013 12:02 a.m., John Hendrikx wrote:
> Hi,
>
> I'm not specifically commenting on this API, but I do would like to
> comment on the usefulness of scrollTo() in general.
>
> I've found that scrollTo() is very unreliable when cells are not
> fixed-height, and are still in flux (ie, images being loaded in the
> background) after the call to scrollTo(). Basically, what is
> happening is:
>
> 1) Create control, populate model
> 2) Call scrollTo() / focus() to restore the previous position the user
> left the control/cursor at
> 3) More images get loaded, cells change height and the View moves
> accordingly but completely ignores the last scrollTo() call and
> currently focused cell and ends up at some random location (with the
> focused item often not even in View).
> 4) User has to take a navigation action to get the focused item
> visible again
>
> I donot know of any acceptable work-arounds, as the problem is mainly
> that the scrollTo() call is a fire-and-forget type action that will be
> completely lost when Cells are still in flux. What it should do is
> remember this position and keep adjusting the View when no other form
> of input overrides the current location (keyboard, mouse scrolling,
> scrollbars).
>
> Furthermore, scrollTo(), although a nice high level API, does not
> allow me to "return" to an exact previous state (where the exact
> scroll position of the control is restored). I'd have to keep the
> control in memory to be able to provide this functionality, instead of
> just creating it when needed and positioning it back to where it was.
> This occurs for example when Views are used for navigation purposes
> where when an item is selected a different set of items is displayed.
> Navigating back restores the previous set of items, but unfortunately
> not the exact position the user came from.
>
> All this is currently leading me into the direction of reskinning the
> TreeView control, with the goal of providing reliable and stable
> behavior when it comes to dealing with cells that are in flux.
>
> --John
>
> On 04/02/2013 09:25, Tom Schindl wrote:
>> hi,
>>
>> We (Jonathan and myself) are requesting an API review to add the
>> following public APIs:
>>
>> New APIS:
>> ---------
>> * ListView:
>> scrollTo(T) : void
>>
>> * TableView:
>> scrollTo(S) : void
>> scrollToColumn(TableColumn<S, ?>) : void
>> scrollToColumnIndex(int) : void
>> setOnScrollToColumn(EventHandler<ScrollToEvent<TableColumn<S, ?>>>):
>> void
>> getOnScrollToColumn() : EventHandler<ScrollToEvent<TableColumn<S,
>> ?>>>
>> onScrollToColumnProperty():
>> ObjectProperty<EventHandler<ScrollToEvent<TableColumn<S, ?>>>>
>>
>> * TreeTableView
>> scrollToColumn(TableColumn<S, ?> column) : void
>> scrollToColumnIndex(int columnIndex) : void
>> setOnScrollToColumn(EventHandler<ScrollToEvent<TreeTableColumn<S, ?>>>
>> value) : void
>> getOnScrollToColumn() :
>> EventHandler<ScrollToEvent<TreeTableColumn<S, ?>>>
>> onScrollToColumnProperty() :
>> ObjectProperty<EventHandler<ScrollToEvent<TreeTableColumn<S, ?>>>>
>>
>> * ScrollToEvent:
>> static <T extends TableColumnBase<?, ?>> scrollToColumn() :
>> EventType<ScrollToEvent<T>>
>>
>> Modified APIS:
>> --------------
>> To align better we'd like to change the ScrollToEvent-API to be
>> consitent and use static accessor methods instead of public static
>> fields:
>> * SCROLL_TO_NODE => scrollToNode() : EventType<ScrollToEvent<Node>>
>> * SCROLL_TO_TOP_INDEX => scrollToTopIndex() :
>> EventType<ScrollToEvent<Integer>>
>>
>>
>> Thanks
>>
>> Jonathan + Tom
>>
>
More information about the openjfx-dev
mailing list