Ensure that selection is visible in ListView, TableView, etc.
-------------------------------------------------------------

                 Key: PIVOT-474
                 URL: https://issues.apache.org/jira/browse/PIVOT-474
             Project: Pivot
          Issue Type: Improvement
          Components: wtk, wtk-wtkx
            Reporter: Greg Brown
            Priority: Minor
             Fix For: 1.5.1


In most cases, when a component's selection changes, it should be made visible 
via scrollAreaToVisible(). This is currently done when the user navigates the 
view via keyboard (e.g. up/down arrows) but it does not happen when the user 
changes selection state programmatically. The caller must manually call 
scrollAreaToVisible().

The call to scrollAreaToVisible() can't occur until after the component has 
been laid out. This requires knowledge on the caller's part of how the 
component is implemented internally. While this may be viewed as a simple 
documentation issue, it is compounded by the fact that hidden components are 
not laid out until they are made visible. As a result, some fairly complex code 
is required to ensure that such components properly reflect selection state 
when they are hosted in containers such a CardPane or TabPane, which manage the 
visibility of their children.

One solution might be to eliminate the optimization that prevents a component 
from being laid out when it is not visible. This would make it easier for a 
calling application to know when it is OK to call scrollAreaToVisible(). 
However, this is not ideal since the optimization otherwise seems fairly valid.

Another option is for the skin class to automatically scroll the selection to 
visible when the selection changes. When the component is valid, the scrolling 
could be performed immediately, but would need to be deferred until layout() 
when the component is invalid. This also assumes that we always want to scroll 
the selection to visible every time it changes - this seems reasonable, but are 
there use cases where we might not want to do this?


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to